- 行为驱动开发
- BDD - 首页
- BDD - 简介
- BDD - 测试驱动开发
- BDD - 以BDD的方式进行TDD
- BDD - 基于示例的规范
- BDD - 工具
- BDD - Cucumber
- BDD - Gherkin
- BDD - SpecFlow
- BDD 有用资源
- BDD - 快速指南
- BDD - 有用资源
- BDD - 讨论
行为驱动开发 - 简介
行为驱动开发 (BDD) 是一种软件开发流程,最初起源于测试驱动开发 (TDD)。
根据 BDD 演进的负责人 Dan North 的说法,“BDD 是在多个层面上使用示例来创建共享理解并揭示不确定性,以交付有意义的软件。”
BDD 使用示例来说明系统的行为,这些示例以每个人都能够理解和阅读的语言编写,参与开发的每个人都包括在内。这些示例包括 -
转换为可执行的规范。
用作验收测试。
BDD – 主要特征
行为驱动开发侧重于 -
提供共享的流程和共享的工具,促进软件开发人员、业务分析师和利益相关者之间的沟通,以协作开发软件,目标是交付具有业务价值的产品。
系统应该做什么,而不是应该如何实现。
提供更好的可读性和可见性。
不仅验证软件的工作原理,还验证它是否满足客户的期望。
BDD 的起源
如果缺陷没有在正确的时间被检测到并及时修复,修复缺陷的成本将成倍增加。请考虑以下示例。
这表明,除非正确获取需求,否则在后期阶段由于误解需求而导致的缺陷将代价高昂。此外,最终产品可能无法满足客户的期望。
当务之急是一种开发方法,该方法 -
基于需求。
在整个开发过程中关注需求。
确保满足需求。
BDD 是一种可以满足上述需求的开发方法。因此,行为驱动开发 -
推导出系统不同预期行为的示例。
能够使用业务领域术语以一种语言编写示例,以确保参与开发的每个人(包括客户)都能轻松理解。
通过对话不时地与客户一起确认示例。
在整个开发过程中关注客户需求(示例)。
使用示例作为验收测试。
BDD 实践
BDD 的两种主要实践是 -
基于示例的规范 (SbE)
测试驱动开发 (TDD)
基于示例的规范
基于示例的规范 (SbE) 在对话中使用示例来说明业务规则以及要构建的软件的行为。
基于示例的规范使产品负责人、业务分析师、测试人员和开发人员能够消除对业务需求的常见误解。
测试驱动开发
在 BDD 的上下文中,测试驱动开发将示例转换为人类可读的可执行规范。
开发人员使用这些规范作为指南来实现新功能的增量。这将导致精简的代码库和一套自动回归测试,从而在软件的整个生命周期内保持较低的维护成本。
敏捷 BDD
在敏捷软件开发中,BDD 方法用于就待定的规范达成共识。
在敏捷 BDD 中执行以下步骤 -
开发人员和产品负责人协作在纯文本编辑器中编写待定的规范。
产品负责人指定他们期望系统具有的行为。
开发人员
用这些行为细节填充规范。
根据他们对系统的理解提出问题。
考虑当前的系统行为,以查看新功能是否会破坏任何现有功能。
敏捷宣言和 BDD
敏捷宣言声明如下 -
我们正在通过实践和帮助他人实践来发现更好的开发软件的方法。通过这项工作,我们已经认识到以下价值 -
个体和互动 − 超过流程和工具
工作的软件 − 超过面面俱到的文档
客户合作 − 超过合同谈判
响应变化 − 超过遵循计划
也就是说,虽然右侧的项目也具有一定价值,但我们更重视左侧的项目。
BDD 与敏捷宣言的对应关系如下 -
| 敏捷宣言 | BDD 对应关系 |
|---|---|
| 个体和互动胜过流程和工具。 | BDD 是关于进行对话的。 |
| 工作的软件胜过全面文档。 | BDD 专注于简化创建具有业务价值的软件。 |
| 客户合作胜过合同谈判。 | BDD 专注于基于想法的场景,并随着开发的进行与客户持续沟通。它不基于任何承诺。 |
| 响应变化胜过遵循计划。 | BDD 专注于持续沟通和协作,这有助于吸收变化。 |