📅  最后修改于: 2021-01-18 05:35:54             🧑  作者: Mango
Cucumber是支持可执行规范,测试自动化和Living文档的工具。
行为驱动开发通过示例扩展了规范。它还规范了测试驱动开发的最佳实践,尤其是从外而内进行工作的观点。开发工作基于可执行规范。
可执行规范的主要功能如下-
可执行的规格是-
从代表系统行为的示例派生。
与所有参与开发的人员(包括业务和利益相关者)合作编写。
基于验收标准。
基于可执行规范的验收测试是自动化的。
使用一种共享的无处不在的语言来编写可执行的规范和自动测试,以便-
在整个开发过程中都使用领域特定的术语。
包括客户和利益相关者在内的每个人都以相同的方式谈论系统,其要求及其实施。
相同的术语用于讨论需求,设计文档,代码,测试等中存在的系统。
任何人都可以阅读和理解需求以及如何生成更多需求。
更改很容易适应。
实时文档得到维护。
Cucumber将可执行规范与系统的实际代码和自动验收测试联系在一起,从而为该过程提供了帮助。
实际上,这样做的目的是让客户和开发人员一起工作。当验收测试通过时,表示它所代表的系统行为规范已正确实施。
考虑以下示例。
功能-注册
注册应该快速友好。
方案-成功注册
新用户应收到确认电子邮件并亲自打招呼。
鉴于我已选择注册。
当我使用有效的详细信息进行注册时。
然后,我应该收到一封确认电子邮件。
我看到一个个性化的问候信息。
从这个例子中,我们可以看到-
验收测试是指功能。
功能由场景说明。
方案包括步骤。
该规范以自然语言编写在纯文本文件中,但是可以执行。
Cucumber是一种命令行工具,用于处理包含功能的文本文件,以查找可以针对您的系统执行的方案。让我们了解黄瓜的工作原理。
它利用了一系列有关文件的命名方式以及它们位于何处(各自的文件夹)的约定,使入门变得容易。
Cucumber使您可以将规格,自动化测试和文档保留在同一位置。
每个方案都是描述该方案的前提条件,操作和后置条件的步骤的列表。如果每个步骤的执行没有任何错误,该方案将标记为已通过。
运行结束时,Cucumber将报告已通过多少个方案。
如果某件事失败,它会提供有关失败原因的信息,以便开发人员可以继续前进。
在Cucumber中,功能,场景和步骤以称为Gherkin的语言编写。
小黄瓜是具有结构的纯文本英语(或60多种其他语言之一)。 Gherkin易于学习,其结构使您可以简洁地编写示例。
黄瓜执行包含以Gherkin编写的可执行规范的文件。
Cucumber需要“步骤定义”,以将纯文本的“小黄瓜步骤”转换为将与系统交互的动作。
当Cucumber在场景中执行步骤时,它将寻找要执行的匹配步骤定义。
步骤定义是一小段代码,上面附加了一个模式。
该模式用于将“步骤定义”链接到所有匹配的步骤,并且代码是Cucumber看到小黄瓜步骤时将执行的代码。
每个步骤都有一个“步骤定义”。
大多数步骤将收集输入,然后委派给特定于您的应用程序域的框架,以便在您的框架上进行调用。
Cucumber支持十几种不同的软件平台。您可以选择适合您的Cucumber实现。每个Cucumber实施都提供相同的总体功能,并且它们还具有自己的安装过程和特定于平台的功能。
黄瓜的关键是步骤和步骤定义之间的映射。
下面给出的是黄瓜实现。
Ruby/JRuby | |
JRuby (using Cucumber-JVM) | |
Java | |
Groovy | |
.NET (using SpecFlow) | |
JavaScript | |
JavaScript (using Cucumber-JVM and Rhino) | |
Clojure | |
Gosu | |
Lua | |
PHP (using Behat) | |
Jython | |
C++ | |
Tcl |
以下是框架的实现。
Ruby on Rails | |
Selenium | |
PicoContainer | |
Spring Framework | |
Watir |