android UI自动化测试工具Robotium VS NativeDriver VS Calabash

http://kongqingyun123.blog.163.com/blog/static/6377283520126294029822/

自从上次对Robotium和nativedriver这两个工具做对比已经过去将近一年的时间了(上次内容见http://kongqingyun123.blog.163.com/blog/static/637728352011614111010446/),一年时间对于一个开源的工具来说变化肯定是很多的。同时很多当初对于工具的看法也会有些不同,当初选择了NativeDriver来做一些手机上的自动化测试,但是在后续的使用过程中也发现了一些问题,现在主要是在用Robotium来写一些测试用例。

Robotium:
http://code.google.com/p/robotium/
当前已经发布了最新的3.3版本,robotium的社区还是挺活跃的,会有很多人提问题,以及帮助你解决问题。可以加入groups,http://groups.google.com/group/robotium-developers 
先简单说一下后面使用robotium的原因。
1、支持滑动操作,测试项目中很多地方只能通过滑动屏幕来实现,robotium支持,但是nativedriver不支持
2、robotium支持获取toast的,nativedriver不支持
3、关于robotium需要为应用重签名的问题,这个其实问题不大,实现的话也比较简单,完全可以实现自动化来实现,windows下自动化为应用重签名的bat脚本可以参考http://kongqingyun123.blog.163.com/blog/static/63772835201243143159515/
4、关于之前说的api中很多都使用index索引的问题,其实robotium也提供了通过R.java文件中的id来获取元素,不过前提是你能够获取到被测应用的R.java文件,我们测试自己公司的应用,可以方便的让开打打包时也保留一份和apk匹配的R.java文件即可
通过View button = solo.getView(R.id.button) ;  solo.clickOnView(button ); 来实现,只要开发不更改空间id的名称,每次只需要使用最新的R.java文件覆盖即可,对于后续的测试用例维护会方便一些。


当然每个工具你在使用的过程中也会发现一些不好用的地方:
关于下面的具体实习方式,后续写一篇文章介绍一些我们基于Robotium的用例,外围在PC端写了一套框架来解决这些问题,同时可以通过简单的配置来实现自动化的运行不同版本模拟器上的自动测试。
关于PC端的框架可以实现原理可以参考:http://kongqingyun123.blog.163.com/blog/static/63772835201262534056673/
1、robotium在运行测试用例的时候有时候会crash,直接导致测试停止,然后你的测试结果也收集不到了。
关于这个问题个人的解决方案是运行测试用例的时候通过cmd发送adb shell am instrument 命令, 每次只执行一个测试用例,然后通过获取cmd的返回值来判断是否是crash了,如果crash的话则重跑用例
2、测试用例运行不稳定的问题
有时候你用例写完了没有问题,但是在模拟器上跑的时候还是偶尔的会出现运行失败,当前的解决方案也是按照测试结果返回值获取检测到失败则继续重跑,当前定义的重跑三次。(这里使用了一个开源的android-junit-report工具)
3、不支持WebView控件。(Robotium不支持,Calabash支持)



NativeDriver:
http://code.google.com/p/nativedriver/
具体查看这里http://kongqingyun123.blog.163.com/blog/static/637728352011614111010446/
Nativedriver是google日本的团队开发的,但是团队人员已经去做其它项目,所以NativeDriver基本上已经是不更新了,社区的活跃度也已经是很低。nativedriver存在的一些bug估计也都还没有修复掉。


Calabash:

https://github.com/calabash
calabash-android是Robotium+cucumber实现的,最底层还是用的robotium,加入了对于WebView的支持
这个工具刚开源不久,社区还是挺活跃的,有问题提问的话开源的作者也会很积极的帮助你解决。
该工具的具体效果如果还没实践过,不过支持android和IOS,以及使用cucumber的方式来编写测试用例还是会比较感兴趣,另外还支持webview控件

转载于:https://www.cnblogs.com/ivan240/p/3186375.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ 1228 Grandpa's Estate --深入理解凸包

题意: 判断凸包是否稳定。 解法: 稳定凸包每条边上至少有三个点。 这题就在于求凸包的细节了,求凸包有两种算法: 1.基于水平序的Andrew算法 2.基于极角序的Graham算法 两种算法都有一个类似下面的语句: for(int i0;i&…

赵强老师免费公开课第一季:Hadoop的背景起源

标签:免费直播课 Hadoop 大数据 赵强原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://51edu.blog.51cto.com/8899635/1897555 Hadoop大数据免费公开课招募啦~~~赵强…

.NET Windows服务应用程序

此文旨在记录个人对windows服务的理解以及学习记录,高人可以直接绕行。 1.Windows 服务体系结构 http://technet.microsoft.com/zh-cn/library/aa998749(vexchg.65).aspx Windows 服务(也称服务应用程序)是无论用户是否登录都运行在 Windows …

io流技术java_技术文章-java中的IO流

1.File类Java中对文件有操作时,可以实例化一个File对象,将文件路径利用这样的形式赋给File对象。File f new File(filePath);File类的基本操作包括:判断是否存在:f.exists()获取文件名:f.getName()获取其绝对路径&…

bootstrap-代码-内联代码

说明通过 <code> 标签包裹内联样式的代码片段示例<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"view…

java类似php魔术方法_PHP与类有关的几个魔术方法

与类有关的其他魔术方法序列化与反序列化技术含义&#xff1a;序列化&#xff1a;就是将一个变量所代表的“内存”数据&#xff0c;转换为“字符串”形式并持久保存在硬盘上的一种做法。反序列化&#xff1a;就是将序列化之后保存在硬盘上的“字符串数据”&#xff0c;恢复为其…

IIS ARR设置HTTP跳转到HTTPS

GUI Version - Select the website you wish to configure- In the “Features View” panel, double click URL Rewrite You will notice there are currently no rules configured for this site. Click “Add Rules…” in the Actions menu to the right of the “Features…

2013.7.15DAY2

今天自己做了炸土豆 吼吼~ 才知道鸡蛋和小麦粉一起弄成浆糊涂到土豆条上炸效果很好~不过做失败了一些啦 失败的就用青椒炒着吃。。。。 下午准备做冰品来着。。。结果快递都到了特别忙。。。就只弄了杯冰啤酒。。。 虐了两道水题&#xff0c;贴上代码。。过于水了。。。 Descri…

AutoCAD.NET API 最新(2012)教程下载及在线视频教程DevTV

Autodek最近发布了基于最新版的AutoCAD 2012的.net API开发教程。基本内容包括&#xff1a; Overview of .NETPlugin BasicsUser InteractionDatabase fundamentalsDictionariesUser InterfaceEventsInputPoint MonitorJigs现在就可以从AutoCAD开发者中心下载&#xff0c; 看图…

inherits java_JAVA内部类和组合的区别

Why inner classes?At this point you’ve seen a lot of syntax and semantics describing the way inner classes work, but this doesn’t answer the question of why they exist. Why did Sun go to so much trouble to add this fundamental language feature? Feedbac…

SQL Server里一些未公开的扩展存储过程

SQL Server里一些未公开的扩展存储过程 [转帖] 博客天地 www.inbaidu.comSQL Server里一些未公开的扩展存储过程 扩展存储过程&#xff08;xp&#xff09;是直接运行在SQL Server地址空间里的动态链接库&#xff0c;是通过使用SQL Server开放数据服务API&#xff08;SQL Server…

Linux技巧:一次删除一百万个文件最快方法

昨天&#xff0c;我看到一个非常有趣的删除一个目录下的海量文件的方法。这个方法来自http://www.quora.com/How-can-someone-rapidly-delete-400-000-files里的Zhenyu Lee。 他没有使用find 或 xargs&#xff0c;他很有创意的利用了rsync的强大功能&#xff0c;使用rsync –de…

install python_python install on windows 10

图 1官网2、下载安装包&#xff1a;图 2 Downloads – windows图 3选择版本图 4选择离线安装版本图 5保存下载文件—文件名自己可以修改可能有人看到windows 几个版本&#xff0c;对几个版本有迷惑的地方&#xff0c;解释图 6几个版本的差异说明文字解释&#xff1a;An e…

iOS开发常见错误

错误1&#xff1a; 1.1这种错误都是storyboard有问题 解决&#xff1a;当前storyboard的Custom Class是MJViewController&#xff0c;代码中MJViewController继承自UITableViewController。 而storyboard目前提供的是UIViewController&#xff0c;并没有为MJViewController提供…

windows bat 批处理 !vm 合并快播文件

今天简单的写了一个bat批处理文件 用来处理快播的p2p的文件&#xff0c;一般回事这样的目录 你可以下载如下代码 echo off for /r %%a in (.) do (echo %%acd %%acopy /b *.!mv test.rmvb ) pause保存为merge.bat&#xff0c;就可以执行了 代码解释&#xff1a; 扫描该目录下的…

sso接口的调用

之前一直想sso接口已经写好了&#xff0c;登录注册功能是怎么调用的呢&#xff1f;原来在登录注册的jsp页面实现的接口的调用&#xff0c;页面的校验和验证功能在jsp页面即可实现。 注册页面&#xff1a; <% page language"java" contentType"text/html; cha…

java js获取css方法_5种JavaScript和CSS交互的方法

原标题&#xff1a;5种JavaScript和CSS交互的方法随着浏览器不断的升级改进&#xff0c;CSS和Java之间的界限越来越模糊。本来它们是负责着完全不同的功能&#xff0c;但最终&#xff0c;它们都属于网页前端技术&#xff0c;它们需要相互密切的合作。我们的网页中都有.js文件和…

(转)Http协议经典详解

转自&#xff1a;http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议&#xff0c;由于其简捷、快速的方式&#xff0c;适用于分布式超媒体信息系统。它于1990…

CentOS 同步时间

来源&#xff1a;http://www.ctusky.com/16/0497/ 用date查看系统当前时间&#xff0c;date -R 可查看时区。 CentOS 同步时间由ntp服务提供&#xff0c;可以用"yum install ntp -y"安装. 装完后运行命令 ntpdate cn.pool.ntp.org同步时间&#xff0c;然后hwclock -w…

[逆向][Writeup]ISG2015 flagfinder - .NET程序逆向

这个题目同样是一道.NET的逆向题&#xff0c;.NET的逆向方法在之前的博文中已经介绍过&#xff0c;这里不做重复的说明。本题的源程序可以在我的github上下载&#xff1a;https://github.com/gsharpsh00ter/reverse 0x01 逆向 flagfinder为.NET编译的PE文件&#xff0c;用dnSpy…