注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风之云的足迹

点击这里添加博客描述

 
 
 

日志

 
 

[转]cucumber行为驱动开发框架在自动化测试中的应用  

2011-12-25 23:04:14|  分类: 软件测试 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转载:http://17test.info/?p=290

cucumber的官方网站: http://cukes.info/

有时间在自动化测试中尝试一下。先转载一篇文章记录一下。

很多人在做自动化测试的时候会产生一个疑问,如何让我们的test case和script产生联系?运行一轮自动化脚本以后,如何告诉看不懂script的客户或者开发,你的自动化测试都做了哪些事情?下面将会给大家介绍一款新的工具:cucumber(黄瓜)。
cucumber是一款基于BDD的测试工具,它一方面通过文字描述测试行为,告诉开发和客户test case是如何进行的,另一方面通过关键字驱动和正则表达式匹配告诉scripts去做哪些事情,在运行自动化测试结束以后,会给出详细的report告 诉用户和测试人员,当前测试有哪些步骤,哪些场景,哪些行为得到了执行,多少成功,多少失败,总共耗时多少,甚至一个表格中的一个测试数据没有执行到,都 会以显著的颜色标注出test case的第几行出错,对应的script第几行出错。如此以来,无论是不懂代码的客户还是脚本编写人员都可以直观的寻找自己想要的结果。
cucumber的官方网站是http://cukes.info/, 由于它的实现语言是ruby,所以它也是rubygems庞大家族的一份子,安装命令很简单:gem install cucumber。目前cucumber可以和诸多语言开发的程序进行工作,比如ruby,java,.net,flex等等开发的程序进行工作,并且支 持多达30多种语言的描述方式。
cucumber的识别文件是.feature格式的,当然它可以阅读文本文件,使用.txt文件保存场景文件也可以识别,当然我们建议使 用.feature格式的文件以便它更快的解析。feature文件中的文字描述必须以cucumber指定的关键字开头,如果不加关键字则默认为注释。 文件的默认语言是English,当然如果你想用中文来编写用例,则只需要在feature文件的首行加上# language: zh-CN,如果你的文件想用法语编写,则加# language: fr 诸如此类,更多语言可以运行cucumber –i18n help查看。我们先给一个简单的例子:
Feature: Search
In order to learn more
As an information seeker
I want to find more information

Scenario: Find what I’m looking for
Given I am on the Google search page
When I search for “cucumber github”
Then I should see
“”"
written in Ruby
“”"
上面的代码是Feature文件的一个例子,红色表示文件的开头,注意这里必须以Feature 开头。绿色部分 由于没有关键字,会被认为是注释部分不执行,但是会打印在report上。蓝色部分是我们test  case的主体部分,每一个scenario代表着 一条case,Scenario:后面的部分是当前case要做什么的描述。Given,When,Then这三个关键字描述的分别是case的前置步 骤,具体操作,期望结果。那么这条case的解读方式应该是:首先我打开谷歌的搜索页面,当我搜索“cucumber github”,这时我应该看到“witten in Ruby”的搜索结果。这个不难理解吧?如果这三个关键字不能完整表达你的描述,可以加And,比如:
Given ****
And ****
When ****
And ****
Then ****
保存好Feature文件以后,那么这部分是给不懂代码的客户或者手工测试人员去阅读的,这个和平常设计的test case没有太大差别,最多就是前面加几个关键字。下面给大家介绍几个cucumber最常用的关键字,分别是:
Feature:文件开头的关键字,不加的话cucumber无法识别该文件。
Background:这个关键字表示下面描述的step会在每个Scenario运行之前运行一次。
Scenario:场景关键字,也是每个test case的单位
Scenario Outline:该关键字必须和下面的Examples或者Scenarios结合起来用,后面会说到具体用法。
Examples/Scenarios:这两个关键字下面通常跟的是一个table,里面存放各种测试数据,我们会在运行step的时候调用里面的数据作为参数传到script中。
Given,When,Then,And,But这几个关键字和上面的关键字有所不 同,它们不会影响 Feature文件运行的顺序,只是起到帮助阅读的作用。Scenario和Scenario Outline都是test case的单位,他们的区别在于,Scenario执行的时候,是从Given开始,到Then结束一轮测试,而Scenario Outline则会根据下面跟的Examples或者Scenarios中的table的行数来决定执行多少次从Given到Then的循环,比如 Examples下面的table有4行,那么Scenario Outline会执行4次从Given到Then的循环(table首行默认为列名,不包含在4次之内)。他们各有各的好处,读者可以根据自己想做的事情 自己体会。
当掌握了关键字的特性以后,大家就可以自己尝试编写一个Feature文件,然后在命令行下面运行一下,运行的命令是:cucumber Feature文件名。比如Feature文件名是test.feature,命令是cucumber test.feature,记住要在test.feature保存的路径下运行,否则文件名前面要加具体路径。如果想看看report是什么样子,可以运行命令:cucumber -f pretty -f html -o report.html test.feature。如果提示warning,看不到报告的颜色,可以根据warning的提示到对应地址下载工具安装。

  评论这张
 
阅读(1554)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018