android测试框架对比
2015-08-13 09:34
309 查看
转自: http://www.yangrong.me/?p=15
最近花了一些时间来调研android的测试框架,除了需要适合做UI测试,还需要保证选取的框架有以下几点特性:
工具开源,易于扩展。
脚本编写简洁,维护成本低。
满足客户端的自动化需求。
便与校验结果的正确性。
可用于持续集成。
目前较热门的开源框架有:Android APIs提供的Instrumentation类、MonkeyRunner、Robotium、Athrun、Appium、UIAutomator等
Instrumentation类:http://developer.android.com/reference/android/app/Instrumentation.html
Android APIs提供
UI层的自动化
跨进程受到android进程安全限制
扩展后的框架:Robotium, Athrun等
Robotium:http://code.google.com/p/robotium/
基于instrumentation实现,提供的接口可以满足大部分自动化需求,使用方法简单
支持手势、webview、截图等操作
支持Remote Control方式
支持ant、maven打包,与jenkins结合较好
资料丰富,社区活跃,更新频繁
签名问题,待测App和测试App必须使用相同签名
通过solo对象提供操作方法,面向对象方面较差
不支持跨应用测试,Android进程安全限制
Athrun(TMTS):http://code.taobao.org/p/athrun/wiki/index/
淘宝的自动化测试框架,比较小众化,相关资料较少
提供通过id查找所有控件方法,控件对象提供操作方法
不支持Remote Control
不支持跨应用测试
Appium:http://appium.io/
使用WebDriver JSON wire protocol支持iOS和Android的UI测试
支持非常多种语言编写测试脚本
Android SDK Level在16及以上时,底层使用的UIAutomator,低于16使用Selendroid
Monkeyrunner:<http://developer.android.com/tools/help/MonkeyRunner.html”>
Android SDK提供
python脚本,使用monkeyrunner test.py来执行
结果的验证是通过截屏比对图片来实现,验证方式不够灵活
UIAutomator:http://developer.android.com/tools/help/uiautomator/index.html
Android提供的框架,支持SDK level 16及以上
打包成jar后push到模拟器中运行,调试相对Robotium不便(其实自己稍微封装下也还OK)
支持跨进程测试!!!这一点比起Robotium来说非常赞
手势操作较少(不过4.3已经提供了不少手势操作啦,还木有试用)
基于Junit 3, 相对于Junit4, Testng等测试框架,Junit 3不具备许多功能(不过看到过Google的开发人员说有打算往Junit4上发展)
不支持WebView
没有测试结果报告文件
最后综合考虑了一下,打算选用UIAutomator,毕竟是Google自己做的,又支持跨进程,我们待测的App也没有太多的webview,所以UIAutomator基本能满足我们的要求。
实际使用后,发现UIAutomator没有提供测试结果报告,这一点是硬伤啊…不过还是有解决办法的,把UIAutomator的输出重定向到一个文件中,再使用https://github.com/dpreussler/automator-log-converter转换成xml的测试报告。这样和jenkins集成后,测试结果就可以使用xUnit
Plugin展示出来啦~
最近花了一些时间来调研android的测试框架,除了需要适合做UI测试,还需要保证选取的框架有以下几点特性:
工具开源,易于扩展。
脚本编写简洁,维护成本低。
满足客户端的自动化需求。
便与校验结果的正确性。
可用于持续集成。
目前较热门的开源框架有:Android APIs提供的Instrumentation类、MonkeyRunner、Robotium、Athrun、Appium、UIAutomator等
Instrumentation类:http://developer.android.com/reference/android/app/Instrumentation.html
Android APIs提供
UI层的自动化
跨进程受到android进程安全限制
扩展后的框架:Robotium, Athrun等
Robotium:http://code.google.com/p/robotium/
基于instrumentation实现,提供的接口可以满足大部分自动化需求,使用方法简单
支持手势、webview、截图等操作
支持Remote Control方式
支持ant、maven打包,与jenkins结合较好
资料丰富,社区活跃,更新频繁
签名问题,待测App和测试App必须使用相同签名
通过solo对象提供操作方法,面向对象方面较差
不支持跨应用测试,Android进程安全限制
Athrun(TMTS):http://code.taobao.org/p/athrun/wiki/index/
淘宝的自动化测试框架,比较小众化,相关资料较少
提供通过id查找所有控件方法,控件对象提供操作方法
不支持Remote Control
不支持跨应用测试
Appium:http://appium.io/
使用WebDriver JSON wire protocol支持iOS和Android的UI测试
支持非常多种语言编写测试脚本
Android SDK Level在16及以上时,底层使用的UIAutomator,低于16使用Selendroid
Monkeyrunner:<http://developer.android.com/tools/help/MonkeyRunner.html”>
Android SDK提供
python脚本,使用monkeyrunner test.py来执行
结果的验证是通过截屏比对图片来实现,验证方式不够灵活
UIAutomator:http://developer.android.com/tools/help/uiautomator/index.html
Android提供的框架,支持SDK level 16及以上
打包成jar后push到模拟器中运行,调试相对Robotium不便(其实自己稍微封装下也还OK)
支持跨进程测试!!!这一点比起Robotium来说非常赞
手势操作较少(不过4.3已经提供了不少手势操作啦,还木有试用)
基于Junit 3, 相对于Junit4, Testng等测试框架,Junit 3不具备许多功能(不过看到过Google的开发人员说有打算往Junit4上发展)
不支持WebView
没有测试结果报告文件
最后综合考虑了一下,打算选用UIAutomator,毕竟是Google自己做的,又支持跨进程,我们待测的App也没有太多的webview,所以UIAutomator基本能满足我们的要求。
实际使用后,发现UIAutomator没有提供测试结果报告,这一点是硬伤啊…不过还是有解决办法的,把UIAutomator的输出重定向到一个文件中,再使用https://github.com/dpreussler/automator-log-converter转换成xml的测试报告。这样和jenkins集成后,测试结果就可以使用xUnit
Plugin展示出来啦~
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件