Behave驱动开发 - 简介


Behave驱动开发(BDD)是一种最初源于测试驱动开发(TDD)的软件开发过程。

负责 BDD 发展的 Dan North 表示,“BDD 正在使用多个级别的示例来创建共同的理解并消除不确定性,以交付重要的软件。”

BDD 使用示例来说明系统的Behave,这些示例以参与开发的每个人都可读且易于理解的语言编写。这些例子包括 -

  • 转换成可执行的规范。

  • 用作验收测试。

BDD——主要特点

Behave驱动开发的重点是 -

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

  • 一个系统应该做什么而不是如何实施。

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

  • 不仅验证软件的运行情况,还验证它是否满足客户的期望。

BDD的起源

如果没有在正确的时间检测到缺陷并在检测到缺陷时进行修复,则修复缺陷的成本会成倍增加。考虑以下示例。

BDD的起源

这表明,除非正确获得需求,否则在后期修复因误解需求而导致的缺陷将是昂贵的。此外,最终产品可能无法满足客户的期望。

当前需要的是一种开发方法 -

  • 是根据要求来的。

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

  • 确保满足要求。

能够满足上述需求的一种开发方法就是BDD。因此,Behave驱动的发展 -

  • 得出系统不同预期Behave的示例。

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

  • 通过对话的方式不时获得客户认可的示例。

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

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

BDD实践

BDD 的两个主要实践是 -

  • 示例规范 (SbE)

  • 测试驱动开发 (TDD)

举例说明

示例规范 (SbE) 使用对话中的示例来说明业务规则和要构建的软件的Behave。

示例需求说明使产品所有者、业务分析师、测试人员和开发人员能够消除对业务需求的常见误解。

测试驱动开发

在 BDD 背景下,测试驱动开发将示例转化为人类可读、可执行的规范。

开发人员使用这些规范作为实现新功能增量的指南。这样就形成了精简的代码库和一套自动回归测试,可以在软件的整个生命周期中保持较低的维护成本。

敏捷BDD

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

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

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

  • 产品所有者指定他们期望系统的Behave。

  • 开发商

    • 用这些Behave细节填写规范。

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

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

敏捷宣言和 BDD

敏捷宣言指出以下内容 -

我们通过实践并帮助他人开发软件,从而发现更好的软件开发方法。通过这项工作,我们认识到了价值 -

  • 个人和互动- 优于流程和工具

  • 工作软件- 综合文档

  • 客户协作- 胜过合同谈判

  • 响应变化——而不是遵循计划

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

BDD 与敏捷宣言保持一致,如下所示:

敏捷宣言 BDD对齐
个人以及流程和工具上的交互。 BDD 是关于对话。
工作软件胜过全面的文档。 BDD 专注于让创建具有商业价值的软件变得容易。
客户协作胜过合同谈判。 BDD专注于基于想法的场景,随着开发的进展不断与客户沟通。它不是基于任何承诺。
响应变化而不是遵循计划。 BDD 注重持续的沟通和协作,以促进吸收变化。