テスト駆動で幸せな開発を

今日はコードを書いたり、技術資料を読み漁ったりするのではなく、仕事としての開発について必要そうなことの情報収集。
その中の一つが、テスト駆動開発という開発手法。テストドリブン開発とか、Test Driven Developmentとか表記されたりもする。
簡単に言うと、テストを先に書いてしまってから、プログラムの実装をするというもの。最初は「は?」て感じでしたが、調べていくうちになかなか面白いものだということが分かってきた。テスト駆動開発は、クラスとかメソッド単位でテストをする、いわゆるユニットテストが主みたい。
足し算を行う関数plusを作りたいときは、まず先に「plusという関数は1と2を引数で渡したら、3を戻す」というテストを定義して、それからplusを実装する。で、実装をするたびにテストを実行して、レッド(失敗)の状態から、グリーン(成功)の段階へ移行させるのが第一段階。
グリーンに移行したら、次にテストする場合を増やす。例えば「plusという関数は3と4を引数で渡したら、7を返す」など。さっきの例では、常にplusが3を返すとしてもグリーンに移行できるけど、それは足し算関数としては役に立たないから、そのような場合をはじくために新しいテスト用件を増やす。そしたら、そのテスト用件も同時に満たすようにplusの実装を書き直す。
これの繰り返しで、もうグリーンからレッドになるようなテストを思いつかなくなったら、その関数はテストを無事にパスしたことになるのです。
大雑把にはこんな感じ。今度の開発はPHPなので、PHPUnitというテスト自動化ツールを使って試してみることにします。