« TDD本は凄いぞ! | トップページ | アジャイルソフトウェア開発の奥義 »

2004/09/27

TDDに必要な技術

 TDDを実践するための最低限必要な技術は「モックオブジェクト」「カバレッジ」の2つであると考えるが、意外とハードルが高いのではないか?
 その理由を考えてみる。

【1】モックオブジェクトが使えるか?
 Webシステムでは、JUnitを純粋に適用したテストプログラムは殆どありえない。例えば、Servlet、EJB、DB接続層等では、どうしてもスタブが必要になる。但し、Servletから業務ロジックを委譲する設計になっていれば、ビジネスロジック層は純粋なJavaのクラスゆえ、ビジネスロジック層のみJUnitがそのまま使える。
 だから、モックオブジェクトを使う必然性が出てくるが、スタブを切り替える設計になっていないと、テストプログラムは書きにくい。プログラムをコンポーネントで組み合わせる発想の元に、モデリングや設計を制御することが必要だが、結局はプロジェクトリーダーの手腕にかかっている。
#DIコンテナを使っていれば、すごく簡単になるだろう。

【2】カバレッジを行っているか?
 単体テストの進捗を数値化できるので、顧客にもアピールしやすい利点がある。(これは重要!)
 しかし、テストケースを単体テストレベルまで細かく落とせるか? テストプログラムのJavaDocがテスト仕様書になる等の仕組み作りが必要だが、その問題解決はプロジェクトリーダーの手腕に依存する。
 
 「テストプログラムがあるから単体テストはクリアしている」というレベルを保つには、少なくとも、モックオブジェクトを使える設計と、テストケースが完全に網羅されていることを保障するカバレッジの2要素が必須ではなかろうか?
 しかも、上記2要素を適用するには、プロジェクトリーダーの切り盛りに依存している所に難しさがあるのではなかろうか?

|

« TDD本は凄いぞ! | トップページ | アジャイルソフトウェア開発の奥義 »

日記・コラム・つぶやき」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: TDDに必要な技術:

« TDD本は凄いぞ! | トップページ | アジャイルソフトウェア開発の奥義 »