【てすとくどうかいはつ】
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(エクストリームプログラミング)の重要プラクティスの一つ