マイペースなRailsおじさん

Ruby、Ruby on Rails、オブジェクト指向設計を主なテーマとして扱います。だんだん大きくなっていくRuby on Rails製プロダクトのメンテナンス性を損なわない方法を考えたり考えなかったりしている人のブログです。

rspecの発端、BDDの考え方

BDDとは何か

振る舞い駆動開発。 ソフトウェアの振る舞い検証するテストをまず記述して、次にそのテストをパスするソフトウェアを記述するという開発の方法。

BDDとTDD

TDDでは、何をテストして、何をテストしないべきか、という問題に当たることがある。 BDDの発案者であるDan Nothさんは、その対処として「振る舞い」に着目するべきと考えた。

「振る舞い」に着目できるようなテストの記述のテンプレートを定めて、効果的でわかりやすいテストが書きやすくなるようにしたところがTDDに対するBDDの違い。

BDDにおけるテストの記述方法。Given、When、Thenの組み合わせで振る舞いを記述する。

Given:最初の文脈(前提)があって、
When:イベントが発生した場合、
then:なんらかのアウトプットを保証する。

振る舞いとは何か

  • 対象における何らかのイベントにひも付く外部から見える変化
  • テストする対象を利用する側からみたときの、テスト対象に期待する動作

BDDのメリット

  • 壊れにくく効果的なテストを記述できる
  • テストが文章になるので、どのような動作をしていれば良いのかがわかりやすい

References

いまさら聞けないTDD/BDD超入門 - @IT

BDDの導入 - Dan North - Digital Romanticism

Introducing BDD | Dan North & Associates