日記:CakePHP1.1にてユニットテスト実装

情熱プログラマーで刺激を受けた通りに、「昨日よりよく」を実践するために、CakePHP1.1のソースにユニットテストの自動化の実装を開始しました。とりあえず今日は3つのmodelに対して実装終了。

ユニットテスト自動化ができれば、ソースを改変した結果、バグが発生したときにプログラムがそれを教えてくれるので、プログラマとしては非常に便利な機能なのです。…なのですが、ユニットテスト自動化するためのプログラムを書く工数が必要になるので、面倒だったりしてなかなか書かないのです。特に仕事では。ふぅー…。

前々から仕事でもテスト駆動開発やってみましょうと言ってたのですが、まぁわかっていても動けない。一人でやったとしても、自分の箇所のみしか自動化が定義されていないから、システム全体の安定性を保証できない。与えられている工数も少ないし。なにかと難しいもんです…。テスト工数とか、真っ先に削られますからね…。

全部自動化するっていうのは工数的にも現実的ではないので、CakePHPで言えば、まず必ずやっておきたいのが、modelのテスト自動化。ここだけでもできていれば、ずいぶんバグも減るんではないかと思います。なので、現在はそこに着手しています。次に、componentでしょうか。パーツ単位で区切られるものに関しては有効ですから。helperとかも、できればいいでしょう。

テスト自動化も選択と集中で、まぁもちろん全部できたほうがよいでしょうが、パーツ単位での責任の分化を行って、アプリの成長を阻害しないシステムを作り上げていくことが、アプリと開発者とチームの成長に繋がると信じてます。それが顧客のためにもなる。

機能追加を行った時点でシステムの信頼度は下がるから、全体の再テストする必要があるけれど、その再テストをするためのコストのことをほとんど考えてない。プログラムは一度書いてしまえば(基本的に)文句も言わず短時間でずっと働いてくれる。人は、同じ事を繰り返すとミスも発生しやすくなるし、集中力が途切れるし、つまらない仕事はしたくないから、モチベーションも下がる。そういうコストのことを考えたら、ユニットテスト自動化は絶対にプラスに働く!

そう思いながら、今までちゃんとできていなかったので、頑張って実現していこうと思います。テスト駆動は難しいかもしれないけど、チケット駆動からテスト自動化の流れを入れられればいいかなと。そのほうが現実的な気がする。


タグ 日記 | パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です