TDD(Test-Driven Development)は良い開発手法だが、以下の場合に合致するシステムの開発では使わない事を薦めている。なぜならば破綻する可能性が極めて高いからだ。 設計が不完全で仕様に抜けがあることが明らかな場合 これは自明だろう。インタフェースさえ決まればテストが書けるTDDでも、抜けてしまった仕様はテストとして書けない。TDDは仕様の変更には強いが、だからといって仕様の抜けにも強いとは言えない。 仕様とソースコードのレビュー時間が取れない場合 レビュー時間が取れない? そんなバカなと思うが、そういうシステムを見ることは結構多い。仕様のレビューやすり合わせは結合テストをしながら行うのが当たり前と考えているような現場ではTDDは上手く回転しない。 既にスケジュールが大幅に遅れている場合 スケジュールがタイトな開発の現場では、一度取り戻せない規模の遅れが出てしまうとその後