TDDの基本テクニック

TDDBC 福岡2のデモより。
なおこれらのテクニックについては以下のURLが大いに参考になる。写経おすすめ。

アサートファースト

ゴールから書き始める。
プロダクトコードを実装しないでテストコードのアサーションを書き、それを実行してRedを出す。

これによってテストが失敗したときにきちんとRedになることを確認する。

仮実装

最短の実装でテストをGreenにする。

例えばFizzBuzzで「3と5以外の数字を受け取ったらその数字をそのまま返す」というテストで以下のようなアサーションを書いた場合

fizzbuzz("2").should == "2"

仮実装は以下のようになる。

def fizzbuzz(input)
  2
end

なんという茶番。

しかしこの仮実装によってRedからGreenになることを確認することでテストが確実に動いていることを確認できる。
アサートファーストと仮実装の流れをもってテストコードのテストとする。

三角測量

アサーションを追加したら仮実装が破綻することを確認する。
すべてのアサーションがGreenになるように今度は真面目に実装する。

三角測量は様々なケースをパスする正しい実装を行う助けになる。

明白な実装

一気に実装できると言う「自信」がある場合は仮実装や三角測量をすっとばして実装してOK。
「不安」があれば仮実装と三角測量で手堅く行く。