《Cucumber:行为驱动开发指南》——1.4 Cucumber如何工作

简介: Cucumber是一个命令行工具。运行时它会从普通语言编写的称为特性(feature)的文本文件中读取你的规格说明,解析需要测试的场景(scenario),然后针对你的系统运行这些场景以达到测试的目的。

本节书摘来自异步社区《Cucumber:行为驱动开发指南》一书中的第1章,第1.4节,作者:【英】Matt Wynne , 【挪】Aslak Hellesy著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.4 Cucumber如何工作

在深入本书的核心内容之前,我们先简要介绍一个典型的Cucumber测试集,以帮助你了解Cucumber是如何工作的。

Cucumber是一个命令行工具。运行时它会从普通语言编写的称为特性(feature)的文本文件中读取你的规格说明,解析需要测试的场景(scenario),然后针对你的系统运行这些场景以达到测试的目的。每个场景由一系列步骤(step)组成,Cucumber会一步步执行这些步骤。为了让Cucumber能理解特性文件,这些文件必须遵循一些基本的语法规则,这套语法规则就叫Gherkin。

除了特性文件,你还要为Cucumber提供一组步骤定义(step definition),它们是匹配特性文件中每个步骤的Ruby代码,业务语言描述的步骤行为都由这些步骤定义执行。在一个成熟的测试集中,这些步骤定义自身可能只包含一两行Ruby代码,具体的工作都代理给支持代码(support code)库来完成,应用程序领域特定的支持代码库知道如何执行系统的常见任务。通常这会涉及使用一个自动化库(automation library),例如浏览器自动化库Capybara,来与待测系统进行交互。

整个层次结构从特性往下至自动化库,具体如图1-1所示。

screenshot


图1-1 Cucumber测试栈

如果步骤定义中的Ruby代码执行无误,Cucumber就依次执行场景中的下一个步骤。如果场景的所有步骤执行都没有错误,那么Cucumber就将该场景标记为通过。但是,如果场景中任何一个步骤失败了,Cucumber就会将该场景标记为失败并转而执行下一个场景。运行场景的时候,Cucumber打印出相应的结果,告诉你它在干什么,以及它没干什么。

简单来说 Cucumber 就是这么一回事。但作为一个杰出的自动化验收测试框架,Cucumber 还有很多其他优点:你可以使用四十多种语言编写规格说明,可以使用标签(tag)把场景组织和归类,可以轻松集成大批高质量的 Ruby 自动化库,来驱动几乎任何种类的应用程序。随着阅读本书的其他部分,所有上述及更多的内容都将清晰地展现在你面前。

相关文章
|
自然语言处理 测试技术 数据库
|
测试技术 持续交付 数据库
|
测试技术
《Cucumber:行为驱动开发指南》——6.5 我们学到了什么
Cucumber特性对公司来说是一笔宝贵的财富。我们曾见过有团队将他们系统中大块大块的部分推倒重写,知道自己有一组准确的、可执行的规范来确保新的方案会运行得跟原来一样好,他们自不必担心什么。对这些团队来说,特性比产品代码本身更有价值。
1578 0
|
存储 Ruby
《Cucumber:行为驱动开发指南》——2.9 我们学到了什么
关于使用Cucumber由外向内开发这种方式,有一点我们非常喜爱,就是它能帮助我们保持注意力集中,我们可以让 Cucumber 指导自己一步步向前,直到完成工作,让我们把精力集中在如何创建一个优雅的解决方案上。
1405 0
|
测试技术 Ruby
《Cucumber:行为驱动开发指南》——导读
从一个失败的Cucumber测试开始,然后通过这种失败来驱动应用代码的开发工作,作为一种由外向内的开发方法的一部分,我们已经用Cucumber取得了极大的成功。作为开发人员,这种工作方式能让我们实事求是,一步一个脚印,避免我们想当然地开发将来也许有需求但当前没有需求的功能。
2618 0
|
前端开发 程序员 数据安全/隐私保护
《Cucumber:行为驱动开发指南》——6.2 同心协力
这个场景中有很多细节:有主要角色Dave的用户名和密码,还有另一个用户Sue的用户名和密码。用户名非常有用,因为它们有助于场景故事的描述,而密码就是噪音了:用户密码与被测内容毫无关系,事实上却让测试更难读懂。比如,Sue的密码跟Dave不同。
1881 0