テスト駆動開発(てすとくどうかいはつ)情報システム用語事典

TDD / test-driven development / テスト主導型開発

» 2007年02月05日 00時00分 公開
[@IT情報マネジメント編集部,@IT]

 ソフトウェア開発スタイルの1つで、コーディング(あるいは設計)に先立ってテストケースを書き、そのテストをパスするように実装/リファクタリングを行うというイテレーションを繰り返す技法のこと。テストコードと実装コードを小刻みに洗練させながら、ソフトウェアのコードと設計の品質を高めていくことを目的にしている。

 提唱者であるケント・ベック(Kent Beck)の「Test-Driven Development: By Example」(2003年)によれば、大まかな手順は以下のとおり。

  1. 追加したい機能について、テストケースを記述する
  2. テストを実行して、失敗することを確認する(レッド)
  3. 機能を仮実装してテストを行う。テストに成功するまで修正を繰り返す
  4. テストに成功すること(=仕様を満たしている)を確認する(グリーン)
  5. グリーンを保ったまま、リファクタリングを行う
  6. 1.から繰り返し

 最初にテストを書く(テストファースト)ことは、テストケースの形で仕様(どのような機能や振る舞いを持つソフトウェアを開発するのか)を作ることであり、コーティング作業のゴールを先に明確にすることになる。この後、レッド(仕様の確認)→グリーン(動作することの確認)→リファクタリング(コードの整理)のサイクルを循環的に繰り返していく中で、ソフトウェアの設計および実装コードが次第に洗練され、システムが形づくられるという点にテスト駆動開発の特徴がある。

 テスト駆動開発ではいうテストは、開発者自身が行う単体テスト(ユニットテスト)であり、一般にテスト自動化ツール(xUnitと総称される)で行われる。このテストは品質保証のためのものではないため、QAテストは別途行う必要がある。

 テスト駆動開発は、XPのプラクティスの1つに数えられているがXPとは独立して運用できる技法であり、RUPウォーターフォールの中で利用することもできる。

参考文献

▼『テスト駆動開発入門』 ケント・ベック=著/長瀬嘉秀=監訳/永田渉、武田知子=訳/ピアソン・エデュケーション/2003年9月(『Test-Driven Development: By Example』の邦訳版)


Copyright © ITmedia, Inc. All Rights Reserved.