Monkey命令
monkey
是 Android 平台上一个非常有用的工具,它可以帮助开发者在设备上生成随机的用户事件流,如按键输入、触摸屏手势等,以此来测试应用的稳定性。这对于发现应用中的崩溃、异常和性能问题特别有用。
基本语法
bash
adb shell monkey [OPTIONS] <EVENT-COUNT>
选项说明
<EVENT-COUNT>
:要发送的伪随机事件数量。--throttle <MILLISECONDS>
:每个事件之间等待的毫秒数。--pct-[event-type] <percentage>
:设置特定事件类型的百分比。例如:--pct-motion
: 触摸屏幕运动事件--pct-trackball
: 轨迹球事件--pct-nav
: 导航键事件--pct-majornav
: 主导航键(如返回、主页)事件--pct-syskeys
: 系统键(如音量键)事件--pct-appswitch
: 应用切换事件--pct-flip
: 屏幕翻转事件--pct-anyevent
: 任何事件
--ignore-[event-type]
:忽略特定类型的事件。例如:--ignore-crashes
: 忽略崩溃--ignore-timeouts
: 忽略超时--ignore-security-exceptions
: 忽略安全异常--ignore-native-crashes
: 忽略本地代码崩溃--ignore-anr
: 忽略无响应状态
--kill-process-after-error
:如果发生错误,则终止进程。--monitor-native-crashes
:监控并报告原生代码崩溃。--pkg-blacklist-file <file>
:指定包含不应启动的应用包名黑名单文件。--pkg-whitelist-file <file>
:指定包含应该启动的应用包名白名单文件。--category-blacklist <category>
:指定不应启动的 Intent 类别黑名单。--category-whitelist <category>
:指定应启动的 Intent 类别白名单。--only-current
: 只在当前应用中运行。--hprof
: 生成 hprof 文件以进行内存分析。--dbg-level <level>
: 设置调试级别 (0-3)。--seed <value>
: 设置随机种子值,以便可以重现测试序列。
示例
假设你想让 Monkey 运行 1000 次事件,其中 50% 是触摸屏幕事件,20% 是导航键事件,并且在每个事件之间等待 500 毫秒,你可以使用以下命令:
bash
adb shell monkey --pct-motion 50 --pct-nav 20 --throttle 500 1000
注意事项
- 在运行 Monkey 测试之前,请确保备份好数据,因为它可能会导致数据丢失或混乱。
- 如果你的应用需要特定的权限,你可能需要先授予这些权限。
- 通常,Monkey 测试会在设备上运行,所以确保设备连接到电脑并且开启了 USB 调试模式。
Monkey脚本
Monkey 脚本是一种用于自动化 Android 设备上的随机事件生成的方法,这有助于测试应用程序的稳定性和健壮性。下面是一个简单的 Monkey 脚本示例,以及如何创建和执行这样的脚本。
示例脚本
我们将创建一个简单的 Bash 脚本来运行 Monkey 测试。这个脚本会自动执行一系列 Monkey 操作,并记录输出。
创建脚本文件
首先,在你的计算机上创建一个新的 Bash 脚本文件。你可以使用任何文本编辑器来创建这个文件。这里我们命名为 run_monkey.sh
。
bash
#!/bin/bash
# 定义变量
PACKAGE_NAME="com.example.myapp"
EVENT_COUNT=5000
THROTTLE_TIME=500
SEED=12345
# 输出 Monkey 的命令行帮助信息
echo "Running Monkey Test..."
# 运行 Monkey 命令
adb shell "monkey --package $PACKAGE_NAME \
--throttle $THROTTLE_TIME \
--pct-motion 50 \
--pct-nav 20 \
--pct-majornav 10 \
--pct-syskeys 10 \
--pct-appswitch 5 \
--pct-flip 5 \
--ignore-crashes \
--ignore-timeouts \
--ignore-security-exceptions \
--kill-process-after-error \
--monitor-native-crashes \
--randomize-throttle \
--seed $SEED \
$EVENT_COUNT"
# 检查输出
echo "Monkey test finished. Checking the output..."
解释脚本
PACKAGE_NAME
: 指定你要测试的应用程序的包名。EVENT_COUNT
: 指定 Monkey 要执行的事件总数。THROTTLE_TIME
: 指定每个事件之间的延迟时间(毫秒)。SEED
: 指定随机种子,这样你可以重现相同的测试序列。adb shell
: 通过 ADB 向设备发送命令。--package
: 限制 Monkey 事件只作用于指定的应用包。--throttle
: 设置事件之间的延迟时间。--pct-*
: 设置各种事件类型的百分比。--ignore-*
: 设置 Monkey 忽略某些类型的错误。--kill-process-after-error
: 如果发生错误则停止该应用。--monitor-native-crashes
: 监控并报告原生代码崩溃。--randomize-throttle
: 随机化事件之间的延迟时间。--seed
: 设置随机种子。
执行脚本
为了执行这个脚本,你需要确保你的设备已经连接到电脑并通过 ADB 进行调试。此外,你需要给予脚本执行权限,并且在终端中运行它。
-
给脚本执行权限:
bashchmod +x run_monkey.sh
-
运行脚本:
bash./run_monkey.sh
注意事项
- 确保你的设备已经连接到电脑,并且开启了 USB 调试模式。
- 如果你在运行脚本时遇到权限问题,尝试使用
sudo
或者将脚本放在具有适当权限的目录下。 - 根据你的需求调整脚本中的参数,比如事件数量、事件类型比例等。
这就是一个基本的 Monkey 测试脚本。你可以根据自己的需要对其进行扩展和修改。