monkey是一个作为安卓测试人员都知晓的测试方法,下面我说下我对命令的了解:

monkey命令:

adb shell monkey -p 包名 -s 8888 --throttle 200 --pct-touch 35 --pct-motion 10 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --bugreport -v 100000

这条命令的意思就是在XX包下按照35%触摸事件、10%滑动事件、20%导航事件、15%主要导航事件、5%APP间切换、5%任意事件、0%轨迹球事件、0%系统按键事件、忽略崩溃、忽略超时、忽略安全异常 事件间隔200 执行100000次

命令中参数介绍:

参数-p:用于约束限制,用此参数指定一个或者多个包,指定包之后,monkey将只允许系统启动指定的app。查看设备所有包名:adb shell cd data/data ls

参数-v:用户指定反馈信息级别,总共分为3个级别,-v说明缺省值,仅提供启动提示、测试完成和最终结果等少量信息;-v -v说明提供较为详细的日志,包括每个发送到activity的事件信息;-v -v -v说明最详细的日志,包括了测试中选中、未选中的activity信息;

参数-s:指定伪随机数生成器的seed值,如果seed值相同,则两次monkey测试所产生的时间序列也相同的。

参数--throttle <毫秒>:用户指定操作间的时延,单位是毫秒

参数--ignore-crashes:指定当应用程序崩溃时,monkey是否停止运行。如果使用此参数,即使应用程序崩溃,monkey依然会发送事件,直到事件计数完成。

参数--ignore-timeouts:指定当应用程序发生ANR错误时,是否停止运行。如果使用此参数,即使应用程序发生ANR错误,monkey依然会发送事件,直到事件计数完成。

参数--ignore-security-exceptions:用于指定当应用程序发生许可错误时,monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,monkey依然会发送事件,直到事件计数完成。

参数 --monitor-native-crashes:用于指定是否监视并报告应用程序发生崩溃的本地代码。

参数--pct-{+事件类别}{+事件类别百分比}:用于指定每种类别事件的数目百分比


事件类命令是Monkey最重要的命令了,它共有11个事件类命令。

--pct-touch表示指定触摸事件的百分比

--pct-motion滑动事件

--pct-trackball轨迹球事件(用的比较少)

--pct-nav导航事件(用的比较少)

--pct-majornav主要导航事件(用的比较少)

--pct-syskeys系统按键事件

--pct-appswitchapp间切换

--pct-anyevent任意事件

--pct-flip键盘轻弹百分比,

--pct-pinchzoom放大、缩小事件

--pct-rotation屏幕旋转

Monkey调试类命令

--dbg-no-events:初始化启动的activity,但是不产生任何事件。

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

--ignore-security-exceptions:忽略安全异常

--kill-process-after-error:发生错误后直接杀掉进程

--monitor-native-crashes:跟踪本地方法的崩溃问题

--wait-dbg:知道连接了调试器才执行monkey测试

 

monkey的log分析:

程序异常退出 : uncaused exception

程序强制关闭 :Force Closed (简称FC)  forcefinish、exception

程序无响应 : Application No Response (简称ANR) , 顺便,一般主线程超过5秒么有处理就会ANR