Behave驱动开发 - Cucumber
Cucumber 是一个支持可执行规范、测试自动化和实时文档的工具。
Behave驱动开发扩展了示例规范。它还正式确定了测试驱动开发的最佳实践,特别是从外到内的工作视角。开发工作基于可执行的规范。
可执行规范的主要特征如下 -
可执行的规范是 -
来自代表系统Behave的示例。
由所有参与开发的人员(包括企业和利益相关者)合作编写。
基于验收标准。
基于可执行规范的验收测试是自动化的。
使用一种共享的、普遍存在的语言来编写可执行规范和自动化测试,以便:
在整个开发过程中使用领域特定术语。
每个人,包括客户和利益相关者,都以同样的方式谈论系统、其需求及其实施。
相同的术语用于讨论需求、设计文档、代码、测试等中存在的系统。
任何人都可以阅读和理解需求以及如何生成更多需求。
可以轻松适应变化。
维护实时文档。
Cucumber 有助于此过程,因为它将可执行规范与系统的实际代码和自动验收测试联系在一起。
它这样做的方式实际上是为了让客户和开发人员一起工作。当验收测试通过时,意味着它所代表的系统Behave规范已被正确实现。
典型的Cucumber验收测试
考虑以下示例。
功能 - 注册
注册应该快速且友好。
场景 - 成功注册
新用户应该会收到一封确认电子邮件并受到亲自问候。
既然我选择了报名。
当我使用有效的详细信息注册时。
然后我应该会收到一封确认电子邮件。
我应该会看到一条个性化的问候语。
从这个例子中,我们可以看到 -
验收测试参考功能。
功能通过场景进行解释。
场景由步骤组成。
该规范以自然语言编写在纯文本文件中,但它是可执行的。
Cucumber的加工
Cucumber 是一个命令行工具,它处理包含功能的文本文件,寻找可以针对您的系统执行的场景。让我们了解一下 Cucumber 的工作原理。
它使用了一系列有关文件命名方式和文件所在位置(相应文件夹)的约定,以方便入门。
Cucumber 允许您将规范、自动化测试和文档保存在同一个地方。
每个场景都是一个步骤列表,描述场景的前置条件、操作和后置条件;如果每个步骤执行时没有任何错误,则该场景被标记为通过。
运行结束时,Cucumber 将报告通过了多少个场景。
如果出现问题,它会提供有关失败原因的信息,以便开发人员可以继续进行。
在 Cucumber 中,Features、Scenarios和 Steps 是用一种称为Gherkin的语言编写的。
Gherkin 是具有结构的纯文本英语(或 60 多种其他语言之一)。Gherkin 易于学习,其结构允许您以简洁的方式编写示例。
Cucumber 执行包含用 Gherkin 编写的可执行规范的文件。
Cucumber 需要步骤定义将纯文本 Gherkin 步骤转换为与系统交互的操作。
当 Cucumber 执行场景中的步骤时,它将查找匹配的步骤定义来执行。
步骤定义是一小段带有附加模式的代码。
该模式用于将步骤定义链接到所有匹配的步骤,而代码是 Cucumber 在看到 Gherkin 步骤时将执行的代码。
每个步骤都附有步骤定义。
大多数步骤将收集输入,然后委托给特定于您的应用程序域的框架,以便在您的框架上进行调用。
Cucumber 支持十多个不同的软件平台。您可以选择适合您的 Cucumber 实现。每个 Cucumber 实现都提供相同的整体功能,并且它们还有自己的安装过程和特定于平台的功能。
映射步骤和步骤定义
Cucumber 的关键是步骤和步骤定义之间的映射。
Cucumber实施
下面给出的是 Cucumber 实现。
Ruby/JRuby | |
JRuby(使用 Cucumber-JVM) | |
爪哇 | |
格罗维 | |
.NET(使用 SpecFlow) | |
JavaScript | |
JavaScript(使用 Cucumber-JVM 和 Rhino) | |
克洛尤尔 | |
吾须 | |
卢阿 | |
PHP(使用 Behat) | |
Jython | |
C++ | |
铊 |
框架整合
下面给出了框架的实现。