ソフトウェア開発スタイルの1つで、コーディング(あるいは設計)に先立ってテストケースを書き、そのテストをパスするように実装/リファクタリングを行うというイテレーションを繰り返す技法のこと。テストコードと実装コードを小刻みに洗練させながら、ソフトウェアのコードと設計の品質を高めていくことを目的にしている。
提唱者であるケント・ベック(Kent Beck)の「Test-Driven Development: By Example」(2003年)によれば、大まかな手順は以下のとおり。
- 追加したい機能について、テストケースを記述する
- テストを実行して、失敗することを確認する(レッド)
- 機能を仮実装してテストを行う。テストに成功するまで修正を繰り返す
- テストに成功すること(=仕様を満たしている)を確認する(グリーン)
- グリーンを保ったまま、リファクタリングを行う
- 1.から繰り返し
最初にテストを書く(テストファースト)ことは、テストケースの形で仕様(どのような機能や振る舞いを持つソフトウェアを開発するのか)を作ることであり、コーティング作業のゴールを先に明確にすることになる。この後、レッド(仕様の確認)→グリーン(動作することの確認)→リファクタリング(コードの整理)のサイクルを循環的に繰り返していく中で、ソフトウェアの設計および実装コードが次第に洗練され、システムが形づくられるという点にテスト駆動開発の特徴がある。
テスト駆動開発ではいうテストは、開発者自身が行う単体テスト(ユニットテスト)であり、一般にテスト自動化ツール(xUnitと総称される)で行われる。このテストは品質保証のためのものではないため、QAテストは別途行う必要がある。
テスト駆動開発は、XPのプラクティスの1つに数えられているがXPとは独立して運用できる技法であり、RUPやウォーターフォールの中で利用することもできる。
参考文献
▼『テスト駆動開発入門』 ケント・ベック=著/長瀬嘉秀=監訳/永田渉、武田知子=訳/ピアソン・エデュケーション/2003年9月(『Test-Driven Development: By Example』の邦訳版)
関連記事
- Opinion:長瀬嘉秀のソフトウェア開発最新事情(4) ? システム設計、実装、テストの手順(@IT情報マネジメント)
- 連載:快適なXPドライビングのすすめ(4) ? EclipseとJUnitによるテスティング(@IT情報マネジメント)
- 特集:「テスト駆動開発」はプログラマのストレスを軽減するか?(@IT Insider.NETフォーラム)
- 「ITアーキテクト塾」レポート(2) ? テストファーストでユーザーも開発者も幸せに(@IT情報マネジメント)
- テスト駆動開発で行こう!(@IT情報マネジメント)
- NUnit入門 Test Firstのススメ[NUnit 2.0対応版](@IT Insider.NETフォーラム)
- 図解言語入門:図解の技術を覚えよう(3) ? マトリックスの課題をレビューする(@IT自分戦略研究所)
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.