ListPage

2011年3月28日月曜日

TDD TEST DRIVEN DEVELOPMENT メモ

メモ Test-Driven-Development TDD

TDD概要

次の3ステップを繰り返す事

  1. [RED]失敗するテストを書く。テストは自動実行できる事。
  2. [GRENN]テストが成功するように、製品ソースを書く。
  3. [REFACTOR]製品ソースをリファクタリングし、もう一度テストを実行する。

1と2の部分は「テストファースト」と呼ばれます。実際の作業では、1と2を繰り返し
一息ついたところでリファクタリングする。という流れになります。
各ステップを端的にあらわす英単語は、次のような意味です。

  1. [RED]=テストツール NUnitは失敗したテストを赤色で表示する為 ステップ1のゴール
  2. [GREEN]=NUnitは、成功したテストを緑色で表示する為 ステップ2のゴール
  3. [REFACTOR]=文字通りリファクタリング

各ステップでどのような思考を持っていれば良いかは以下だ

  1. [RED]=「どんなものを作るか?」厳密に設計する(あえてエラーが発生するものを)
  2. [GREEN]=「どのように作るか?」テストを通過するコードを書く
  3. [REFACTOR]=未来の為に、コードを綺麗に直しておく

TDD 三原則

テストファーストで製品コードを育む指針

  1. 失敗するユニットテストを成功させる為にしか、プロダクトコードを書いてはならない。
  2. 失敗させるためにしか、ユニットテストを書いてはならない。コンパイルエラーは失敗に数える。
  3. ユニットテストを1つだけ成功させる以上に、プロダクトコードを書いてはならない。

TDDが恩恵を受ける段階やプロジェクトレベルの考察

TDDが恩恵を受ける段階

  • ×開発プロセス全てはカバーしていない
  • ×要求開発から、プログラムレベルの外部設計まではカバーしない
  • ○プログラムの下位レベル(クラス・メソッド)の外部設計からテストまでをカバーする
  • ×プログラムレベルのテスト(通常、GUIがあるためTDDが困難)から
    ユーザーテストまではカバーにならない