行为驱动开发 - 简介

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

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

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

  • 转换为可执行规范。

  • 用作验收测试。

BDD – 主要功能

行为驱动开发重点关注−

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

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

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

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

BDD 的起源

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

BDD 的起源

这表明,除非正确获得需求,否则后期修复因误解需求而产生的缺陷的成本将会很高。 此外,最终产品可能无法满足客户的期望。

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

  • 基于要求。

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

  • 确保满足要求。

能够满足上述需求的一种开发方法是BDD。 因此,行为驱动开发 −

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

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

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

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

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

BDD 实践

BDD 的两个主要实践是 −

  • 示例规范 (SbE)

  • 测试驱动开发 (TDD)

示例说明

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

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

测试驱动开发

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

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

敏捷 BDD

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

以下步骤在Agile BDD中执行 −

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

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

  • 开发人员

    • 用这些行为详细信息填写规范。

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

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

敏捷宣言和 BDD

敏捷宣言陈述了以下内容 −

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

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

  • 工作软件 − 全面的文档

  • 客户协作 − 合同谈判

  • 响应变化 − 遵循计划

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

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

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