首页/开发/软件测试速查/行为驱动开发(BDD)
测试基础与分层67 条

行为驱动开发(BDD)

用业务语言描述系统行为并驱动开发:从示例出发澄清需求,以 Given-When-Then 表达场景,使需求、测试与实现共享同一套描述。

软件测试速查开发更新于 2026-10-13

行为驱动开发是什么

BDD(Behavior-Driven Development)由 Dan North 在 2006 年提出:用业务语言描述系统行为并驱动开发。团队从具体示例出发澄清需求,用 Given-When-Then 表达场景,让需求、测试与实现共享同一套描述。Gherkin(Feature/Scenario 语法)是常见载体,场景可被自动化框架执行,成为「活文档」。它的核心是三方的对话,而不是脚本语法。

基本信息

提出Dan North(2006)
描述语言Gherkin(Feature/Scenario/Given-When-Then)
价值需求澄清、统一术语、可执行文档
协作形式产品、开发、测试三方共同编写与评审场景
落地载体Cucumber 等框架把场景映射到步骤定义

Gherkin 示例

Gherkin 示例
Scenario: 余额不足时拒绝取款
  Given 账户余额为 100 元
  When 尝试取款 150 元
  Then 提示余额不足且余额保持 100 元

# 场景用业务术语表达,三方都能读懂并确认

典型使用场景

  • 需求澄清会:用具体示例替代抽象描述,歧义当场暴露。
  • 验收标准编写:场景直接作为验收依据与回归基线。
  • 活文档维护:场景随需求演进更新,始终反映系统现状。
  • 跨部门协作:产品、开发、测试共用一套术语清单。
  • 回归自动化:稳定场景转化为自动化执行的用例。
  • 新人理解业务:按 Feature 目录浏览系统行为。
  • 术语统一:把「订单」「账单」等叫法差异在场景评审里当场对齐。
把 BDD 当作脚本语法而不做三方澄清,会得到格式漂亮但业务不认可的场景。
场景写业务行为不写界面操作:点哪个按钮属于步骤定义的实现细节,不该出现在场景层。
示例是 BDD 的燃料:从「规则 + 代表性示例」出发比写抽象规则更快暴露理解分歧。
评审要留记录:把分歧点与最终结论写进场景描述,下个迭代讨论同一条规则时不用从头吵起。

易错点

  • 用例写得像脚本细节(点哪个按钮):失去业务可读性,三方协作价值归零。
  • 场景数量爆炸后维护成本高:应聚焦关键规则与典型示例,不宜全量铺开。
  • 只改场景不跑自动化:活文档与实际行为脱节,比没有文档更误导。
  • 步骤定义复用过度:一个步骤被到处套用后语义含糊,断言越来越弱。
  • 把 BDD 当测试工具采购:引入框架但没改协作方式,收益为零。

数据来源与参考

  • Dan North《Introducing BDD》(dannorth.net)
  • Cucumber 官方文档(cucumber.io)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌