Monkey压力测试 文章目录一、 Monkey测试概述二、 测试环境与准备三、 核心命令与参数配置1. 基础控制参数2. 异常处理参数四、 事件类型与比例控制核心调优五、 高级用法与日志管理六、 结果分析与问题定位七、 实战演练与最佳实践痛点解决如何防止Monkey按Home/Back键退出App终极实战1分钟高强度压测命令进阶Monkey Logcat 双管齐下一、 Monkey测试概述1. 什么是Monkey测试Monkey是Android自带的一种伪随机压力测试工具。它通过生成随机的用户事件如触摸、滑动、按键等模拟用户在高压和随机操作下的行为主要用于测试App的稳定性和健壮性。2. 核心优缺点优点快速发现崩溃/ANR、无需编写复杂脚本、支持长时间自动化运行。缺点缺乏业务针对性随机操作无法覆盖特定业务流程、无法模拟复杂的业务逻辑。二、 测试环境与准备在开始测试前需确保以下基础环境就绪安装配置安装Android SDK并配置好环境变量确保adb命令可用。连接设备通过USB连接真机或启动模拟器使用adb devices确认设备已连接。获取包名使用adb shell pm list packages查询并确认待测App的包名如com.tencent.mm。找到当前停留的包名adb shell dumpsys window | findstr mCurrentFocus三、 核心命令与参数配置Monkey命令的基本格式为adb shell monkey [参数] 事件数量1. 基础控制参数参数作用说明示例-p指定包名必须限制测试范围-p com.example.app-v日志级别最多3个-v -v -v最详细-v -v -v--throttle 毫秒事件延迟模拟真实用户操作速度--throttle 1000(延迟1秒)--seed 值随机种子相同seed可复现相同操作序列--seed 123452. 异常处理参数参数作用说明--kill-process-after-error遇到崩溃Crash或ANR时立即停止测试。--ignore-crashes遇到崩溃时忽略并继续测试。--ignore-timeouts遇到ANR超时时忽略并继续测试。四、 事件类型与比例控制核心调优Monkey允许你精确控制各类事件的触发比例总和需为100%以模拟特定的用户行为事件类型参数控制描述触摸事件--pct-touch 百分比模拟点击、长按等屏幕触摸操作。手势/滑动--pct-motion 百分比模拟滑动、拖拽等手势操作。系统按键--pct-syskeys 百分比模拟Home、Back、菜单等系统级按键。导航事件--pct-nav 百分比模拟方向键等导航操作。Activity切换--pct-appswitch 百分比随机启动不同的Activity。屏幕旋转--pct-rotation 百分比模拟屏幕横竖屏旋转。五、 高级用法与日志管理1. 限制测试范围限制Activity使用--activity-filter activity-name防止Monkey跳转到非目标页面。多包名测试可以传入多个-p参数同时测试多个应用。2. 日志级别详解-v基础日志每1000个事件统计一次仅记录崩溃/异常。-v -v中等日志记录每个事件的具体类型。-v -v -v最高级别记录时间戳、App状态变化及底层调试信息推荐排查问题时使用。3. 日志导出将日志保存到本地文件以便后续分析adb shell monkey -p com.example.app -v -v -v 1000 monkey_log.txt六、 结果分析与问题定位测试完成后通过分析日志文件来判定App的稳定性 正常结束日志末尾出现Monkey finished且无严重错误关键字。 异常定位重点搜索以下关键字CRASH/exception应用发生崩溃需结合堆栈信息定位代码行。ANR应用无响应通常伴随主线程阻塞的日志。E/ACRA或 特定业务相关的Exception。七、 实战演练与最佳实践痛点解决如何防止Monkey按Home/Back键退出App解决方案将系统按键事件比例设为0即添加参数--pct-syskeys 0。终极实战1分钟高强度压测命令需求测试微信com.sankuai.meituan点击50%滑动50%防退出遇崩溃停止延迟1秒最高日志级别输出到当前目录的log.txt。(注1分钟 60秒延迟1秒即执行60次事件)完美命令adb shell monkey -p com.cat.readall --pct-touch 50 --pct-motion 50 --pct-syskeys 0 --throttle 1000 --kill-process-after-error -v -v -v 60 ./log.txt进阶Monkey Logcat 双管齐下为了捕获更完整的系统级崩溃信息可以将Monkey日志与Android系统的Logcat日志同时抓取。在 Windows 系统下想在一个黑框里搞定我们需要请出一个专门的“后台运行”指令start /b。它的作用就是把命令藏到后台默默执行表面上看起来什么都没发生。你只需要复制下面这一整行命令粘贴到你的黑框里按下回车即可start /b adb logcat logcat.txt adb shell monkey -p com.cat.readall --pct-touch 50 --pct-motion 50 --pct-syskeys 0 --throttle 1000 -v -v -v 100 log.txt注意linux中的写法adb logcatmonkey_log.txtadb shell monkey-p com.cat.readall--pct-touch50--pct-motion50--pct-syskeys0--throttle1000--kill-process-after-error-v-v-v100按下回车后你的黑框会发生什么“摄像机”已隐藏开机start /b会把adb logcat扔到后台默默录像存入logcat.txt黑框里不会有任何提示。“演员”立刻上场紧接着黑框里会立刻开始显示 Monkey 执行 100 次操作的进度。表演结束大概 100 秒后Monkey 跑完黑框里重新出现D:\...的提示符说明测试结束了。搞定现在你的文件夹里已经同时生成了log.txt和logcat.txt两个文件。唯一需要注意的“收尾工作”必看虽然黑框里提示 Monkey 跑完了但后台的“摄像机”Logcat还在傻傻地一直录像。为了关掉它当你看到黑框出现D:\...提示符后请紧接着输入下面这条命令并回车taskkill /F /IM adb.exe(这条命令的意思是强行结束所有的 adb 进程。输入后后台的 logcat 就会乖乖停止录制了。)