前言:Monkey是 Android SDK 提供的一种压力测试工具,通过向系统发送伪随机用户事件(如点击、滑动、按键等)来模拟用户操作,测试 App 的稳定性和健壮性
基本语法
adb shell monkey [options] <event-count>
- event-count: 指定要发送的随机事件总数
- options: 控件事件类型, 频率,约束条件等参数
常用参数
2.1事件类型参数
--pct-touch <percent> # 触摸事件百分比 (点击屏幕)
--pct-motion <percent> # 手势事件百分比 (滑动操作)
--pct-trackball <percent> # 轨迹球事件百分比 (模拟轨迹球输入)
--pct-nav <percent> # 导航键事件百分比 (上下左右方向键)
--pct-majornav <percent> # 主要导航事件百分比 (回退,菜单,Home键盘)
--pct-syskeys <percent> # 系统按键百分比 (电源,音量键)
--pct-appswitch <percent> # 启动Activity事件百分比
--pct-flip <percent> # 键盘翻转事件百分比
2.2 约束测试范围
-p <package-name> # 指定测试的app包名 (可重复使用多个-p)
-c <main-category> # 指定测试的Activity类别 (如android.intent.category.LAUNCHER)
2.3 调试选项
-v # 详细级别(可重复使用多次,最多3次:-v -v -v)
--throttle <milliseconds> # 事件间隔时间(毫秒)
--ignore-crashes # 忽略崩溃继续测试
--ignore-timeouts # 忽略超时继续测试
--ignore-security-exceptions # 忽略安全异常继续测试
--kill-process-after-error # 发生错误后终止进程
--monitor-native-crashes # 监控Native代码崩溃
--hprof # 测试后生成HPROF内存分析文件
2.4.1 示例命令
对单个App进行基础测试
adb shell monkey -p com.example.app -v 1000
- 对com.example.app 应用发送1000个随机事件
- -v 显示详细日志
2.4.2 控制事件类型分布
adb shell monkey -p com.example.app \
--pct-touch 60 \
--pct-motion 30 \
--pct-appswitch 10 \
-v -v 5000
- 60%触摸事件,30%滑动事件,10%Activity切换事件
- -v -v显示更详细的日志
2.4.3 设置事件间隔并忽略崩溃
adb shell monkey -p com.example.app \
--throttle 500 \
--ignore-crashes \
--ignore-timeouts \
10000
- 每个事件间隔500毫秒
- 忽略崩溃和超时错误,持续测试100000个事件
2.4.4 测试多个App
adb shell monkey -p com.example.app1 -p com.example.app2 -v 5000
- 同时测试两个app,随机在它们之间切换
2.4.5 监控Native 崩溃并生成内存分析
adb shell monkey -p com.example.app \
--monitor-native-crashes \
--hprof \
-v -v -v 2000
- 监控C/C++代码崩溃
- 测试结束后生成HPROF内存分析文件
进阶用法
3.1 保存日志到文件
adb shell monkey -p com.example.app -v 10000 > monkey_log.txt 2>&1
3.2在特定Activity启动测试
adb shell monkey -p com.example.app \
-c android.intent.category.LAUNCHER \
1000
3.3 组合多个参数
adb shell monkey -p com.example.app \
--throttle 300 \
--pct-touch 70 \
--pct-majornav 15 \
--pct-appswitch 15 \
--ignore-crashes \
--monitor-native-crashes \
-v -v 20000