【びへいびあくどうせっけい】
ビヘイビア駆動設計(BDD) とは?
最終更新:
💡 具体例で振る舞いを共有し、設計と確認に使う
BDD(振る舞い駆動開発)の考え方を設計に使い、関係者が具体例を通じて期待する振る舞いを共有すること。Given・When・Thenは例を記述する形式で、自動実行には各ステップとコードの接続が必要。
📌 このページのポイント
- BDDは通常Behavior-Driven Development(振る舞い駆動開発)を指す
- 関係者が具体例を話し合い、期待する振る舞いを共有する
- Givenは前提、Whenは操作や出来事、Thenは期待する結果を表す
- Cucumberで実行するには、例のステップをコードへ結び付ける
ビヘイビア駆動設計と、振る舞い駆動開発は別の手法なの?
通常BDDはBehavior-Driven Development、振る舞い駆動開発を指すよ。期待する振る舞いを具体例で話し合う考え方は、設計にも使える。「設計」はGiven-When-Thenだけを使う別手法、と厳密に分ける根拠はないんだ。
Given-When-Thenって、どう書くの?
カートの例なら「Given:商品が3つ入っている」「When:商品を1つ追加する」「Then:商品数として4つと表示される」と書ける。Givenは前提、Whenは操作や出来事、Thenは期待する結果。関係者が読んで、同じ振る舞いを思い浮かべられることが大切だよ。
その文章を書くだけでテストになる?
文章だけでは実行できないよ。Cucumberでは各ステップをステップ定義というコードに結び付ける。前提のカートを準備し、商品を追加し、表示された数を確認するコードが必要なんだ。例とコードを保守して、実際の振る舞いと合っているか確かめるよ。
TDDとはどうつながっているの?
全部の機能をGiven-When-Thenで書く必要がある?
BDDをこの形式の文章を増やす活動だけにしないことが大切だよ。まず、何を作るべきかの認識が合っているか、具体例で確かめる。その例を開発や確認に使うんだ。書いた量だけで仕様の正しさが保証されるわけではなく、関係者の対話と、実装後の確認も必要だね。
まとめ:ざっくりこれだけ覚えればOK!
「BDD」って出てきたら「具体例で振る舞いを共有し、開発や設計を進める考え方」と思えばだいたいOK!
📖 おまけ:英語の意味
「Behavior-Driven Development」 = 振る舞い駆動開発
💬 BDDは通常この英語の略だよ。Dan NorthがTDDでの経験から説明を発展させ、2006年のIntroducing BDDで紹介している。「設計」と「開発」を独立した別手法として区別するものではないんだ。