SlideShare a Scribd company logo
Test 
Yourself テストを書くと何がどう変わるか 
和田 卓人 (a.k.a id:t-wada or @t_wada) 
Sep 5, 2014 @JaSST Hokkaido ’14
和田 卓人 
id: t-wada 
@t_wada 
github: twada
Test Yourself - テストを書くと何がどう変わるか
各所で猛威を振るう t_wada.png
よろしく 
おねがい 
します
Q. TDDは、まだ良くわから 
ないです 
Q. 具体的な方法が分からない
TDD 
とは何か
Test Yourself - テストを書くと何がどう変わるか
「動作するきれいなコード」、ロン・ジェフ 
リーズのこの簡潔な言葉は、TDD(テスト駆 
動開発)の目標である。動作するきれいなコー 
ドは、あらゆる理由で価値がある。 
─ Kent Beck
動作する、きれいなコードへ 
きれい 
汚い 
二つの道がある 
(すぐには)動かない動作する
TDDのサイクル 
1. 次の目標を考える 
2. その目標を示すテストを書く 
3. そのテストを実行して失敗させる(Red) 
4. 目的のコードを書く 
5. 2で書いたテストを成功させる(Green) 
6. テストが通るままでリファクタリングを行 
う(Refactor) 
7. 1~6を繰り返す
Refactoring TDDと黄金の回転 
きれい 
汚い 
Red 
Green 
(すぐには)動かない動作する
Test Yourself - テストを書くと何がどう変わるか
TDD や Developer Testing に 
ソフトウェア工学的なメリットはいろい 
ろあるけれど、最大の理由は工学的なも 
のではない。最大の理由は心理的なもの 
•即座にフィードバックを得るため 
•書いたコードに自信を持つため 
•これから書くコードに自信を持つため
デモ
http://www.planetgeek.ch/wp-content/uploads/2012/06/ATDD-cycle.png
Why: 
顧客は何故それを欲 
しているのか 
What: 
何を作れば 
良いだろうか 
How: 
どう作れば 
良いだろうか 
頻繁なリリースとデモ 
受け入れテスト 
ユニットテスト 
永和システムマネジメント家永氏の資料より
https://www.facebook.com/notes/kent-beck/when-tdd-doesnt-matter/797644973601702
TDDの 
導入効果
TDD導入効果(MS, IBM) 
© Towersquest, Inc. 2010. all rights reserved. 
20 
IBM Driver MS 
Windows 
MS MSN MS Visual 
Studio 
ソースコードサイズ (KLOC) 
テストコードサイズ (KLOC) 
TDDを採用していない類似プロ 
ジェクトでの欠陥密度を1とし 
たときの欠陥密度 
TDD採用により増加したコード 
実装時間(管理者の見積による) 
41.0 6.0 26.0 155.2 
28.5 4.0 23.2 60.3 
0.61 0.38 0.24 0.09 
15~20% 25~35% 15% 20~25% 
N. Nagappan, M. E. Maximilien, T. Bhat and L. Williams: Realizing quality improvement through test driven development: results and 
experiences of four industrial teams, Journal of Empirical Software Engineering, vol. 13, pp. 289-302 (2008)
TDD導入効果(エリクソン他) 
• TDDを実施した場合に報告されている知見 
‣ 機能テストでの不具合検出数が18%削減された 
‣ コーディング(実装)の時間が16%増えた 
‣ テストのカバレッジが大きくなった 
• 被験者を対象としたアンケート 
‣ 96%の被験者がデバッグの工数を減らすと感じた 
‣ 88%の被験者が要求が洗練されると感じた 
‣ 92%の被験者がコードの品質を上げると感じた 
‣ 50%の被験者が開発工数を減らすと感じた 
Boby George, a and Laurie Williams: A structured experiment of test-driven development, Journal of Information and Software Technology Vol. 46, No. 5, p. 337-342(2004) 
© Towersquest, Inc. 2010. all rights reserved. 
21
Q. 開発者自身がテストを書く 
ようになったら 
テストエンジニアは不要だと 
思いますか?
TDDの 
T について 
考える
「動作するきれいなコード」、ロン・ジェフ 
リーズのこの簡潔な言葉は、TDD(テスト駆 
動開発)の目標である。動作するきれいなコー 
ドは、あらゆる理由で価値がある。 
─ Kent Beck
“テストとは,エラーをみつ 
けるつもりでプログラムを 
実行する過程である”
http://www.developsense.com/blog/2009/08/testing-vs-checking/
TDD は 
Checking 
でしかない
https://speakerdeck.com/everzet/bdd-in-symfony2
http://lisacrispin.com/2011/11/08/using-the-agile-testing-quadrants/
Q. テストスクリプトの作成コストと維持。ユ 
ニットテストケースの運用維持が、確実には 
出来ていない 
Q. テストコード自体はプロダクションコード 
よりも基準が緩いため、難しかったり煩雑な 
テストコードが散見し、テストコードのメン 
テナンス性が悪くなっている
(Checking の文脈での) 
良いテストは 
どんなものか
“F.I.R.S.T” 
=> クリーンテストの5つの規則
Fast 
Independent 
Repeatable 
Self-Validating 
Timely
“A-TRIP” 
=> 良質なテストの特性
Automated 
Thorough 
Repeatable 
Independent 
Professional
F.I.R.S.T 
A-TRIP 
共通するもの
Fast 
Independent 
Repeatable 
Self-Validating 
Timely 
Automated 
Thorough 
Repeatable 
Independent 
Professional
xUnit Test Patterns より 
テストのメンテナンスコスト 
理想 
現実
Fast 
Independent 
Repeatable 
Self-Validating 
Timely 
Automated 
Thorough 
Repeatable 
Independent 
Professional
テストコードの 
リファクタリング 
デモ
Q. テスト駆動開発について、テスト専門の人 
にアドバイスを貰ったり、質問したりするこ 
とはあるのでしょうか?テスト専門の立場か 
ら、開発へどういった貢献が出来るか模索中 
です。 
Q. 製品コードの作成者とは別にテストコード 
の作成者を用意して、テストコードの作成を 
進めたいと考えています。留意すべきことが 
あれば教えてください。
テストは品質を上げない 
体重計に乗るだけでは 
痩せないのと同じ 
https://www.flickr.com/photos/tompagenet/2271383143
“テストでは品質は上がらない 
ですよ。テストはあくまでも品 
質をあげるきっかけ。品質をあ 
げるのはプログラミングです。 
これは大昔からそう。”
自動テストの良いところは、 
改善を我慢しなくても良く 
なったこと
ソフトウェアの質は 
自分たちで上げる 
自分たちでしか上げられない 
でも、開発者にはテストの 
知識が不足しがち
だから、いっしょにやりましょう 
http://www.flickr.com/photos/recompile_net/3298985098/
TDDはスキルです 
•ひとりから始められる 
•テストやTDDはスキルです。つまり… 
•才能ではなく、習得可能です 
•量は質に転化します 
•写経しましょう!!
gihyo.jpの連載 
『[動画で解説]和田卓人の“テスト駆動開発”講座』 
http://gihyo.jp/dev/serial/01/tdd/ 
全20回すべて動画付き解説 
ニコニコ動画でも見れます 
WEB+DB過去記事の特設サイトと動画も
ご清聴ありがとうございました

More Related Content

Test Yourself - テストを書くと何がどう変わるか