qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

BDD自动化测试利器-calabash(Android)篇(一)

我接触了当前市场上大多数的android端的自动化测试架构,也研究了一些偏门左道的一些测试工具,而当我见到calabash这套框架时,内心还是小小的开心了一下。

  优势

  先说一下calabash的优点,这样大家可能更有兴趣看下去:

  1.calabash是BDD驱动开发,编写自动化测试脚本比Robotium提高100%

  2.calabash是脚本与TC分离设计,在业务变化的情况下,只要功能存在基本只需要修改TC,在业务不变,功能变化的情况下,基本只需要修改脚本

  3.calabash既支持android也支持ios,真正实现了套脚本跨平台设备运行,小试了一把很酷

  4.calabash是支持扩展的,而且非常容易扩,当前也支持webview的脚本编写

  运行原理

  calabash-android架构其实与IOS是相同的,不过本篇只讲android,编写calabash架构的脚本,其实内部使用的是cucumber(cucumber是一种BDD测试框架,有兴趣的可以看看)这种核心为cucumber的calabash的脚本在运行测试的时候会在虚拟机/真机上预装一个web服务器,这个web服务器就是解释calabash的脚本,将其解释为robotium的脚本,然后这个web服务器会想测试app发送robotium的脚本,测试app拿到robotium脚本后,将其解释为instumentation命令向被测试的app发送这些命令,被测试的app执行这些命令,然后将结果返回给测试app,然后一级一级返得到最后的测试结果。

  结构框架

  calabash完全采用了cucumber的结构模式,给大家展示一下在命令行中展示出来的结构模式



  feature为主件夹,step_definitions内是你封装的脚本,my_first.feature文件就是你的TC逻辑。再看一下其中的内容:

  my_first.feature

  Feature: 登陆

  Scenario: 输入正确的用户名密码能够正常登陆

  When 打开登陆页面

  And    输入用户名XXX输入密码XXX

  And   点击登陆

  Then  验证登陆成功

  看起来很简单吧,想要验证其他功能也是类似的语言描述即可。如果你没有用过cucumber或者calabash那么你肯定现在有一个疑问,计算机怎么能识别汉字来进行测试的呢,那么看一下step_definition:

  以输入用户名XXX输入密码XXX为例:

When /^ 输入用户名\"([^\\\"]*)\" 输入密码\"([^\\\"]*)\"  $/ do |username,password|
performAction('enter_text_into_numbered_field',username,1)
performAction('enter_text_into_numbered_field',password,2)
end

  现在应该能明白为什么你需要写汉字的脚本就可以了吧。在这里解释一下为什么如果业务存在功能修改这种情况,自动化脚本的修改量会小,还是以这个登录脚本为例,加入现在输入用户名和密码的输入框顺序变了,在你的页面显示上,可能是从左下角移到中间了,这种变化,那么feature文件你不用改,只需要改step_definition脚本就好了。

  运行报告

  calabash-android支持很多报告生成模式,支持html,json,junit等等报告模式,只需要你在run的时候添加-f参数-o参数就可以了。

  例如 calabash-android run xxxx.apk -f html -o report.html,上图展示一下强大html报告

posted on 2013-07-31 10:31 顺其自然EVO 阅读(635) 评论(0)  编辑  收藏 所属分类: android


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年7月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜