简介
Monkey 可运行在设备和模拟器上,生成伪随机用户事件(例如点击、轻触或手势)流以及很多系统级事件。使用 Monkey 以随机且可重复的方式对正在开发的应用进行压力测试。
上面这句挺官方的,简单来说就是找来一只猴子,拿着你的手机,对着你的应用,一顿瞎几把乱点,猴子是没有逻辑的,所以它的操作可以是任意的。如果你的应用扛不住崩溃了或者 ANR 了,说明抗压能力不行啊。
Monkey 是可以设置在遇到崩溃,ANR 时停止。启动 Monkey 是需要用到 ADB 的。我们来看看 Monkey 怎么用。
指令集
通过 adb shell monkey --help 指令可以得出支持的所有指令,如下:
[-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--match-description TEXT]
[--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]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
[--permission-target-system]
1、基本的使用:
发送 10 个事件,不针对某个 App,针对的是整个手机。
adb shell monkey 10
2、-p :指定具体的 App
adb shell monkey -p com.xxx.xxx -p com.xxx.xx 1000
可以指定多个 App 的,多次使用 -p 指令即可。以上就是指定了两个 App,给它们发送了 1000 次的随机事件。
3、-c :指定入口的类别
adb shell monkey -p com.xxx xxx xxx -c xxx.xxx.xxx
和 -p 一样,多个类型多次使用 -c 即可。应用场景是在应用没有入口的情况下,比如 Launcher,没有指定的话,Monkey 会选择 Intent.CATEGORY_LAUNCHER 或 Intent.CATEGORY_MONKEY 类别所列的 Activity