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