Behave驱动开发 - Cucumber


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

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

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

  • 可执行的规范是 -

    • 来自代表系统Behave的示例。

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

    • 基于验收标准。

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

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

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

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

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

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

    • 可以轻松适应变化。

    • 维护实时文档。

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

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

典型的Cucumber验收测试

考虑以下示例。

功能 - 注册

  • 注册应该快速且友好。

  • 场景 - 成功注册

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

    • 既然我选择了报名。

    • 我使用有效的详细信息注册时。

    • 然后我应该会收到一封确认电子邮件。

    • 应该会看到一条个性化的问候语。

从这个例子中,我们可以看到 -

  • 验收测试参考功能

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

  • 场景由步骤组成。

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

Cucumber的加工

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

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

  • Cucumber 允许您将规范、自动化测试和文档保存在同一个地方。

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

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

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

在 Cucumber 中,FeaturesScenarios和 Steps 是用一种称为Gherkin的语言编写的。

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

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

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

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

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

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

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

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

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

映射步骤和步骤定义

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

绘图步骤

Cucumber实施

下面给出的是 Cucumber 实现。

框架整合

下面给出了框架的实现。