TDDについて考える

「生きてま」より「TDDのテストとはなにか?」(http://log.giantech.jp/279)
私が普段考えていることにけっこう近いと思いましたので反応します。

ユニットテストは宿場町、受入れテストは京都というメタファも使った

なるほど。ゴールに辿り着くには宿場町を幾つも通過し、その都度精神的にも肉体的にも一休みする。またゴールに辿り着くには何種類ものルート(東海道とか、中山道とか?)があると、そんな感じでしょうか。なんかメタファ的(?)な展開が広がりそうです。

小さなターゲットを設定し、そこを目指して進む。辿り着いたら本当にそこがターゲットなのかを確認した後、またちょっと先に別のターゲットを設定し、そこに進む。この小さなステップの繰り返しでゴールに到達する。書いてみると至極当り前なことだ。ただ、TDDはそのステップを極限まで細かくしてブレ幅を減らしている、という点でExtremeなのだろう。

この「極限まで細かく」がポイントですね。ゴールまでの距離は変わらないので、その道のりを何分割するのかということでしょうか。この「細かさ」はプログラマの精神状態とか対象の難しさによって大きさが変わると考えています、というかTDD本にもそんなことが書いてあったと記憶しています。

テスト駆動とは、目標を明確にして作業しないと時間の波に流されてあらぬ方向に行きがちな人間の弱さを補完するプロセス、つまり目標駆動であると言ってもよいのではないか。

目標駆動!