用 Cucumber 脚本做故事驱动开发

  • Sebastien Auvray
  • 李剑

2009 年 3 月 4 日

话题:Java敏捷Ruby语言 & 开发架构文化 & 方法

行为驱动开发(BDD)的流行已然无可逆转。它始创于 2003 年,由 Dan North 创立,与测试驱动开发相呼应。BDD 鼓励软件项目中的各种角色相互协作:开发人员、QA、非技术角色或者业务分析师。

Ruby 因其便于创建和使用 DSL 的特性,也带来了许多 BDD 框架的诞生,如RSpecAslak 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上获取。

查看英文原文Story Driven Development Recipes with Cucumber

Java敏捷Ruby语言 & 开发架构文化 & 方法