# 50分でわかるテスト駆動開発 ## テスト駆動開発とは 「動作するきれいなコード」こそが、テスト駆動開発のゴール。 動作するきれいなコードはあらゆる意味で価値がある。 ### 動作するきれいなコードへ きれいにしてから動作させるのか、動作できるようにしてからきれいにするのか。 きれいにしてから動作させる:動作させる際に理解することが多く、設計が成り立たない。 動作できるようにしてからきれいにする:動くのだからきれいにしなくても良いのでは。壊れたら怖い。 →TDDは動作できるようにしてからきれいにするまでの不安を解消する。 ### TDDのサイクル 1. 失敗するテストを書く。 2. テストを成功させる。 3. テストを成功させたままリファクタリングを行う。 ### リファクタリングの立ち位置 リファクタリングは、タスク化してしまうと実行されにくくなる。 そこでTDDは小さなリファクタリングを組み込んでいる。 ### 異なる大きさのサイクルを回して開発する * TDDのサイクル * 受入テスト * 頻繁なリリース・デモ 下に行くほど大きいサイクルとなる。 ### デモ 1. やりたいタスクを文章化する。 2. 文章を要素に分けて、チェックリスト化する。順番は最も簡単なものが一番上になるようにする。 3. テストケースを作成する。テストコード(関数等)は文字列そのままで書くのが望ましい。 4. テストケースを実行するには具体的に何が必要かについて考える。☆この時点でメソッドやクラスやオブジェクトは、普通の言葉で書くと意図が伝わりやすい! 5. コンパイルエラーを取り除き、想定通りに失敗するテストを書く。(レッドフェーズ) 6. テストを成功させるように「仮実装」して、テスト側の正しい振る舞いをテストする。(グリーンフェーズ) 7. 必要な分だけ複数のテストを作る。(1テスト1アサーションで!) 8. 実行して、テストのテストを通らせる。 9. 実装側を変更して、テストが通るかを確かめる。 ###### tags: `アジャイルプラクティス`