【びへいびあくどうかいはつ】

BDD(ビヘイビア駆動開発) とは?

最終更新:
💡 具体例を話し合い、振る舞いの認識をそろえる

関係者が具体例を使って必要な振る舞いを話し合い、共通の理解を作りながら開発する手法。合意した例を分かりやすく記述し、必要に応じて実行可能なテストへつなげる。TDDから発展した考え方。

📌 このページのポイント
BDD:具体例をテストへつなげる 関係者で具体例を話し合い、合意するGivenカートが空When1つ追加Then個数が101+1ステップ定義のコードへ接続操作と結果の検査を実装実行して、合意した振る舞いを確認
空のカートへ商品を1つ追加する例。青は合意した例、橙はCucumberで実行するためのコードとの接続、緑はテストによる確認。文章を書くだけで自動実行されるわけではない。
ひよこ ひよこ
TDDと何が違うの?
ペンギン先生 ペンギン先生
BDDはTDDから発展し、必要な振る舞いを具体例で共有することに注目するよ。ユーザーの操作だけに限定されず、プログラム内部の振る舞いを表すこともある。「TDDはコード、BDDは画面」と単純には分けられないんだ。
ひよこ ひよこ
Given・When・Thenって何?
ペンギン先生 ペンギン先生
前提・出来事・結果を表す書き方だよ。たとえば「カートが空で、商品を1つ追加したら、カートの個数が1になる」。GherkinではAndなどで条件を足せるので、必ず3行だけで書く決まりではないんだ。
ひよこ ひよこ
シナリオを書けばそのまま動く?
ペンギン先生 ペンギン先生
Cucumberでは、各ステップに対応する実行用コードを用意するよ。たとえば「商品を1つ追加する」に一致したコードが操作し、「個数が1になる」に一致したコードが結果を確かめる。文章だけで操作や検査が自動的に決まるわけではないんだ。
ひよこ ひよこ
企画担当も一緒に書ける?
ペンギン先生 ペンギン先生
一緒に具体例を話し合うことが大切だよ。必要な振る舞いを発見し、例を読みやすく整理し、それをテストにつなげる。ツールの導入だけでなく、関係者が共通の理解を作る過程がBDDなんだ。
ひよこ ひよこ
図の例だけで十分に確認できる?
ペンギン先生 ペンギン先生
その例が確認するのは、空のカートへ1つ追加した場合だよ。必要な振る舞いを考えるなら、既に商品がある場合や追加できない場合も話し合える。どの例を検査するかは、求める仕様に合わせて決めるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「BDD」って出てきたら「具体例で振る舞いの認識をそろえて開発する手法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Behavior-Driven Development」 = 振る舞いに駆動される開発
💬 Dan Northが2000年代初頭に考案し、2006年の記事で紹介した考え方。TDDを説明する中で、テストがどんな振る舞いを表すのかに注目したんだ。

参考資料

← 用語集にもどる