テスト駆動開発

2023年12月11日

テスト駆動開発 (TDD) は、テストを記述することでソフトウェア開発をガイドするソフトウェア構築手法です。Kent Beck が 1990 年代後半にエクストリームプログラミングの一環として開発しました。本質的には、3 つの簡単なステップを繰り返します。

  • 追加する機能の次の部分に対するテストを書く。
  • テストが通過するまで機能コードを書く。
  • 新規コードと既存コードの両方に対してリファクタリングし、構造をよくする。

「赤 - 緑 - リファクタリング」と要約されることが多いこれらの 3 つのステップがプロセスのコアですが、最初にテストケースのリストを作成するという重要な初期ステップもあります。そのうちのテストを 1 つ選択し、赤-緑-リファクタリングを適用し、完了したら次のテストを選択します。テストを適切な順番で並べることはスキルです。デザインの重要なポイントに素早く到達できるテストを選択する必要があります。このプロセス中にテストを思い浮かべたら、リストに追加する必要があります。

XPE2 がテストファーストプログラミングと呼ぶテストを最初に記述すると、主に 2 つの利点があります。最も明白なのは、テストに合格させるために機能コードを書くしかないため、SelfTestingCode を取得する方法であることです。 2 つ目の利点は、最初にテストについて考えることで、コードに対するインターフェイスについて最初に考えることを余儀なくされることです。インターフェイスとクラスの使用方法に集中することで、インターフェイスと実装を分離することができます。これは、多くのプログラマが苦労する優れた設計の重要な要素です。

私がよく聞く TDD を台無しにする最も一般的な方法は、3 番目のステップを怠ることです。コードをきれいに保つためにリファクタリングすることは、プロセスの重要な部分です。さもないと、単に散らかったコードフラグメントの集まりが残るだけです。(少なくともこれらにはテストがあるので、ほとんどの設計の失敗よりも苦痛の少ない結果となります。)

追加の資料

Kent の TDD の標準的な方法の説明 は、重要なオンラインの概要です。

詳細については、Kent Beck の著書 Test-Driven Development をご覧ください。

James Shore の The Art of Agile Development の関連する章は、効果的なアジャイル開発の他の部分にも関連付けられている、もう 1 つの健全な説明です。James は Let's Play TDD という名前のスクリーンキャストシリーズも書きました。

改変

このページの最初の投稿は 2005 年 3 月 5 日でした。Kent の標準的な投稿に触発されて、2023 年 12 月 11 日に更新しました。