Agile Mind for XP《24》テストファースト開発(Test-First Development)
|記事一覧|
Smalltalk use: better "Agile Mind for XP"
《24》テストファースト開発 (Test-First Development)
■ 概要
この連載では、XP によるオブジェクト指向プログラミングへの扉を開きます。
テストファースト開発(Test-First Development)
ペアが選択するタスクは、テストケース(顧客が望む最小価値を)単位にします。目標は、テストケースを満たすコードを作成することです。完了したタスクは、すぐに「リリース」して、他のペアに対する「フィードバック」を提供します。
テストケースは、コードの動作を検証するのではなく、顧客の要求が実現可能であることを実証します(契約に基づくプログラミング)。ここで言う実現可能とは、技術的な問題の克服だけではなく、コスト(費用/時間)の妥当性をも示唆しています。仮に、テストに合格して技術的な問題を解消しても、コストに合わないテストケースは、顧客に 0% の価値しか提供できません。
《付記》導入時には「単体テストを課して」雰囲気に慣れるのが良いでしょう。
《余録》付図に示すように、すべてのペアは最新リリースを抱えた状態から開発するので、どのように些細なコードの断片でも、稼働するシステムと同じ(統合開発)環境で実行/評価されます。開発環境/実行環境が異なる場合には、単体テスト/結合テスト(二重チェック)が必須になります。そのため、Smalltalk と比べて、二度手間のコスト(費用/時間)を加味する必要があります。むしろ深刻なのは、結合テストまで問題が露呈しないことです。とくに、スケジュールの後半に結合テストを予定していると、事態はより深刻になりがちです。テストケースの作成には「多くの時間を割くだけの価値がある」ことを、顧客が納得することに意義があります。□