Monkey 测试的基本概念
Monkey 是 Android 平台自带的命令行工具,用于模拟随机用户操作(如点击、滑动、输入等),测试应用的稳定性。通过压力测试暴露潜在崩溃或无响应问题。
核心特点:
随机性:操作序列完全随机生成,无固定模式。
压力测试:高频率触发事件,验证应用在高负载下的表现。
异常检测:通过崩溃、ANR(Application Not Responding)等日志发现问题。
环境准备
确保电脑已安装 Android SDK 并配置 ADB 环境变量。连接待测设备(实体机或模拟器),通过以下命令验证连接:
bash
adb devices
基本命令格式
执行 Monkey 测试的核心命令:
bash
adb shell monkey [选项] <事件数量>
示例:向包名为 com.example.app
的应用发送 1000 次随机事件:
bash
adb shell monkey -p com.example.app 1000
常用参数详解
指定测试应用
-p <包名>
:限制 Monkey 仅操作特定应用。可多次使用以指定多个包名。
事件类型控制
--pct-touch <百分比>
:调整触摸事件比例(默认 15%)。
--pct-motion <百分比>
:调整滑动事件比例(默认 10%)。
--pct-trackball <百分比>
:调整轨迹球事件比例。
--pct-nav <百分比>
:调整导航事件比例(如方向键)。
调试与日志
-v
:设置日志详细程度(最多 3 个 -v
,如 -v -v -v
)。
--ignore-crashes
:崩溃后继续执行。
--ignore-timeouts
:无响应后继续执行。
--kill-process-after-error
:出错后终止进程。
种子值复现问题
-s <种子值>
:指定随机种子,复现相同测试序列。
高级用法示例
测试特定应用,限制触摸和滑动事件,并记录详细日志:
bash
adb shell monkey -p com.example.app --pct-touch 40 --pct-motion 30 -v -v 5000
结果分析
测试完成后,日志会显示:
- 事件执行数量。
- 崩溃或 ANR(Application Not Responding)信息。
- 未捕获异常详情。
通过 adb logcat
抓取日志,定位具体崩溃堆栈:
bash
adb logcat -d > log.txt
注意事项
- 避免在用户真实数据环境中测试,可能造成数据丢失。
- 长时间测试可能导致设备过热,建议分阶段执行。
- 结合
-s
参数复现问题时,需保持应用版本和测试环境一致。