TDDに必要な技術
TDDを実践するための最低限必要な技術は「モックオブジェクト」「カバレッジ」の2つであると考えるが、意外とハードルが高いのではないか?
その理由を考えてみる。
【1】モックオブジェクトが使えるか?
Webシステムでは、JUnitを純粋に適用したテストプログラムは殆どありえない。例えば、Servlet、EJB、DB接続層等では、どうしてもスタブが必要になる。但し、Servletから業務ロジックを委譲する設計になっていれば、ビジネスロジック層は純粋なJavaのクラスゆえ、ビジネスロジック層のみJUnitがそのまま使える。
だから、モックオブジェクトを使う必然性が出てくるが、スタブを切り替える設計になっていないと、テストプログラムは書きにくい。プログラムをコンポーネントで組み合わせる発想の元に、モデリングや設計を制御することが必要だが、結局はプロジェクトリーダーの手腕にかかっている。
#DIコンテナを使っていれば、すごく簡単になるだろう。
【2】カバレッジを行っているか?
単体テストの進捗を数値化できるので、顧客にもアピールしやすい利点がある。(これは重要!)
しかし、テストケースを単体テストレベルまで細かく落とせるか? テストプログラムのJavaDocがテスト仕様書になる等の仕組み作りが必要だが、その問題解決はプロジェクトリーダーの手腕に依存する。
「テストプログラムがあるから単体テストはクリアしている」というレベルを保つには、少なくとも、モックオブジェクトを使える設計と、テストケースが完全に網羅されていることを保障するカバレッジの2要素が必須ではなかろうか?
しかも、上記2要素を適用するには、プロジェクトリーダーの切り盛りに依存している所に難しさがあるのではなかろうか?
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- TwitterやFacebookは人力キュレーションツールとして使う(2022.10.02)
- 「現代病「集中できない」を知力に変える 読む力 最新スキル大全」の感想(2022.08.28)
- 人類は海辺から生まれた~水生類人猿説が面白い(2022.08.09)
- 戦前の日本人の気質はまだ成熟していない青年期と同じだった(2022.06.14)
- 物理学を攻略するためのマップ(2022.04.18)
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
コメント