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