バグの無いプログラムの作り方:テストケースの原風景

私にとってのテストファーストの原風景を以下に示そう。

従来の場合

1.1 山がある。山の上には開発終了点である旗が立っている。
1.2 自分は山のふもとから、山へ登っていく。
1.3 だが山を登っている途中では、旗の位置は大体でしか測れない。
1.4 結果、ぐねぐねした足跡を残しながら旗に到達する。

テストファーストの場合

2.1 山がある。山の上には開発終了点である旗が立っている。
2.2 自分は山のふもとから、長い棒の先についたペンを使って頂上の旗からふもとまで一直線の線を引き始める。
2.3 旗の周りの地面はどうなっているか見えずらいので、線を苦労して引く。
2.4 引かれた線の通りに一直線に旗を目指す。
……こんなもんである。
ここで問題なのは、頂上が遠いということ。頂上が近いなら、ちょっと背伸びしただけで頂上からふもとまで線を引ける。
つまり、問題を細かく分ければいい。だけど、自分の主に使うVBでは、細かく分けるのがキツイのでこういう「長い棒の先についているペンで線を引く」という感覚が付きまとう。
それならば別に従来の方法でもいいなあ、と疑問に思いそうだがその場合は登山ルート一部だけ曲げて登ってね。とか言われたときに差が出てくるのだ。