一、行为驱动开发(BDD)简介
- 什么是行为驱动开发
行为驱动开发 (BDD) 是一种源自测试驱动开发 (TDD) 方法的测试方法。在 BDD 中,测试工作主要基于系统行为。这种方法定义了基于其行为开发功能的各种方,在大多数情况下,用“Given-When-Then”的方法用于编写测试用例。举个例子来:
-Given: 用户输入了有效的登录凭据
-When: 当用户点击登录按钮时
-Then: 显示验证成功消息
如上所示,该行为以一种非常简单的自然语言进行了说明,也称为共享语言。这有助于团队中负责开发的每个人包括开发人员、测试人员、业务人员,甚至客户/用户了解新的需求的功能行为。
图1 典型的行为驱动开发操作图
2. 行为驱动开发方法的优势
- 通过使用非技术语言,即自然语言/共享语言帮助覆盖更广泛的受众;
- 从客户和开发人员的角度关注要实现的系统功能的行为方式;
- BDD 是一种具有成本效益的技术,即,用较低的成本,比如沟通成本,来换取明确的需求理解;
- 可以减少生产上发现和验证缺陷所需的工作量。
3. 行为驱动开发如何在 SDLC 中提供帮助
在开发生命周期的后期调试错误通常被证明成本是指数级上升的。在大多数情况下,对需求的理解不明确是其背后的根本原因。需要确保所有开发工作始终朝着满足预定要求的方向发展。 BDD允许开发人员通过以下方式执行上述操作:
- 允许使用简单的共享语言以标准方法定义需求;
- 提供多种方式来说明现实世界的场景以了解需求;
- 提供一个平台,使技术和非技术团队能够协作了解需求。
二、行为驱动开发框架-Cucumber框架
- 什么是Cucumber框架
Cucumber是典型的BDD框架,是一个用 Ruby 编写的开源软件测试工具,能够编写任何人都可以轻松理解的测试用例,其本质上是通过“正则表达式”,将自然语言与代码函数做映射关联。
Cucumber 用于执行用“Gherkin”语言编写的自动化验收测试。 Gherkin是一种用于行为描述的领域特定语言,而且具有商业可读性。
2. Cucumber自动化测试的两个文件
Cucumber 测试自动化利用了两个重要文件--
- 功能文件(Feature file):包含用 Gherkin 编写的代码(纯英文文本)。
图2 功能文件示意图
2. 步骤定义文件(Step define file): 包含开发人员编写的实际代码。
图3 步骤定义文件示意图
3. 行为驱动开发使用Cucumber的优势
- 专注于定义“行为”而不是定义“测试”;
- 加强跨职能产品团队成员之间的沟通;
- 通过使用非技术语言帮助覆盖更广泛的受众;
- 使测试人员能够从开发人员和客户的角度了解系统应如何执行;
- 代码质量的提高降低了维护成本,也将项目的相关风险降至最低。