行为驱动开发(BDD)的流行已然无可逆转。它始创于 2003 年,由 Dan North 创立,与测试驱动开发相呼应。BDD 鼓励软件项目中的各种角色相互协作:开发人员、QA、非技术角色或者业务分析师。
Ruby 因其便于创建和使用 DSL 的特性,也带来了许多 BDD 框架的诞生,如 RSpec 。 Aslak Hellesøy 的作品 Cucumber 也是其中一例,它可以用来测试 Java、.NET 和 Flex 代码。也可以读取纯文本文件,执行自动化功能测试。
下面是一个典型的场景示例(来自于项目的 Wiki ):
复制代码
Feature: Search courses In order to ensure better utilization of courses Potential students should be able to search for courses Scenario: Search by topic Given there are 240 courses where neither has the topic "biology" And there are 3 courses A,B,C that each have "biology" as one of the topics When I search for "biology" Then I should see a the following courses: | title | | A | | B | | C |
然后就可以用真实的代码来实现这段话,在测试失败中不断迭代直至最后成功。Cucumber 还支持把场景中失败或者成功的部分加以高亮显示(下面是 Cucumber 网站上的一张图片):
编写 Cucumber 文件的语言是 Gherkin ,它可以附着于各种自然语言之上,它的关键字就是“Given”、“And”等等这样的字眼,另外还可以用法语、德语等等语言来写。用户编写好每一步的定义以后,Cucumber 就会一步一步的解析关键字右侧的自然语言并执行代码。
应用Cucumber 的方式有很多,例如给系统管理员用作Web 应用的集成测试,或者将分布式系统集成并测试消息机制,又或者编写PDF 的测试。
Cucumber 的 0.1.16 版本可以做为 Ruby Gem 下载,0.1.99.10 版本可以在 GitHub 上获取。
评论