テスト駆動開発
http://martinfowler.com/bliki/TestDrivenDevelopment.html
テスト駆動開発(TDD)はテストを通じて開発プロセスを駆動する設計技法です。 基本的に、以下の3つのシンプルなステップを繰り返して行います。
- これから追加したい機能についてテストを書く
- そのテストをパスするまで機能コードを書く
- よりよい構造になるように、新旧コードをリファクタリングする
この3つのステップを1サイクルとして、繰り返し行います。 テストをひとつずつ書き、システムの機能を作り上げていくのです。 まず先にテストを書くことには、2つの利点があります(ケント・ベックの白本ではこれを「テストファーストプログラミング」と呼んでいます)。 まず、当然ですが、自己テスト用コードを書くことができるという点です。 テストをパスさせながら機能コードを書いていけばよいからです。 2番目の利点は、テストファーストだと、コードのインターフェイスを先に考えなければならなくなるという点です。 インターフェイスやクラスをどのように使うかに焦点をあてることで、 インターフェイスと実装との分離がしやすくなります。
TDDが失敗するのは、3番目のステップを無視しているからです。 コードをリファクタリングしてキレイに保つことは、このプロセスのキーとなる部分です。 さもないと、コードの断片が散らかった状態になってしまうでしょう。 (少なくともテストコードは付いているでしょうから、その他の設計の失敗よりは被害は少ないでしょうが)