rspecの発端、BDDの考え方
BDDとは何か
振る舞い駆動開発。 ソフトウェアの振る舞い検証するテストをまず記述して、次にそのテストをパスするソフトウェアを記述するという開発の方法。
BDDとTDD
TDDでは、何をテストして、何をテストしないべきか、という問題に当たることがある。 BDDの発案者であるDan Nothさんは、その対処として「振る舞い」に着目するべきと考えた。
「振る舞い」に着目できるようなテストの記述のテンプレートを定めて、効果的でわかりやすいテストが書きやすくなるようにしたところがTDDに対するBDDの違い。
BDDにおけるテストの記述方法。Given、When、Thenの組み合わせで振る舞いを記述する。
Given:最初の文脈(前提)があって、 When:イベントが発生した場合、 then:なんらかのアウトプットを保証する。
振る舞いとは何か
- 対象における何らかのイベントにひも付く外部から見える変化
- テストする対象を利用する側からみたときの、テスト対象に期待する動作
BDDのメリット
- 壊れにくく効果的なテストを記述できる
- テストが文章になるので、どのような動作をしていれば良いのかがわかりやすい