【てすとくどうかいはつ】

TDD(テスト駆動開発) とは?

💡 「答え合わせを先に作ってから、答えを書く」開発手法
📌 このページのポイント
TDD サイクル Red テスト作成 → 失敗 Green 最小限の実装 → 成功 Refactor リファクタリング コード改善 実装して通す 改善する 次のテストへ 繰り返し サイクル
テスト駆動開発のサイクル
ひよこ ひよこ

テストを先に書くって意味わからない。動くコードがないのにテスト書けるの?

ペンギン先生 ペンギン先生

書ける。テストは「こういう入力を渡したらこういう出力が返ってほしい」という期待を書くもの。実装前に「ゴールの姿」を先に定義する、という発想の転換だよ。

ひよこ ひよこ

Red→Green→Refactorって具体的にどういうこと?

ペンギン先生 ペンギン先生

まず「まだ実装してないから当然失敗する(Red)」テストを書く。次に「そのテストだけを通す最小限のコード」を書く(Green)。最後に動くまま汚いコードをきれいに整理する(Refactor)。この3ステップを何度も繰り返す。

ひよこ ひよこ

わざわざ失敗するテストを書く意味は?

ペンギン先生 ペンギン先生

テスト自体が正しく書けているか確認するため。「書いたテストが最初から成功する」なら、そのテストは実は何もチェックしてない可能性が高い。一度失敗させてから通すことで、テストが本当に機能を検証していることを確かめられる。

ひよこ ひよこ

TDDを実践してるチームってどれくらいあるの?

ペンギン先生 ペンギン先生

厳密なTDDを全員が守っているチームは多くない。ただTDDの考え方は広く影響を与えていて「ユニットテストを書く習慣」「テストしやすい設計を意識する」という形で多くの現場に根付いている。「TDDじゃないとダメ」より「テストを書く文化を持つ」ことの方が重要かな。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
TDDって出てきたら「テストを先に書いてから実装する開発スタイル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Test-Driven Development」 = テストに駆動(先導)される開発
💬 Kent Beckが2003年に著書「Test Driven Development by Example」で体系化。XP(エクストリームプログラミング)の重要プラクティスの一つ
← 用語集にもどる