「レッド→グリーン→リファクタリング」のサイクルを繰り返す
テスト駆動型開発では詳細設計の前にテストを記述し、自動化したテストを実行して「失敗」を確認した上で、テスト結果に基づいてプログラム仕様を設計し、開発、テスト(成功)と進める。
その上で、テストに成功したコードについて、重複を取り除き、読みやすく書き換える。
その結果、テスト駆動型開発は「レッド→グリーン→リファクタリング」のサイクルを繰り返すことになる。
それぞれ、レッドは「テストが失敗した状態」、グリーンは「テストが成功した状態」、リファクタリングは「重複を取り除き、コードを読みやすく書き換えた状態」である。
テスト自動化で、コード書き換えによる信頼性低下を防止
通常の開発では動くことを確認したコードは書き換えないが、テスト駆動型開発では動くことを確認した上で、リファクタリングのプロセスでコードを見直す。
これは、テスト駆動型開発ではテストを自動化することで、コード書き換えによる信頼性低下が防止されているためである。
そのため、「設計に対する理解と検証が楽になる」「早期にバグが見つけられる」「後工程からの手戻りが減る」「プログラム本体を変更しやすい」などのメリットがある。