テスト駆動開発はプログラミングの仕方の一つです。テスト駆動開発では小さな手順とその繰り返しによって「動作するきれいなコード」を目指します。テスト駆動開発における手順は次の通りです
- まずはテストを1つ書く
- すべてのテストを走らせ、新しいテストの失敗を確認する
- 小さな変更を行う
- すべてのテストを走らせ、すべて成功することを確認する
- リファクタリングを行って重複を除去する
KentBeck. テスト駆動開発 (Kindle の位置No.207-210). Kindle 版.
ここであるテストとは自動テストです。テストを書くとは、製品となるコードのある部分を呼び出し期待通りの動作をするか確認するテスト用コードを書くということです。
テストありきのコーディングとそのコーディングをより早く楽に進めようと頑張ることで、テスト駆動開発によって完成されたコードはおおよそテストしやすいものになります。例えば、webページのブラウザテストありきならば重要なボタンやテーブルを確認するためのシンプルなセレクタが備わったページが作成されます。長いテスト時間を避けるために、依存関係の多いモジュール、巻物の様な長大なコードを作ることを避けるようになります。(環境にもよりますが、現在仕事で作っているコードで自動テストを全て走らせるために必要な時間は30分ほど)また、テストありきのコードは少なくともそのテストを通る程度には動作するという安心感を与えてくれます。
テスト駆動開発はテストを用いて頑強なコードを作ることを助けますが、そのテストはプログラムの論理的な欠陥を探すテストが大部分になります。そのため、パフォーマンス、セキュリティ、ユーザビリティといったプログラムの論理的な欠陥に依らない問題の発見のテストが別に必要になります。