ウォーターフォールでテストファーストを実現する法
JUnitはXPに於けるテストファーストプラクティスのツールである。
もちろんXP以外でも採用されるがそれにしてもアジャイルである。このツールはテストファースト、則ちテストコードを書いてからプログラミングを始めるという手法の為にある。
だが多くの現場はウォーターフォールである。ウォーターフォールはテストファーストではない。こうした現場はJUnitを使うには適さないのか。
ウォーターフォールでJUnitを採用している現場はあるにはある。だがその様な現場ではJUnitを回帰テストのために使う。これは本来の使い方ではない。だが間違った使い方をするのは技術者の所為ではない。頭の堅い管理者がテストファーストを理解して居ない所為である。
ではウォーターフォールではテストファーストを導入するのを諦めるしかないのか。例えば次の様にしてはどうか。
1.設計者Aが設計仕様書を作成
4.プログラマAが設計仕様書とソースコードを元にテスト仕様書を作成
5.プログラマAがテストを実施
然しこれではテストコードがソースコードに引き摺られてしまう。私なら次の様にする。
2.設計者Aが設計仕様書をプログラマAに、テスト仕様書をプログラマBに渡す
5.設計者AがプログラマAとプログラマBからソースコードとテストコードを受け取る
6.設計者Aがテストコードでソースコードをテスト
これならテストコードがソースコードに引き摺られない。重要なのはテストコードがソースコードに影響されないことである。
実際にやって見ると簡単ではないだろう。それでも何度かトライ&エラーを繰り返しノウハウをGETした暁には品質は格段と上がるに違いない。