本篇介绍两个Android自带的测试框架:Monkey和MonkeyRunner
1.Monkey
Monkey是android自带的测试框架,通过向手机发送随机事件(手势,点击,输入)进行应用程序压力测试(可指定应用程序包名,也可以说是稳定性测试),测试应用程序的稳定性和健壮性;
使用步骤:
(1)进入adb shell
(2)cd /system/bin
然后执行monkey命令即可;
常用的monkey命令(网上借的图):
分析:
Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
(1)测试的对象仅为应用程序包,有一定的局限性。
(2)Monkey测试使用的事件流数据流是随机的,不能进行自定义。
(3)Monkey测试主要是根据像素点随机进行事件的触发,无法进行录制回放
(4)仅能作为辅助测试,还需其它框架进行应用程序的整体系统性测试
2.MonkeyRunner
脚本语言:Python
为什么使用Python语言编写脚本,参考
http://blog.csdn.net/robinzhou/article/details/6790098
在测试脚本中,要先取到device实例:device = MonkeyRunner.waitForConnection()
事件类型API:拖拽,输入和点击
(1)拖拽:device.drag(tuple start,tuple end,float duration,integer steps)
start:起始位置,为tuple类型的(x,y)坐标点
end:终点位置,为tuple类型的(x,y)坐标点
duration:拖拽手势持续时间,默认1.0s
steps:步数,默认为10
(2)输入:device.touch(x,y,DOWN_AND_UP)
device.type(“xxxx”)
device.press(“KEYCODE_ENTER”,”DOWN_AND_UP”)
(3)点击:device.touch(x,y,DOWN_AND_UP)
必备API:等待设备,启动应用,设置等待,安装、卸载应用
(1)等待设备: device = MonkeyRunner.waitForConnection(),设备连接是一切操作的前提,连接失败将不会继续后续操作
(2)安装、卸载应用:
安装:device.installPackage(String path)
卸载:device.removePackage(String package)
(3)启动应用:device.startActivity(package+”/”+activity)
(4)设置等待:MonkeyRunner.sleep(float seconds)
系统按键API:发送键值事件
device.press(String name,dictionary type)
String name:keycode名
dictionary type:key event类型(如DOWM,UP..)
例:device.press(“KEYCODE_MENU”,”DOWN_AND_UP”),弹出menu菜单
如何实现长按操作:device.drag((300,500),(300,500),3,10), 长按(300,500)三秒钟
图像处理API:截屏,图像保存,图像截取,对比
截屏:picture = device.takeSnapshot();
保存:device.writeToFile(String path,String format)
图像截取:
picture = device.takeSnapshot();
subpic = picture.getSubImage((x,y,w,h))
图像对比:
picture1 = device.takeSnapshot();
picture2 = device.takeSnapshot();
compare = picture1.sameAs(picture2,0.9)
0.9为匹配百分比,范围为0.0~1.0,默认为1.0,即必须全部匹配
compare返回ture/false,true则两张图片一致,false,不一致
分析:
MonkeyRunner相对于Monkey有了很大的进步:
(1)API调用更加明了,支持设备的唤醒,重启,支持应用程序的安装,卸载,启动;
(2)对三种基本事件类型处理API更简单
(3)特色是可以进行截屏,对进行图像对比,判断程序是否异常
(4)支持录制回放
(5)缺点是,一切事件类型都是基于像素点,稳定性太低,脚本维护性太低,与Monkey类似,只能作为辅助测试框架使用
本篇文章对Monkey和MonkeyRunner进行了使用说明和优缺点分析,下篇文章将重点介绍Instrumentation测试框架。