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

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

最終更新:
💡 「答え合わせを先に作ってから、答えを書く」開発手法

小さな機能ごとに先にテストを書き、失敗を確認してから実装し、成功を保ちながらコードを整理する開発手法。Red→Green→Refactorのサイクルを繰り返す。

📌 このページのポイント
TDD:小さなテストで一周ずつ× Redテストを先に書く狙った失敗を確認✓ Green最小限の実装テストが成功↻ Refactor成功を保ちながらコードを整理整理へ次へ例:add(2, 3) → 5小さなゴールを決めて、繰り返す
色は失敗・成功・整理の役割を表します。一つずつ進め、今までのテストも通ることを確かめます。
ひよこ ひよこ
動くコードがないのに、先にテストを書けるの?
ペンギン先生 ペンギン先生
書けるよ!例えば「add(2, 3)は5を返してほしい」と、使い方と期待する結果を先に書くんだ。作りたい機能の小さなゴールを決めてから、そのゴールを満たすコードを用意するよ。
ひよこ ひよこ
Red→Green→Refactorって具体的には?
ペンギン先生 ペンギン先生
Redは、小さなテストを書いて意図した理由で失敗することを確認する段階。Greenではそのテストを通す最小限の実装を書く。Refactorではテストの成功を保ちながら、実装やテストの重複・分かりにくさを整理するよ。次の小さな機能でまた繰り返すんだ。
ひよこ ひよこ
失敗すれば、どんな理由でもいいの?
ペンギン先生 ペンギン先生
違うよ。期待する機能がまだないから失敗したのかを見るんだ。テストの書き間違いや環境の問題では、狙った確認にならない。最初から通った場合も、すでに機能があるのか、テストが適切なのかを確かめよう。
ひよこ ひよこ
一つ通れば完成?
ペンギン先生 ペンギン先生
今までのテストも通ることを確かめるよ。そして整理する段階を省かないことも大切。テストを先に書くだけで終わると、つぎはぎのコードが残ることがあるんだ。最初にテストしたいケースの一覧を作り、小さいものから進めると考えやすいよ。
ひよこ ひよこ
TDDならバグがなくなるのかな?
ペンギン先生 ペンギン先生
書いたテストが確かめた範囲について、変更の影響を見つけやすくなるよ。でも抜けたケースや、画面全体・外部サービスとのつながりまで自動で保証するわけではない。TDDのサイクルと、ほかに必要な検証を組み合わせよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
TDDって出てきたら「テストを先に書いてから実装する開発スタイル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Test-Driven Development」 = テストに先導される開発
💬 Kent Beckが1990年代後半にXPの一部として発展させ、著書Test-Driven Development: By Exampleでも説明した手法だよ。出版社の初版情報は2002年刊行となっているんだ。

参考資料

← 用語集にもどる