Monkey 简介
Monkey 是 Android 系统自带的自动化测试工具,使用 Java 语言写成。在 Android 文件系统中的存放路径是:/system/framework/monkey.jar,就像是一只猴子在电脑前乱敲,可以模拟用户按键、触摸滑动屏幕等操作对程序进行压力测试。
Monkey 架构
环境搭建
建议下载最新版的 Android Studio,同时下载 SDK,ADB 在 SDK 对应目录 platform-tools 文件夹下,比如我的 ADB 路径是 D:\android\platform-tools。可以在 CMD 命令行中进入到 platform-tools 文件夹下进行操作,不过这样很麻烦,建议配置 ADB 环境变量。下面简单说明下环境变量的配置步骤,以 win10 操作系统为例。
点击确定之后,双击系统变量中的 Path,点击新建,输入%ADB%,点击确定保存修改即可。
现在打开 CMD,输入 adb,如果出现如下图提示就说明 ADB 环境变量配置好了。
Monkey 参数
通过 adb shell monkey -help 可以列出测试命令
COUNT
设置测试的执行次数
[-p ALLOWED_PACKAGE]
用来指定被测试的应用,后面是对应程序的包名,有多个包名用空格分开,如果不指定包名,Monkey 将测试系统中的全部应用
[-c MAIN_CATEGORY [-c MAIN_CATEGORY]...]
指定一个或多个有效的 category,Activity 中必须至少包含一个指定的 category 才能被启动,否则启动不了
[--ignore-crashes]
忽略崩溃
[--ignore-timeouts]
忽略超时,比如 ANR
[--ignore-security-exceptions]
忽略安全异常
[--monitor-native-crashes]
观察和记录 Android 系统底层崩溃
[--ignore-native-crashes]
忽略 Monkey 本身异常
[--kill-process-after-error]
发生异常后结束进程
[--hprof]
会在 Monkey 事件序列之前和之后立即生成分析报告,同时会在 data/misc 产生大量文件,建议谨慎使用
设置事件百分比,所有百分比加起来不能超过 100%
[--pct-touch PERCENT]
0 触摸事件百分比
[--pct-motion PERCENT]
1 滑动事件百分比
[--pct-pinchzoom PERCENT]
2 缩放事件百分比
[--pct-trackball PERCENT]
3 轨迹球时间百分比
[--pct-rotation PERCENT]
4 屏幕旋转事件百分比
[--pct-nav PERCENT]
5 基本导航事件百分比
[--pct-majornav PERCENT]
6 主要导航事件百分比
[--pct-syskeys PERCENT]
7 系统事件百分比
[--pct-appswitch PERCENT]
8 Activity 启动事件百分比
[--pct-flip PERCENT]
9 键盘翻转事件百分比
[--pct-anyevent PERCENT]
10 其他事件百分比
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
黑名单列表,不测试的应用
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
白名单列表,只测试这些应用
注意,不能同时设置黑名单和白名单
[--wait-dbg]
停止执行中的 Monkey 测试,直到有调试器连接才会执行 Monkey 命令
[--dbg-no-events]
初始化启动的 Activity,但是不产生任何事件
[-s SEED]
伪随机数生成器的种子值,如果种子数值相同,则会生成相同的事件序列,对 bug 复现有帮助。如果不指定种子值,系统会随机生成一个种子值,在出现 bug 的时候该种子值会和 bug 信息一起输出,方便调试时复现 bug
[-v [-v]...]
反馈日志的信息级别,一共三个级别,默认是一个 v 最低级别,级别越高日志越详细。
-vLevel 0 (默认) 提供了很少的信息,比如启动通知,测试完成和最终结果
-v -vLevel 1 提供了更详细的测试运行信息,比如个别事件被发送到 Activity
-v -v -vLevel 2 提供了更详细的设置等信息,比如 Activity 选中或未选中的测试信息
[--throttle MILLISEC]
每次随机事件的时间间隔,单位:毫秒。如果不指定,系统会尽快的发送事件序列
[--throttle MILLISEC][--randomize-throttle]
设置随机事件的时间间隔区间
日志分析
通过上面这条命令测试一下,对获得的测试日志进行简单分析
种子值和随机事件次数
分配事件百分比,事件号详见之前的参数
触摸事件
滑动事件
缩放事件
轨迹球事件
日志最后部分
当然也可以在 log 中查看到 crash、Fatal、ANR 等异常情况,我演示的次数较少,而且没有指定某个应用,log 中没有上述情况。
杀死 Monkey 进程
如果想中断运行中的monkey 在 cmd 中 ctrl + c
adb shell ps | grep monkey 返回进程号
adb shell kill [ 刚才查到的进程号 ]
之前测试的时候遇到过上面方法不起作用的情况,这个时候请祭出重启大法,直接 adb reboot 重启手机终止 Monkey 测试。
忠于 Coding,忠于扯淡。
领取专属 10元无门槛券
私享最新 技术干货