APP测试 - Monkey遍历命令详解
1、启动monkey
# 对手机点击1000次,不限制应用
adb shell monkey 1000
# 限制在设置的应用中,点击1000次
adb shell monkey -p com.cleanmaster.mguard 1000
# 设置点击事件的间隔为50ms
adb shell monkey -p com.cleanmaster.mguard 1000 --throttle 100
2、停止monkey
# 查看monkey的进程id
ps | grep monkey
# 根据pidnum来杀死进程
Kill pid
3、增加monkey执行健壮性
程序发生异常时,不终止测试
# 忽略崩溃
--ignore-crashes
# 忽略ANR
--ignore-timeouts
# 忽略证书或认证异常
--ignore-security-exceptions
# 忽略本地代码发生的崩溃
--ignore-native-crashes
4、log设置
# 设置输出log位置
adb shell monkey -p com.cleanmaster.mguard 2>/sdcard/monkey 1>/sdcard/monkey 1000
# 设置电脑输出log位置
adb shell monkey -p com.cleanmaster.mguard 2>/Users/lizhen/cmcm/workspace/monkey/errer.txt 1>/Users/lizhen/cmcm/workspace/monkey/info.txt 1000
# 使用-v指定log详细级别
# Monkey的日志输出有3个级别:默认的-v是level 0,-v -v日志级别为level 1,-v -v -v日志级别为level 2。日志的级别越高,其详细程度也越高。为了方便问题的定位,将日志级别设置为level2。
adb shell monkey -p com.cleanmaster.mguard -v -v 2>./errer_lev1.txt 1>./info_lev1.txt --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes 5000
5、设置monkey事件百分比
调整触摸事件的百分比
adb shell monkey -p com.yxy91.creativecat.beta --pct-touch 10 -v 1000
说明:--pct-{+事件类别}{+事件类别百分比}用于指定每种类别事件的百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比),--pct-touch {+百分比}用于调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。
详情查看之前写的文档:命令详解
6、monkey复现之seed值
使用-s参数来指定命令执行的seed值
Monkey会根据seed值来生成对应事件流,同一个seed生成的事件流是完全相同的。这里指定了seed值,是为了测试发现问题时,便于进行问题复现。
# 已证实,seed值设置有效。
# ⚠️:每次开始前,app状态要一致,seed一致性才有效
adb shell monkey -p com.cleanmaster.mguard -s 1 -v -v 1000
7、monkey测试策略
(1)使用 --throttle 来控制事件间隔
指定操作之间的时间间隔,一方面是希望能更接近用户的操作场景,正常用户操作都会有一定的时间间隔;另一方面也是不希望因为过于频繁的操作而导致系统崩溃,尤其是在比较低端的手机上执行测试时。因此通过–throttle设置Monkey每个操作固定延迟0.4秒。
(2)使用 --ignore-crashes --ignore-timeouts
在执行Monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数–ignore-crash和–ignore-timeouts,让Monkey在遇到崩溃或没有响应的时候,能在日志中记录相关信息,并继续执行后续的测试。
(3)修改注入事件的比例
比如增加–pct-syskeys的比例,这样就可以增加触发返回键的比例,避免monkey测试长时间停留在一个界面,增加monkey覆盖的界面范围。
(4)指定要启动的Activity
如果没有指定的activity,那么就会启动含有 Intent.CATEGORY_LAUNCHER 或 Intent.CATEGORY_MONKEY 的activity。可以使用 -c 来指定启动一个Activity,该activity必须至少包含一个指定的category,才能被启动,否则启动不了。
- 前面介绍了几种常见的Monkey测试方法,但在实际项目中,选择哪种Monkey测试策略,则需要根据实际项目的情况来做判断。主要是看测试目的及被测应用自身的特点。
- 假如我们想测试浏览器的双指缩放功能是否有异常,那就需要选择–pct-pinchzoom参数,调大双指缩放事件的占比进行Monkey测试;
- 假如我们想验证ROM的横竖屏切换功能是否正常,那就需要选择–pct-rotation参数,调大横竖屏切换事件的占比进行Monkey测试;
- 假如我们想验证重复某种特定操作时,应用是否会存在异常,那可以选择-f参数,自定义Monkey脚本进行验证;
- 假如我们想验证长时间操作时应用是否会存在内存泄漏,那就需要结合-hprof参数和dumpsys meminfo<进程名>进行Monkey测试。
作者:小林同学_Scorpio
本博客所有文章仅用于学习、分享和交流目的,欢迎非商业性质转载。
博主的文章没有高度、深度和广度,只是凑字数,做笔记。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个无耻的文档搬运工!