メモ Test-Driven-Development TDD
TDD概要
次の3ステップを繰り返す事
- [RED]失敗するテストを書く。テストは自動実行できる事。
- [GRENN]テストが成功するように、製品ソースを書く。
- [REFACTOR]製品ソースをリファクタリングし、もう一度テストを実行する。
1と2の部分は「テストファースト」と呼ばれます。実際の作業では、1と2を繰り返し
一息ついたところでリファクタリングする。という流れになります。
各ステップを端的にあらわす英単語は、次のような意味です。
- [RED]=テストツール NUnitは失敗したテストを赤色で表示する為 ステップ1のゴール
- [GREEN]=NUnitは、成功したテストを緑色で表示する為 ステップ2のゴール
- [REFACTOR]=文字通りリファクタリング
各ステップでどのような思考を持っていれば良いかは以下だ
- [RED]=「どんなものを作るか?」厳密に設計する(あえてエラーが発生するものを)
- [GREEN]=「どのように作るか?」テストを通過するコードを書く
- [REFACTOR]=未来の為に、コードを綺麗に直しておく
TDD 三原則
テストファーストで製品コードを育む指針
- 失敗するユニットテストを成功させる為にしか、プロダクトコードを書いてはならない。
- 失敗させるためにしか、ユニットテストを書いてはならない。コンパイルエラーは失敗に数える。
- ユニットテストを1つだけ成功させる以上に、プロダクトコードを書いてはならない。
TDDが恩恵を受ける段階やプロジェクトレベルの考察
TDDが恩恵を受ける段階
- ×開発プロセス全てはカバーしていない
- ×要求開発から、プログラムレベルの外部設計まではカバーしない
- ○プログラムの下位レベル(クラス・メソッド)の外部設計からテストまでをカバーする
- ×プログラムレベルのテスト(通常、GUIがあるためTDDが困難)から
ユーザーテストまではカバーにならない