行为驱动开发 - Cucumber

Cucumber 是一个支持可执行规范、测试自动化和实时文档的工具。

行为驱动开发扩展了示例规范。 它还正式确定了测试驱动开发的最佳实践,特别是从外到内的工作视角。 开发工作基于可执行的规范。

可执行规范的主要特征如下 −

  • 可执行规范是 −

    • 源自代表系统行为的示例。

    • 由所有参与开发的人员(包括企业和利益相关者)合作编写。

    • 基于验收标准。

  • 基于可执行规范的验收测试是自动化的。

  • 使用一种共享的、普遍存在的语言来编写可执行规范和自动化测试,以便 −

    • 在整个开发过程中使用领域特定术语。

    • 每个人,包括客户和利益相关者,都以同样的方式谈论系统、其要求及其实施。

    • 相同的术语用于讨论需求、设计文档、代码、测试等中存在的系统。

    • 任何人都可以阅读和理解需求以及如何生成更多需求。

    • 可以轻松适应更改。

    • 维护实时文档。

Cucumber 有助于此过程,因为它将可执行规范与系统的实际代码和自动验收测试联系在一起。

它这样做的方式实际上是为了让客户和开发人员一起工作。 当验收测试通过时,意味着它所代表的系统行为规范已被正确实现。

典型的 Cucumber 验收测试

考虑以下示例。

功能 − 注册

  • 注册应该快速且友好。

  • 场景 − 注册成功

    • New(新)用户应该会收到一封确认电子邮件并受到亲自问候。

    • Given(鉴于)我已选择注册。

    • When(当)我使用有效详细信息注册时。

    • Then(那么)我应该会收到一封确认电子邮件。

    • And(而且)我应该看到一条个性化的问候消息。

从这个例子中我们可以看出 −

  • 验收测试参考功能

  • 功能通过场景进行解释。

  • 场景由步骤组成。

该规范以自然语言编写在纯文本文件中,但它是可执行的。

Cucumber 的工作原理

Cucumber 是一个命令行工具,它处理包含功能的文本文件,寻找可以针对您的系统执行的场景。 让我们了解一下 Cucumber 的工作原理。

  • 它使用了一系列有关文件命名方式和文件所在位置(相应文件夹)的约定,以方便入门。

  • Cucumber 可让您将规范、自动化测试和文档保存在同一位置。

  • 每个场景都是一个步骤列表,描述该场景的先决条件、操作和后置条件; 如果每个步骤执行时没有任何错误,则场景标记为通过。

  • 运行结束时,Cucumber 将报告通过了多少个场景。

  • 如果出现故障,它会提供有关失败原因的信息,以便开发人员可以继续进行。

在 Cucumber 中,功能场景和步骤是用名为 Gherkin 的语言编写的。

Gherkin 是具有结构的纯文本英语(或 60 多种其他语言之一)。 Gherkin 易于学习,其结构允许您以简洁的方式编写示例。

  • Cucumber 执行包含用 Gherkin 编写的可执行规范的文件。

  • Cucumber 需要步骤定义来将纯文本 Gherkin 步骤转换为与系统交互的操作。

  • 当 Cucumber 执行场景中的步骤时,它将查找匹配的步骤定义来执行。

  • 步骤定义是一小段带有附加模式的代码。

  • 该模式用于将步骤定义链接到所有匹配的步骤,代码是 Cucumber 在看到 Gherkin 步骤时将执行的代码。

  • 每个步骤都附有一个步骤定义。

  • 大多数步骤将收集输入,然后委托给特定于您的应用程序域的框架,以便在您的框架上进行调用。

Cucumber 支持十多种不同的软件平台。 您可以选择适合您的 Cucumber 实现。 每个 Cucumber 实现都提供相同的整体功能,并且它们还有自己的安装过程和特定于平台的功能。

映射步骤和步骤定义

Cucumber 的关键是步骤和步骤定义之间的映射。

映射步骤

Cucumber 实现

下面给出的是 Cucumber 实现。

框架集成

下面给出的是框架实现。