Monkey测试
1、所有的事件都是随机产生的,不带任何人的主观性
2、测试的对象仅为应用程序包,有一定的局限性
3、Monky测试使用的事件数据流是随机的,不能进行自定义
4、可对MonkeyTest的对象,事件数量,类型,频率等进行设置
Monkey测试目的:
测试app 是否会是否会Crash(崩溃)
Monkey操作命令格式:
adb shell monkey {+命令参数}
参数:
1、参数: -p
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。
①指定一个包: adb shell monkey -p com.ibox.calculators 1000 (com.ibox.calculators是包名,1000是事件数)
②指定多个包:adb shell monkey -p com.htc.Weather –p com.ibox.calculators com.htc.photo.widgets 1000
③不指定包:adb shell monkey 100
要先获取包名:adb shell dumpsys window | findstr mCurrentFocus
2、参数: -v
用于指定反馈信息级别(信息级别就是日志的详细程度)
日志级别 :Level 0
如 adb shell monkey -p com.ibox.calculators –v 1000
说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息
日志级别:Level 1
如: adb shell monkey -p com.ibox.calculators –v -v 1000
说明:提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别:Level 2
如:adb shell monkey -p com.ibox.calculators –v -v –v 100
说明:最详细的日志,包括了测试中选中/未选中的Activity信息
看到:
解释:
注入事件:1000
:发送旋转度=0,持续=假
:掉落:键=0指针=7轨迹球=0翻转=0旋转=0
##:网络统计:运行时间=4706ms(移动0 ms,wifi 0 ms,未连接4706ms)
//猴子完成了
3、参数: –throttle
用于指定用户操作(即事件)间的时延,单位是毫秒(重要)
如:adb shell monkey -p com.ibox.calculators --throttle 3000 1000
4、参数: -s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的
如:
测试1:adb shell monkey -p com.ibox.calculators –s 10 1000
测试2:adb shell monkey -p com.ibox.calculators –s 10 1000
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值(即10),就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的
5、参数:–ignore-crashes–
用于指定当应用程序崩溃时(Force & Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成
如:adb shell monkey -p com.ibox.calculators --ignore-crashes 1000
测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止
6、参数:–ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成
如:adb shell monkey -p com.ibox.calculators --ignore-timeouts 1000
7、参数:–ignore-security-exceptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成
如:adb shell monkey -p com.ibox.calculators --ignore-security-exceptions 1000
8、参数:–pct-事件类别
11个事件百分比控制(有的是9种事件,没有–pct-pinchzoom,–pct-rotation事件)由安卓SDK决定
①–pct-touch {+百分比}
触摸,触摸事件泛指发生在某一位置的一个down-up事件,点击
如:adb shell monkey -p com.ibox.calculators --pct-touch 50 1000
②–pct-motion {+百分比}
动作,动作事件泛指从某一位置接下(即down事件)后经过一系列伪随机事件后弹出(即up事件)
如:adb shell monkey -p com.ibox.calculators --pct-motion 50 1000
③–pct-pinchzoom {+百分比}
二指缩放,智能机上的放大缩小手势操作事件
如:adb shell monkey -p com.ibox.calculators --pct-pinchzoom 50 1000
④–pct-trackball {+百分比}
轨迹,轨迹事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件
如:adb shell monkey -p com.ibox.calculators --pct-trackball 50 1000
⑤–pct-rotation {+百分比}
屏幕旋转,横屏竖屏事件
如:adb shell monkey -p com.ibox.calculators --pct-rotation 100 1000
⑥–pct-nav {+百分比}
基本导航,基本导航事件主要来自方向输入设备的上、下、左、右事件
如:adb shell monkey -p com.ibox.calculators --pct-nav 50 1000
⑦–pct-majornav {+百分比}
主要导航,主要导航事件通常指引发图形界面的一些动作,如键盘中间按键、返回按键、菜单按键等
如:adb shell monkey -p com.ibox.calculators --pct-majornav 50 1000
⑧–pct-syskeys {+百分比}
系统按键,系统按键事件通常指仅供系统使用的保留按键,如HOME键、BACK键、拨号键、挂断键、音量键等
如:adb shell monkey -p com.ibox.calculators --pct-syskeys 50 1000
⑨–pct-appswitch {+百分比}
应用启动,应用启动事件(activity launches)即打开应用,通过调用startActivity()方法最大限度地开启该package下的所有应用
⑩–pct-flip {+百分比}
翻转,键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回
如:adb shell monkey -p com.ibox.calculators --pct-flip 50 1000
⑪–pct-anyevent {+百分比}
其他类型,其他类型事件指上文中未涉及的所有其他事件,如keypress、不常用的button等
如:adb shell monkey -p com.ibox.calculators --pct-anyevent 1000
Monkey命令实战
如:
adb shell monkey -p com.ibox.calculators -s 3 --throttle 1000 --pct-anyevent 50 --pct-syskeys 50 --ignore-crashes --ignore-timeouts --ignore-security-exceptions 1000
注意:–pct指定的事件加起来不能超过100%
