ウォーターフォールでテストファーストを実現する法

JUnitはXPに於けるテストファーストプラクティスのツールである。

もちろんXP以外でも採用されるがそれにしてもアジャイルである。このツールはテストファースト、則ちテストコードを書いてからプログラミングを始めるという手法の為にある。

だが多くの現場はウォーターフォールである。ウォーターフォールテストファーストではない。こうした現場はJUnitを使うには適さないのか。

ウォーターフォールJUnitを採用している現場はあるにはある。だがその様な現場ではJUnit回帰テストのために使う。これは本来の使い方ではない。だが間違った使い方をするのは技術者の所為ではない。頭の堅い管理者がテストファーストを理解して居ない所為である。

ではウォーターフォールではテストファーストを導入するのを諦めるしかないのか。例えば次の様にしてはどうか。


1.設計者Aが設計仕様書を作成

2.設計者Aが設計仕様書プログラマに渡す

3.プログラマAが設計仕様書を元にソースコードを作成

4.プログラマAが設計仕様書ソースコードを元にテスト仕様書を作成

5.プログラマAがテストを実施


然しこれではテストコードがソースコードに引き摺られてしまう。私なら次の様にする。


1.設計者Aが設計仕様書とテスト仕様書を作成

2.設計者Aが設計仕様書プログラマAに、テスト仕様書プログラマBに渡す

3.プログラマAが設計仕様書を元にソースコードを作成

4.プログラマBがテスト仕様書を元にテストコードを作成

5.設計者AがプログラマAとプログラマBからソースコードとテストコードを受け取る

6.設計者Aがテストコードでソースコードをテスト


これならテストコードがソースコードに引き摺られない。重要なのはテストコードがソースコードに影響されないことである。

実際にやって見ると簡単ではないだろう。それでも何度かトライ&エラーを繰り返しノウハウをGETした暁には品質は格段と上がるに違いない。