📜  行为驱动开发-简介

📅  最后修改于: 2021-01-18 05:32:32             🧑  作者: Mango


行为驱动开发(BDD)是最初源自测试驱动开发(TDD)的软件开发过程。

负责BDD演进的Dan North表示:“ BDD在多个级别上使用示例来建立共识,并在表面上产生不确定性,从而交付重要的软件。”

BDD使用示例向开发中涉及的每个人说明以可读和可理解的语言编写的系统行为。这些例子包括-

  • 转换为可执行规范。

  • 用作验收测试。

BDD –主要功能

行为驱动开发专注于-

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

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

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

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

BDD的起源

如果在正确的时间未检测到缺陷并在检测到缺陷时将其修复,则修复缺陷的成本将成倍增加。考虑以下示例。

BDD的起源

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

每小时的需求是一种开发方法,它-

  • 是根据要求。

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

  • 确保满足要求。

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

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

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

  • 通过对话获取与客户不时批准的示例。

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

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

BDD实践

BDD的两个主要做法是-

  • 实例说明(SbE)

  • 测试驱动开发(TDD)

举例说明

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

通过示例说明,产品所有者,业务分析人员,测试人员和开发人员可以消除对业务需求的常见误解。

测试驱动开发

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

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

敏捷BDD

在敏捷软件开发中,使用BDD方法可以对待处理的规范达成共识。

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

  • 开发人员和产品所有者在纯文本编辑器中共同编写待处理的规范。

  • 产品负责人指定他们期望从系统获得的行为。

  • 开发商

    • 用这些行为详细信息填充规格。

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

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

敏捷宣言和BDD

敏捷宣言指出以下内容-

我们正在探索通过开发和帮助他人来开发软件的更好方法。通过这项工作,我们实现了价值-

  • 个人和互动-通过流程和工具

  • 工作软件-全面的文档

  • 客户合作-通过合同谈判

  • 应对变化-遵循计划

也就是说,尽管右侧的项目有价值,但我们更重视左侧的项目。

BDD使自己符合敏捷宣言,如下所示:

Agile Manifesto BDD Alignment
Individuals and interactions over processes and tools. BDD is about having conversations.
Working software over comprehensive documentation. BDD focuses on making it easy to create software that is of business value.
Customer collaboration over contract negotiation. BDD focuses on scenarios based on ideas with continuous communication with the customer as the development progresses. It is not based on any promises.
Responding to change over following a plan. BDD focuses on continuous communication and collaboration that facilitates absorption of changes.