一、什么是monkey
monkey是Android中附带的一个工具,可以运行在模拟器或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
二、monkey测试的目的
1、进行压力测试/稳定性测试
2、开发人员结合monkey打印的日志和系统打印的日志,修改测试中出现的bug
三、monkey参数
1.count 事件数 (必填)
adb shell monkey 200 设定事件数为200
2.[-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
指定某一个app 某一些应用进行monkey测试
adb shell monkey -p 包名 -p 包名 count
★使用adb命令查看包名
adb shell pm list packages
3. [--ignore-crashes] [--ignore-timeouts] [--ignore-security-exceptions]
忽略测试过程中关于崩溃,超时,安全证书验证
♦如果使用了这个参数:表述执行过程中如果发生上述问题,会结束app的进程,然后重新打开APP,继续执行直到完成设定的次数,一般会加上这些参数。
♦如果不使用这些参数:表述执行过程中如果发生上述问题,停止monkey测试。
4. [--kill-process-after-error]
表示发生错误以后,停止monkey测试。
5. [--monitor-native-crashes] [--ignore-native-crashes]
监控本地应用崩溃,忽略本地应用崩溃
因为我们需要测试使用自己的应用时是否影响了别的应用的情况,提交bug。
6. [--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pct-permission PERCENT]
模拟用户操作的事件百分比.默认情况是不动 。
7.[-s SEED]序列值 种子值
因为seed本身有很多种 ,一种seed下面又会出现N个bug所以我们一般设定一个seed值进行测试。用一样的seed值,执行操作顺序是一样的(前提:初识状态是一样)。对于测试人员来说来说:在验证bug阶段,同样的seed值可以验证bug是否解决。
8. [-v [-v] ...] 表示日志的级别详细程度
最多就:-v -v -v 一般 2个-v,具体要根据项目质量要求来定。
9.[--throttle MILLISEC]延迟时间
执行完一个操作之后,会进行等待,最长等待时间,单位是毫秒,一般设定几百ms
作用:模拟真实用户操作
四、monkey执行过程
1、准备环境
♦配置电脑端的jdk/sdk
♦手机开启开发者模式,打开USB调试功能
♦连接wifi和数据网络,避免随机操作关掉某一个连接
♦关掉手机的锁屏功能(monkey不会解锁操作)和自动灭屏功能,选常亮或设置为最大值
♦手机的电量:保持90%以上
♦插上耳机,或放在可以隔音的地方
2、手机与电脑连接ADB,若测试的APP需要登录则提前登录账号,monkey不会自己登录账号,但有的时候monkey会自己退出账号,这是无法避免的,可以考虑更换seed值。
3、一条基础的monkey指令,并将monkey日志重定向保存在D盘
adb shell monkey -p [包名] --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes -s [seed] -v -v --throttle [ms] [COUNT] >D:\log\monkey.txt
4、monkey的调试
在执行monkey测试时,为了在发生bug时更好的定位和分析,我们可以同时保存手机的系统日志。
adb logcat -v time >D:\log\logcat.txt
参数解释:
-v 表示以日志形式输出
time 表示以时间的顺序输出,方便定位时间点
D:\log\logcat.txt 自己创建一个用来保存日志的文档
5、执行结束,查看monkey日志结果
♦// Monkey finished ——此次测试通过,无bug
♦没有显示// Monkey finished ——搜索关键字定位bug,然后提交bug
bug关键字:CRASH、ANR、Monkey aborted due to error、tomstone
五、monkey的强制结束
monkey只会自动停止,若要强制结束monkey需要杀掉monkey的进程。而logcat恰好相反,不会自动停止,需要手动停止。