行为驱动开发 - 简介



行为驱动开发 (BDD) 是一种软件开发流程,最初起源于测试驱动开发 (TDD)。

根据 BDD 演进的负责人 Dan North 的说法,“BDD 是在多个层面上使用示例来创建共享理解并揭示不确定性,以交付有意义的软件。”

BDD 使用示例来说明系统的行为,这些示例以每个人都能够理解和阅读的语言编写,参与开发的每个人都包括在内。这些示例包括 -

  • 转换为可执行的规范。

  • 用作验收测试。

BDD – 主要特征

行为驱动开发侧重于 -

  • 提供共享的流程和共享的工具,促进软件开发人员、业务分析师和利益相关者之间的沟通,以协作开发软件,目标是交付具有业务价值的产品。

  • 系统应该做什么,而不是应该如何实现。

  • 提供更好的可读性和可见性。

  • 不仅验证软件的工作原理,还验证它是否满足客户的期望。

BDD 的起源

如果缺陷没有在正确的时间被检测到并及时修复,修复缺陷的成本将成倍增加。请考虑以下示例。

Origin of BDD

这表明,除非正确获取需求,否则在后期阶段由于误解需求而导致的缺陷将代价高昂。此外,最终产品可能无法满足客户的期望。

当务之急是一种开发方法,该方法 -

  • 基于需求。

  • 在整个开发过程中关注需求。

  • 确保满足需求。

BDD 是一种可以满足上述需求的开发方法。因此,行为驱动开发 -

  • 推导出系统不同预期行为的示例。

  • 能够使用业务领域术语以一种语言编写示例,以确保参与开发的每个人(包括客户)都能轻松理解。

  • 通过对话不时地与客户一起确认示例。

  • 在整个开发过程中关注客户需求(示例)。

  • 使用示例作为验收测试。

BDD 实践

BDD 的两种主要实践是 -

  • 基于示例的规范 (SbE)

  • 测试驱动开发 (TDD)

基于示例的规范

基于示例的规范 (SbE) 在对话中使用示例来说明业务规则以及要构建的软件的行为。

基于示例的规范使产品负责人、业务分析师、测试人员和开发人员能够消除对业务需求的常见误解。

测试驱动开发

在 BDD 的上下文中,测试驱动开发将示例转换为人类可读的可执行规范。

开发人员使用这些规范作为指南来实现新功能的增量。这将导致精简的代码库和一套自动回归测试,从而在软件的整个生命周期内保持较低的维护成本。

敏捷 BDD

在敏捷软件开发中,BDD 方法用于就待定的规范达成共识。

在敏捷 BDD 中执行以下步骤 -

  • 开发人员和产品负责人协作在纯文本编辑器中编写待定的规范。

  • 产品负责人指定他们期望系统具有的行为。

  • 开发人员

    • 用这些行为细节填充规范。

    • 根据他们对系统的理解提出问题。

  • 考虑当前的系统行为,以查看新功能是否会破坏任何现有功能。

敏捷宣言和 BDD

敏捷宣言声明如下 -

我们正在通过实践和帮助他人实践来发现更好的开发软件的方法。通过这项工作,我们已经认识到以下价值 -

  • 个体和互动 − 超过流程和工具

  • 工作的软件 − 超过面面俱到的文档

  • 客户合作 − 超过合同谈判

  • 响应变化 − 超过遵循计划

也就是说,虽然右侧的项目也具有一定价值,但我们更重视左侧的项目。

BDD 与敏捷宣言的对应关系如下 -

敏捷宣言 BDD 对应关系
个体和互动胜过流程和工具。 BDD 是关于进行对话的。
工作的软件胜过全面文档。 BDD 专注于简化创建具有业务价值的软件。
客户合作胜过合同谈判。 BDD 专注于基于想法的场景,并随着开发的进行与客户持续沟通。它不基于任何承诺。
响应变化胜过遵循计划。 BDD 专注于持续沟通和协作,这有助于吸收变化。
广告

© . All rights reserved.