TDD(テスト駆動開発)とは?
Test-Driven Developmentの略。テストコードを先に書いてから実装するサイクル(Red-Green-Refactor)を繰り返す開発手法
詳細解説
TDD(Test-Driven Development: テスト駆動開発)は、実装コードを書く前にテストコードを先に記述し、テストが失敗する状態(Red)→テストを通過する最小限の実装(Green)→コードの整理・改善(Refactor)のサイクルを小さく高速に繰り返すソフトウェア開発手法です。Kent Beckが提唱し、eXtreme Programming(XP)の中核プラクティスの一つです。TDDのサイクル(Red-Green-Refactor)は次の流れです。Red(失敗するテストを書く):まだ実装していない機能に対して期待する入力・出力を定義したテストコードを書く。実行するとテストは当然失敗(Red)する。Green(最小実装でテストを通す):テストが通ることだけを目標に、最小限のコードを実装する。完璧さは求めない。Refactor(リファクタリング):テストを通した状態を維持しながら、コードの重複除去・可読性向上・設計改善を行う。この3ステップを数分〜十数分の短いサイクルで繰り返します。TDDのメリットはテストが仕様書になる(コードの意図が明確)・回帰テストスイートが自然に蓄積される・設計が改善される(テストしやすいコードは自然と疎結合になる)・デバッグ時間の削減です。BDD(Behavior-Driven Development: 振る舞い駆動開発)はTDDの発展形で、テストをビジネス言語(Given-When-Then形式)で記述し、エンジニア・テスター・ビジネスサイドが共通理解できるようにした手法です。ITパスポートでは「TDDの概念」「Red-Green-Refactorのサイクル」「テストファーストの意義」が出題されます。
ITパスポートでの出題ポイント
- 1テストコードを先に書いてからプロダクトコードを実装するテストファースト
- 2Red(失敗)→Green(最小実装)→Refactor(改善)の繰り返し
- 3回帰テストスイートが自然に蓄積されデグレード検出が容易に
- 4テストしやすいコードは自然と疎結合になる設計改善効果がある