Upgrade to Pro — share decks privately, control downloads, hide ads and more …

エンジニアとQAエンジニアを繋いでくれた振る舞い駆動開発(Behaviour-Driven D...

Avatar for uutan1108 uutan1108
September 11, 2026
1

エンジニアとQAエンジニアを繋いでくれた振る舞い駆動開発(Behaviour-Driven Development)

Scrum Fest Mikawa 2026 - エンジニアとQAエンジニアを繋いでくれた振る舞い駆動開発(Behaviour-Driven Development) | ConfEngine - Conference Platform
https://confengine.com/conferences/scrum-fest-mikawa-2026/proposal/50460/qabehaviour-driven-development

Avatar for uutan1108

uutan1108

September 11, 2026

More Decks by uutan1108

Transcript

  1. Feature: 預金 As a 銀行の顧客 I can 口座にお金を預金する so that

    残高を増やして保管できる Scenario: 預金すると残高が増える Given 初期残高が 1000.0 円の口座がある When 500.0 円を預金する Then 残高が 1500.0 円になっている 自然言語の テストコード 9
  2. Feature: 預金 Feature(機能):テストする機能全体を定義 As a 銀行の顧客 I can 口座にお金を預金する so

    that 残高を増やして保管できる Scenario: 預金すると残高が増える Given 初期残高が 1000.0 円の口座がある When 500.0 円を預金する Then 残高が 1500.0 円になっている 自然言語の テストコード
  3. Feature: 預金 As a 銀行の顧客 I can 口座にお金を預金する As a

    / I can / so that(ユーザーストーリー) As a: 誰がこの機能を使うか(ユーザーの役割) I can: 何ができるか(実行可能なアクション) so that: なぜその機能が必要か(ビジネス価値・目的) so that 残高を増やして保管できる Scenario: 預金すると残高が増える Given 初期残高が 1000.0 円の口座がある When 500.0 円を預金する Then 残高が 1500.0 円になっている 自然言語の テストコード
  4. Feature: 預金 As a 銀行の顧客 I can 口座にお金を預金する so that

    残高を増やして保管できる Scenario: 預金すると残高が増える Scenario(シナリオ):具体的なテストケースを定義 Given 初期残高が 1000.0 円の口座がある When 500.0 円を預金する Then 残高が 1500.0 円になっている 自然言語の テストコード
  5. Feature: 預金 As a 銀行の顧客 I can 口座にお金を預金する so that

    残高を増やして保管できる Scenario: 預金すると残高が増える Given (前提条件):操作を実行する前の状態 Given 初期残高が 1000.0 円の口座がある When 500.0 円を預金する Then 残高が 1500.0 円になっている 自然言語の テストコード
  6. Feature: 預金 As a 銀行の顧客 I can 口座にお金を預金する so that

    残高を増やして保管できる Scenario: 預金すると残高が増える Given 初期残高が 1000.0 円の口座がある When 500.0 円を預金する When(実行アクション):テスト対象となる具体的なアクショ ン Then 残高が 1500.0 円になっている 自然言語の テストコード
  7. Feature: 預金 As a 銀行の顧客 I can 口座にお金を預金する so that

    残高を増やして保管できる Scenario: 預金すると残高が増える Given 初期残高が 1000.0 円の口座がある When 500.0 円を預金する Then(期待結果):期待される結果を検証 Then 残高が 1500.0 円になっている 自然言語の テストコード
  8. public class BankAccountSteps { private BankAccount account; @Given("初期残高が {double} 円の口座がある")

    public void 初期残高がの口座がある(double initialBalance) { account = new BankAccount(initialBalance); package com.example.bdd; import io.cucumber.java.Before; import io.cucumber.java.en.Given; import io.cucumber.java.en.When; import io.cucumber.java.en.Then; import static org.junit.jupiter.api.Assertions.assertEqu } als; @When("{double} 円を預金する") public void 円を預金する(double amount) { account.deposit(amount); } @Then("残高が {double} 円になっている") public void 残高がになっている(double expectedBalance) { assertEquals(expectedBalance, account.getBalance()); 自然言語のテスト コードから呼ばれる Javaのテストコード } } 17
  9. public class BankAccountSteps { private BankAccount account; @Given("初期残高が {double} 円の口座がある")

    public void 初期残高がの口座がある(double initialBalance) { account = new BankAccount(initialBalance); package com.example.bdd; import io.cucumber.java.Before; import io.cucumber.java.en.Given; import io.cucumber.java.en.When; import io.cucumber.java.en.Then; import static org.junit.jupiter.api.Assertions.assertEqu } als; @When("{double} 円を預金する") public void 円を預金する(double amount) { account.deposit(amount); } @Then("残高が {double} 円になっている") public void 残高がになっている(double expectedBalance) { assertEquals(expectedBalance, account.getBalance()); } } 自然言語のテスト コードから呼ばれる Javaのテストコード
  10. チーム構成 • QA エンジニアチーム 、フロントエンドエンジニアチー ム、バックエンドエンジニアチーム が別れている が毎日 よく会話している •

    主に私とフロントエンドエンジニア、QA エンジニアの1名 づつで BDD で E2E テストを書いていた ※ 便宜上、フロントエンドエンジニアチーム、バックエンドエン ジニアチームを合わせて実装チームと書きます
  11. 今まで経験したことがあるプロジェクト • QA エンジニアチーム とバックエンドエンジニアチーム が別 れていて 、問題があったと連絡がある • QA

    エンジニアチームがなく 、バックエンドチームとフロント エンドチームが話しながら問題を調査する
  12. 今まで経験したことがあるプロジェクト • QA エンジニアチームとバックエンドエンジニアチームが別れていて、問題が あったと連絡がある ◦ チームが別れていて会話しにくいと感じていた ... ◦ 実装後の指摘になり、

    QAとの協働より「依頼と対応」の関係のよ うに感じていた ... • QA エンジニアチームがなく、バックエンドチームとフロントエンドチームが話し ながら問題を調査する ◦ 技術的な原因調査に偏り、ユーザーの利用シナリオを意識でき ていなかった ...
  13. 以前 今 問題発生後 実装前・実装中 不具合 期待する振る舞い 関係 報告と対応 一緒に具体化する 私の視点

    技術的な原因 ユーザーのシナリオ QA エンジニアと 会話する時期 QA エンジニアとの 会話の起点 QA エンジニアとの