BDDとは何か
● 振る舞い駆動開発
(Behaviour-Driven Development, BDD)
● Dan Northが提唱した考え方
○ 原典:Introducing BDD
○ 日本語訳:BDDの導入 - Dan North
● 記述方法としてGherkinを用いられることが多い
○ 次ページで説明
● CucumberコミュニティがBDDに関する
一連のドキュメントを管理している
Slide 10
Slide 10 text
Gherkinとは何か
Given/When/Thenなどのキーワードを用いて、
実行可能な仕様を自然言語で表現する手法
Feature: 自動販売機
Scenario: 飲み物を買うと、飲み物代を引いた金額のお釣りが出る
Given 自動販売機がある
When 550 円を入れる
And 120 円の "コーラ" を選択する
Then "コーラ" が出てくる
And 430 円が出てくる
BRIEFの原則を用いた改善例
Scenario: 注文テスト
Given 時刻は"11:00"です
Given お客様は"http://test.wimp.com/"にアクセスします
And 彼らは"SearchText"に"マルゲリータ"と入力します
When 彼らは"検索"を押します
Then "SearchResults"内に"マルゲリータ"が表示されるはずです
And 彼らは"サイズ"から"中"を選択します
When 彼らは"買い物カゴに追加"を押します
Then "BasketItemCount"の中に"1品"と表示されるべきです。
When 彼らは"チェックアウト"をクリックします
And 彼らは"DeliveryInstructions"から"店頭受け取り"を選択します
And 彼らは"PaymentOption"から"受け取り時の支払い"を選択します
And 彼らは"OrderName"に"Marvin"と入力します
And 彼らは"ContactPhoneNumber"に"12334456"と入力します
When 彼らは"注文を送信"を押します
Then "SuccessMessage"が表示されるはずです
Then "ErrorMessage"は表示されないはずです
And "SuccessMessage"内に"ご注文ありがとうございます! "と表示されるはずです
And "CollectionTime"内に"11:20"が表示されるはずです
And "TotalAmount"内に"$14"が表示されるはずです
題材:
宅配ピザの
注文サイト
Slide 28
Slide 28 text
BRIEFの原則を用いた改善例
Scenario: 注文テスト
Given 時刻は"11:00"です
Given お客様は"http://test.wimp.com/"にアクセスします
And 彼らは"SearchText"に"マルゲリータ"と入力します
When 彼らは"検索"を押します
Then "SearchResults"内に"マルゲリータ"が表示されるはずです
And 彼らは"サイズ"から"中"を選択します
When 彼らは"買い物カゴに追加"を押します
Then "BasketItemCount"の中に"1品"と表示されるべきです。
When 彼らは"チェックアウト"をクリックします
And 彼らは"DeliveryInstructions"から"店頭受け取り"を選択します
And 彼らは"PaymentOption"から"受け取り時の支払い"を選択します
And 彼らは"OrderName"に"Marvin"と入力します
And 彼らは"ContactPhoneNumber"に"12334456"と入力します
When 彼らは"注文を送信"を押します
Then "SuccessMessage"が表示されるはずです
Then "ErrorMessage"は表示されないはずです
And "SuccessMessage"内に"ご注文ありがとうございます! "と表示されるはずです
And "CollectionTime"内に"11:20"が表示されるはずです
And "TotalAmount"内に"$14"が表示されるはずです
Scenario: 注文テスト
Scenario: 未認証のお客様が受け取り時に支払うことを選択できる
ビジネス言語
(Business language)
意図の明確化
(Intention revealing)
焦点を絞る
(Focused)
Slide 29
Slide 29 text
BRIEFの原則を用いた改善例
Scenario: 未認証のお客様が受け取り時に支払うことを選択できる
Given 時刻は"11:00"です
Given お客様は"http://test.wimp.com/"にアクセスします
And 彼らは"SearchText"に"マルゲリータ"と入力します
When 彼らは"検索"を押します
Then "SearchResults"内に"マルゲリータ"が表示されるはずです
And 彼らは"サイズ"から"中"を選択します
When 彼らは"買い物カゴに追加"を押します
Then "BasketItemCount"の中に"1品"と表示されるべきです。
When 彼らは"チェックアウト"をクリックします
And 彼らは"DeliveryInstructions"から"店頭受け取り"を選択します
Then 彼らは"PaymentOption"から"受け取り時の支払い"を選択しますできるはずです
And 彼らは"OrderName"に"Marvin"と入力します
And 彼らは"ContactPhoneNumber"に"12334456"と入力します
When 彼らは"注文を送信"を押します
Then "SuccessMessage"が表示されるはずです
Then "ErrorMessage"は表示されないはずです
And "SuccessMessage"内に"ご注文ありがとうございます! "と表示されるはずです
And "CollectionTime"内に"11:20"が表示されるはずです
And "TotalAmount"内に"$14"が表示されるはずです
ビジネス言語
(Business language)
意図の明確化
(Intention revealing)
焦点を絞る
(Focused)
Slide 30
Slide 30 text
BRIEFの原則を用いた改善例
Scenario: 未認証のお客様が受け取り時に支払うことを選択できる
Given 時刻は"11:00"です
Given お客様は"http://test.wimp.com/"にアクセスします
And 彼らは"SearchText"に"マルゲリータ"と入力します
When 彼らは"検索"を押します
Then "SearchResults"内に"マルゲリータ"が表示されるはずです
And 彼らは"サイズ"から"中"を選択します
When 彼らは"買い物カゴに追加"を押します
Then "BasketItemCount"の中に"1品"と表示されるべきです。
Given お客様は"BasketItemCount"の中に"1品"持っています
When 彼らは"チェックアウト"をクリックします
And 彼らは"DeliveryInstructions"から"店頭受け取り"を選択します
Then 彼らは"PaymentOption"から"受け取り時の支払い"を選択できるはずです
必須 (Essential)
簡潔にする (Brief)
Slide 31
Slide 31 text
BRIEFの原則を用いた改善例
Scenario: 未認証のお客様が受け取り時に支払うことを選択できる
Given お客様は"BasketItemCount"の中に"1品"持っています
Given お客様は買い物カゴの中に1つの商品を入れています
When 彼らは"チェックアウト"をクリックします
And 彼らは"DeliveryInstructions"から"店頭受け取り"を選択します
And 彼らは商品の店頭受け取りを選択しました
When 彼らは支払い指示に進みます
Then 彼らは"PaymentOption"から"受け取り時の支払い"を選択できるはずです
Then 彼らは受け取り時の支払いを選択できるはずです
ビジネス言語
(Business language)
意図の明確化
(Intention revealing)
Slide 32
Slide 32 text
改善結果
Scenario: 未認証のお客様が受け取り時に支払うことを選択できる
Given お客様は買い物カゴの中に1つの商品を入れています
And 彼らは商品の店頭受け取りを選択しました
When 彼らは支払い指示に進みます
Then 彼らは受け取り時の支払いを選択できるはずです
Slide 33
Slide 33 text
改善結果(改善前)
Scenario: 注文テスト
Given 時刻は"11:00"です
Given お客様は"http://test.wimp.com/"にアクセスします
And 彼らは"SearchText"に"マルゲリータ"と入力します
When 彼らは"検索"を押します
Then "SearchResults"内に"マルゲリータ"が表示されるはずです
And 彼らは"サイズ"から"中"を選択します
When 彼らは"買い物カゴに追加"を押します
Then "BasketItemCount"の中に"1品"と表示されるべきです。
When 彼らは"チェックアウト"をクリックします
And 彼らは"DeliveryInstructions"から"店頭受け取り"を選択します
And 彼らは"PaymentOption"から"受け取り時の支払い"を選択します
And 彼らは"OrderName"に"Marvin"と入力します
And 彼らは"ContactPhoneNumber"に"12334456"と入力します
When 彼らは"注文を送信"を押します
Then "SuccessMessage"が表示されるはずです
Then "ErrorMessage"は表示されないはずです
And "SuccessMessage"内に"ご注文ありがとうございます! "と表示されるはずです
And "CollectionTime"内に"11:20"が表示されるはずです
And "TotalAmount"内に"$14"が表示されるはずです