Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

振る舞い駆動開発(BDD)における、テスト自動化の前に大切にしていること #stac2024 ...

nihonbuson
December 07, 2024

振る舞い駆動開発(BDD)における、テスト自動化の前に大切にしていること #stac2024 / BDD formulation

ソフトウェアテスト自動化カンファレンス2024での発表資料です。

【発表資料中のURL】
P4 Agile Testing Condensed Japanese Edition
https://leanpub.com/agiletesting-condensed-japanese-edition

P4 A Practical Guide to Testing in DevOps Japanese Edition
https://leanpub.com/testingindevops-japanese-edition

P4 The BDD Books - Discovery (Japanese Edition)
https://leanpub.com/bddbooks-discovery-jp

P4 The BDD Books - Formulation (Japanese Edition)
https://leanpub.com/bddbooks-formulation-jp

P5 BDDやATDDとは何か?(連載記事)
https://sqripts.com/2023/07/03/54058/

P9 Introducing BDD
原文:https://dannorth.net/introducing-bdd/
日本語訳:https://digitalsoul.hatenadiary.org/entry/20090819/1250686015

P11 テスト駆動開発/振る舞い駆動開発を始めるための基礎知識
https://atmarkit.itmedia.co.jp/ait/articles/1403/05/news035_3.html

P12 Behaviour-Driven Development
https://cucumber.io/docs/bdd/

P19 Cucumber School - Give Me An Example
https://www.youtube.com/watch?v=PR7WIS8JYyY

P20 Introducing Example Mapping
原文:https://cucumber.io/blog/bdd/example-mapping-introduction/
日本語訳:https://nihonbuson.hatenadiary.jp/entry/ExampleMapping

P20 事例から学ぶ実例マッピングのやり方
https://speakerdeck.com/nihonbuson/example-mapping

P21 ラムズフェルド行列の発端となった会見
https://www.youtube.com/watch?v=REWeBzGuzCc

P26 Keep your scenarios BRIEF
原文:https://cucumber.io/blog/bdd/keep-your-scenarios-brief/
日本語訳:https://nihonbuson.hatenadiary.jp/entry/keep-your-scenarios-brief

nihonbuson

December 07, 2024
Tweet

More Decks by nihonbuson

Other Decks in Technology

Transcript

  1. 自己紹介 • 風間裕也(ブロッコリー) • 株式会社10X 品質管理チーム • 副業…B-Testing(個人事業主)として ◦ 株式会社MonotaRO(テストコンサルタント)

    ◦ グロース・アーキテクチャ&チームス株式会社 ◦ 他数社でお手伝い • 社外活動 ◦ JaSST Review実行委員長 ▪ ソフトウェアレビューシンポジウム ◦ WACATE実行委員長 ▪ ソフトウェアテストの 合宿型ワークショップ形式勉強会 ◦ Developers Summit 2025 コンテンツ委員 SNS上の アイコン
  2. BDDとは何か • 振る舞い駆動開発 (Behaviour-Driven Development, BDD) • Dan Northが提唱した考え方 ◦

    原典:Introducing BDD ◦ 日本語訳:BDDの導入 - Dan North • 記述方法としてGherkinを用いられることが多い ◦ 次ページで説明 • CucumberコミュニティがBDDに関する 一連のドキュメントを管理している
  3. 今回紹介した動画について • 今回の紹介した動画は、 Cucumber School(e-learningサイト)から紹介 • Cucumber Schoolの冒頭部分の動画は YouTube上に公開済み ◦

    https://youtu.be/PR7WIS8JYyY ◦ 動画時間は8分弱 ◦ 英語の動画だが、 自動生成による日本語字幕を選択可能 ◦ 6年前の動画なので、 現在のCucumber Schoolとは内容が一部異なる Cucumber School
  4. 実例マッピング • Matt Wynneが考案 • ユーザーストーリーが どのようなルールの元に 成り立つか炙り出す方法 ◦ Unknown

    unknownsを Known unknownsにする • 詳しくはこちら ◦ 記事の日本語訳 ◦ 日本語の解説スライド ◦ 『The BDD Books - Discovery』 Cucumber.io ブログ
  5. ラムズフェルド行列 2002年にラムズフェルド国防長官(当時)が会見時に発した言葉が発端 Known knowns (知っていることを分かっている) どのような内容なのか分かっており、 その自覚もある状態。 Known unknowns (知らないことを分かっている)

    どのような内容なのか分かっていないが、 「自分が分かっていない」という状況である ということは把握している状態。 Unknown knowns (知っていることを分かっていない) どのような内容なのか分かっているが、 その状況は把握していない状態。 無意識的な行動など。 Unknown unknowns (知らないことを分かっていない) どのような内容なのか分かっておらず、 「現在分かっていない」という状況も 把握していない状態。
  6. 発見を通じて明らかにしていること Known knowns (知っていることを分かっている) どのような内容なのか分かっており、 その自覚もある状態。 Known unknowns (知らないことを分かっている) どのような内容なのか分かっていないが、

    「自分が分かっていない」という状況である ということは把握している状態。 Unknown knowns (知っていることを分かっていない) どのような内容なのか分かっているが、 その状況は把握していない状態。 無意識的な行動など。 Unknown unknowns (知らないことを分かっていない) どのような内容なのか分かっておらず、 「現在分かっていない」という状況も 把握していない状態。 2002年にラムズフェルド国防長官(当時)が会見時に発した言葉が発端 疑 問 点   具体例
  7. BRIEFの原則 • Gherkin記法などで書かれたテストシナリオを 保守性の高い状態で記述するために役立つ原則 ◦ Business language(ビジネス言語) ◦ Real data(実際のデータ)

    ◦ Intention revealing(意図を明らかにする) ◦ Essential(必須) ◦ Focused(焦点を絞る) ◦ Brief(簡潔である) • 詳しくはこちら ◦ 記事の日本語訳 Cucumber.io ブログ
  8. 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"が表示されるはずです 題材: 宅配ピザの 注文サイト
  9. 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)
  10. 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)
  11. 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)
  12. BRIEFの原則を用いた改善例 Scenario: 未認証のお客様が受け取り時に支払うことを選択できる Given お客様は"BasketItemCount"の中に"1品"持っています Given お客様は買い物カゴの中に1つの商品を入れています When 彼らは"チェックアウト"をクリックします And

    彼らは"DeliveryInstructions"から"店頭受け取り"を選択します And 彼らは商品の店頭受け取りを選択しました When 彼らは支払い指示に進みます Then 彼らは"PaymentOption"から"受け取り時の支払い"を選択できるはずです Then 彼らは受け取り時の支払いを選択できるはずです ビジネス言語 (Business language) 意図の明確化 (Intention revealing)
  13. 改善結果(改善前) 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"が表示されるはずです