21. TDD と黄金の回転
テストが通るままで
Reafactring コードをキレイにす
る
新しいテストを書く
Red 落ちているテストを通す Green
22. Robert C. Martin 曰く (TDD 三原
則)
• 失敗する単体テストのコードを
書く前に、製品のコードを書い
てはならない
• コンパイルが通り、適切に失敗
する単体テストができるまでは
、次の単体テストを書いてはな
らない
• 現在失敗している単体テストが
通るまで、次の製品コードを書
いてはならない
23. テストファーストの重要性
• テストを書くには何が必要?
o 入力(引数)
o 出力(戻り値、画面出力)
o クラスやメソッドの役割、パターン分け
• これって設計じゃね?
o 作りたいものが明確になっていないと何も作れない
o 先にテストを書くことであやふやな仕様が浮き彫り
になる
• Red になるテストが先にあること
で、 Green になった時に自分が考えた通り
実装できたことが実感できる
24. TDD をする一般的な理由
• 健康のため
o 変化に対応できるのは健康体のコード
o 変化に対応できるのは健康体のチーム
• 素早くフィードバックを得るため
o 自分が書いたコードが動くかどうかをすぐに確認できる
• 不安をテストにすることで精神的な安定を得る
• 工数は 2 割増しの代わりにバグが半分になるという
データも出ている
o t_wada さんのスライド参照
http://www.slideshare.net/t_wada/tddbc-fukuoka-day1/64
27. 僕が TDD をする理由
• 自分が楽をするため
o ブラウザリロードするよりコマンド叩く方が楽
o テストしやすいコードは自然に DRY とか SRP もできてくる
o テストがあると恐れずにリファクタリングができる
• とりあえず動かせる
o コードは動かしてなんぼ
• 結局のところ先に苦労するか後に苦労するかの違い
o ただ、バグは早い段階で見つけて修正した方が楽
o 開発中<結合テスト中< QA <リリース後
28. 僕が TDD をする理由
• テストは何かあった時の命綱
o 何かあった時に命綱を編んでいては手遅れ
• 最初にテストを書くのは確かにきつい
o TDD はスキルなので必ず身につく
o 2 〜 3 ヶ月もすれば慣れる
o 量は質に転嫁する
38. TDD をやりたくなったら
• TDD BootCamp
o 終日ワークショップ(だいたい講演 + ペアプロ)
o #tddbc を定点観測しておく
• TDDBC wiki
o http://devtesting.jp/tddbc/
• メーリングリスト
o http://groups.google.com/group/tddbc
• 手っ取り早く調べるなら AZusaar! がいいよ(ステマ)
o http://azusaar.appspot.com/?q=tdd