PHPテクニカルセミナー「設計ツールとしてのテスト駆動開発」に行ってきました

PHPテクニカルセミナー「設計ツールとしてのテスト駆動開発」に行ってきました

1週間ほど前の話になりますが、新宿でPHPに関するセミナー(6月29日(金)、「PHPテクニカルセミナー」開催 - PHPプロ!ニュース)があったので参加いたしました。

6月12日頃、inoueからセミナーの存在を教えてもらい、すぐに参加申込をしました。

セミナーはプレゼンと、poderosa(ターミナルエミュレータ)の画面を見ながら、PHP+ユニットテストツールを使ってモジュールの設計が変化していく様子を見させてもらい、たまに正規表現とかデザインパターン、BNF(バッカス・ナウア記法)の話題が出てきたりで、楽しかったです。

実はセミナーに参加する前に、PHPUnit(このセミナーで使われたツールです)自体は触ったことがありまして、ユニット・テストを使用して、あらゆるレベルで PHP コードをチェックするを見て触りだけは理解できていたつもりでしたが、実践しようと思うと、ドキュメントをあさって覚えるだけではなかなか難しいな、と思いました。

ユニットテストをコンパイラに例えて(ボツネタですが公開)

ユニットテストツールは論理エラーを検出するためのコンパイラみたいなものだぁー!と書こうと思いましたが(実際書いた)、調べてみると、テスト駆動開発の目的は論理エラーを検出することではないようです。

テスト駆動開発の主目的はテストではない

最近、テスト駆動開発入門(ピアソン・エデュケーション)を読みながら、PHP+PHPUnitで書いてみるということを家での勉強でやっています。テスト→仮実装→リファクタリングという作業を繰り返していると、これってテストをやっているんだっけ?と思ってしまいます。

確かにユニットテストのスクリプトは残り、いつでも何度でも自動テストを走らせることが出来ます。しかしテスト駆動開発の中では一旦本実装したメソッドやテストコードを頻繁に書き換えます。

そういうわけで、テストすることが目的なのではなく、ダイナミックに設計するためのツールとしてユニットテストが用いられている、という感覚になっていきます。参考資料を見ていただくとわかりますが、テスト駆動開発の目的はテストではないようです。

参考資料

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ