ADB Monkey 是 Android 平台提供的一个命令行工具,用于向设备发送伪随机用户事件流(如点击、触摸、手势等),主要用于压力测试和稳定性测试。
基本用法
adb shell monkey [options] <event-count>
常用命令选项
1. 基本参数
-p <package-name>`:指定测试的包名(可多次使用指定多个包)
- v:设置日志详细级别(1-3个-v,越多越详细)
- `<event-count>`:要发送的事件数量
2. 事件类型控制
--pct-touch <percent>`:触摸事件百分比
--pct-motion <percent>`:动作事件百分比
--pct-trackball <percent>`:轨迹球事件百分比
--pct-nav <percent>`:基本导航事件百分比
--pct-majornav <percent>`:主要导航事件百分比
--pct-syskeys <percent>`:系统按键事件百分比
--pct-appswitch <percent>`:Activity启动事件百分比
--pct-anyevent <percent>`:任意事件百分比
3. 约束条件
-c <category>`:指定允许的Intent类别
--throttle <milliseconds>`:事件间延迟(毫秒)
--ignore-crashes`:忽略崩溃继续测试
--ignore-timeouts`:忽略ANR继续测试
--ignore-security-exceptions`:忽略权限错误继续测试
4. 调试选项
--dbg-no-events`:初始化但不发送事件
--hprof`:测试前后生成profiling报告
--monitor-native-crashes`:监视native代码崩溃
--kill-process-after-error`:出错时杀死进程
常用示例
1.基本测试
# 向设备发送500个随机事件
adb shell monkey 500
2. 测试特定应用
# 测试com.example.app应用,发送1000个随机事件
adb shell monkey -p com.example.app 1000
3. 设置事件类型比例
#设置触摸事件40%,动作事件25%,Activity启动15%,其余20%
adb shell monkey -p com.example.app \
--pct-touch 40 --pct-motion 25 --pct-appswitch 15 \
--throttle 100 1000
4. 详细日志输出
# 三级详细日志,忽略崩溃和超时
adb shell monkey -p com.example.app -v -v -v \
--ignore-crashes --ignore-timeouts 2000
5.可复现的测试(固定随机种子)
# 三级日志,忽略崩溃和 ANR,测试 2000 次
adb shell monkey -p com.example.app -v -v -v \
--ignore-crashes --ignore-timeouts 2000
6.结合logcat监控
# 在另一个终端窗口运行 logcat 监控日志 adb logcat -v time | grep "AndroidRuntime"
7.用户延时操作(时间单位是毫秒)
adb shell monkey -p com.example.login --throttle 300 100
带约束条件的测试
# 测试多个应用,事件间延迟300ms,忽略权限错误
adb shell monkey -p com.example.app1 -p com.example.app2 \
--throttle 300 --ignore-security-exceptions 1500
停止Monkey测试
如果测试过程中需要停止,可以在另一个终端窗口执行:
adb shell ps | grep monkey # 查找monkey进程ID
adb shell kill [pid] # 结束monkey进程
或者更简单的方式:
adb shell killall com.android.commands.monkey
我常用的命令
adb shell monkey -p com.tataera.edushu --pct-touch 80 --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -vvv 1000
然后再开一个cmd
adb logcat -s AndroidRuntime -b crash -v threadtime
若有错误指定相同种子
adb shell monkey -p com.tataera.edushu --pct-touch 80 --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -vvv -s 1753845230868 1000

1万+

被折叠的 条评论
为什么被折叠?



