テスト駆動開発
テスト駆動開発 (てすとくどうかいはつ、英: test-driven development; TDD) とは、プログラム開発手法の一種で、プログラムに必要な各機能について、最初にテストを書き(これをテストファーストと言う)、そのテストが動作する必要最低限な実装をとりあえず行なった後、コードを洗練させる、という短い工程を繰り返すスタイルである。多くのアジャイルソフトウェア開発手法、例えばエクストリーム・プログラミングにおいて強く推奨されている。近年はビヘイビア駆動開発へと発展を遂げている。
"Clean code that works." がテスト駆動開発の目標である。しかし、最初からきれい (clean) かつ動く (work) コードを書くのは困難である。そこで、テスト駆動開発では、まず動く(テストに通る)コードを作成し、次にこれをリファクタリングすることできれいなコードに整形する。
コードがテストに通ることにより、手戻りが発生しないことを確認できる。逆に、Fake ItやTriangulateなど、実装するものの見当がつかなくとも、頭で考え込むのではなく、コードを書くことで具体化していきながら、開発を進めることができる(そして、それは実際には考える必要のないものであることが後で分かるかもしれない)。テスト駆動開発は着実に開発を進めることができる開発手法である。
設計に関する決定のフィードバックとして、それを具体的にテストコードに記述することで、その設計の良し悪しが判断できる。