ビヘイビア駆動開発

ビヘイビア駆動開発（ビヘイビアくどうかいはつ、振舞駆動開発; behavior driven development; BDD）とは、プログラム開発手法の一種で、テスト駆動開発から派生した物である 。

概要
テスト駆動開発で記述されるテストケースは、作成したプログラムの動作が正しいかどうかを検証するために行う「テスト」である。テストであるという点は同一であるが、加えて、これから作成しようとするプログラムに期待される「振る舞い」や「制約条件」、つまり「要求仕様」に近い形で、自然言語を併記しながらテストコードを記述する。テストフレームワークのメソッド名も自然言語（英語など）に近い形をとっている。

テストコードの可読性があがる上、テストコードが要求仕様となりうる。要求仕様からテストコードを起こす際も、スムーズにコードに移行しやすい。

BDDではスペック（仕様）とテストは限りなく近い物である。従って、テスト駆動開発における「テストファースト」は、BDDにおいては「スペックファースト」となり、スペックを作ってから実装するという、より自然な形でのプログラム製作を実現している。

いくつかのテストフレームワークは、
 アプリケーションの振る舞いを記述するストーリーフレームワーク
 オブジェクトの振る舞いを記述するスペックフレームワーク
の2種類を含む。

具体例
 easyb の場合 
Groovyのeasybの場合。

scenario "ユーザーリストに2人追加と存在確認", {
   given "空のユーザーリスト", {
       userList = []
   }
   when "太郎を追加", {
       userList.add "太郎"
   }
   and
   when "花子を追加", {
       userList.add "花子"
   }
   then "ユーザーリストには太郎が含まれている", {
       userList.shouldHave "太郎"
   }
   and
   then "ユーザーリストには花子が含まれている", {
       userList.shouldHave "花子"
   }
}

 脚注 

関連項目
 テスト駆動開発
 アジャイルソフトウェア開発
 ユニットテスト・フレームワーク一覧

 外部リンク 
+言語CCSpecObjective-CKiwiSwift, Objective-CQuickDelphidSpecGoGinkgoGroovyeasybGSpecHaskellHspecKotlinSpek.NETNSpecSpecterJavabeanSpecInstinctJBehaveJDaveTumblerJavaScriptJSSpecPHPPHPSpecPythonPySpecRubyRSpecScalaspecsXPath, XSLT, XQueryXSpec

Category:ソフトウェア工学
Category:ソフトウェアテスティング
Category:ソフトウェア開発哲学
Category:ソフトウェア開発手法