Monkey Test简单介绍

MonkeyTest是Android系统中的一个自动化压力测试工具,它生成伪随机用户事件流来模拟用户操作,如点击、滑动等,以此测试应用的稳定性和性能。通过adb命令可以查找和使用Monkey程序,并通过各种参数定制测试行为,如设置事件比例、忽略特定错误等。MonkeyTest对于发现应用在极端或意外情况下的问题非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Monkey Test?顾名思义,就像一只猴子一样,它的下一步具有随机性。所以Monkey Test可以简单地理解为动作随机性测试!

Monkey是android模拟器或设备上运行的一个程序。它可以生成伪随机用户事件(例如点击、触碰或滑动等)流和很多的系统级事件(启动app activity等),对某个或某些指定的app应用进行压力测试,且能够生成日志分析文件。

为什么说它是伪随机呢?从多次调用Monkey命令生成的事件流看,它具有随机性。但是从每次调用Monkey命令来看,它是确定好的事件流。

直白点,本来需要手动地连续地长时间地对app程序做"点击"、“触碰”、“滑动”、"缩放"等动作的压力测试,现在让Monkey程序生成事件流完成了

1、查找Monkey程序

Monkey虽然是android系统中自带的程序,使用前还是需要先检查是否存在,可以使用adb命令进入android系统查看:

adb shell
cd /system/framework/
ls | grep monkey

monkey.jar

monkey.jar就是monkey程序,它由一个叫作monkey的shell脚本启动执行。shell脚本的存放路径为:/system/bin

adb shell
cd /system/bin
ls | grep monkey

monkey

2、Monkey命令参数

在adb shell进入android系统后,输入monkey命令,显示monkey程序的参数描述:

参数

常用参数含义如下:

类别参数描述
约束条件-p <allowed-package-name>需要测试的软件。一个-p对应一个软件,多个软件需要用多个-p。如果不使用-p指定软件,就表示指定所有的软件都需要测试
--pkg-whitelist-file PACKAGE_WHITELIST_FILE被测软件白名单。需要测试的软件可以放在白名单txt文件中,而txt文件需要放在android系统的某个路径下。和多个-p实现相同的作用
--pkg-blacklist-file PACKAGE_BLACKLIST_FILE被测软件黑名单,不测试的软件可以放在黑名单txt文件中。那么测试的就是黑名单外的软件
调试--ignore-crashes当应用崩溃或遇到任何类型的未处理异常时,Monkey 将会停止。如果指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止
--ignore-timeouts当应用遇到任何类型的超时错误(例如“应用无响应”对话框)时,Monkey 将会停止。如果指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止
--ignore-security-exceptions当应用遇到任何类型的权限错误(例如,如果它尝试启动需要特定权限的 Activity)时,Monkey 将会停止。如果指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止
--monitor-native-crashes监视并报告 Android 系统原生代码中发生的崩溃。如果设置了 --kill-process-after-error,系统将会停止
--ignore-native-crashes忽略Android系统原生代码中发生的崩溃
--kill-process-after-error当 Monkey 因出错而停止运行时,出现故障的应用将保持运行状态。设置此选项后,它将会指示系统停止发生错误的进程
--wait-dbg阻止 Monkey 执行,直到为其连接了调试程序
事件-s <seed>伪随机数生成器的种子值。当两次运行monkey时的seed值相同时,事件流相同。可以用它来复现问题
--throttle <milliseconds>在事件之间插入固定的延迟时间
--pct-touch <percent>设置触碰屏幕事件的百分比
--pct-motion <percent>设置滑动屏幕事件的百分比
--pct-trackball <percent>调整轨迹球事件所占百分比。(轨迹球事件包括一个或多个随机动作,有时后跟点击。)
--pct-nav <percent>调整“基本”导航事件所占百分比。(导航事件包括向上/向下/向左/向右,作为方向输入设备的输入。)
--pct-majornav <percent>调整“主要”导航事件所占百分比。(这些导航事件通常会导致界面中的操作,例如 5 方向键的中间按钮、返回键或菜单键。)
--pct-syskeys <percent>设置系统按键事件的百分比
--pct-appswitch <percent>Activity启动事件的百分比
--pct-anyevent <percent>调整其他类型事件所占百分比。这包括所有其他类型的事件,例如按键、设备上的其他不太常用的按钮等等
--pct-pinchzoom <percent>设置缩放操作的百分比
--pct-flip <percent>设置翻转操作的百分比
其他-v输出日志的详细程度。每个 -v 都会增加详细程度级别。级别 0(默认值)只提供启动通知、测试完成和最终结果。级别 1 提供有关测试在运行时的更多详细信息,例如发送到您的 Activity 的各个事件。级别 2 提供更详细的设置信息,例如已选择或未选择用于测试的 Activity
COUNT随机事件次数

所有事件的百分比之和不能超过100!!!

touch事件占大头;导航事件用在导航app上;车机系统一般没有翻转事件

以上参数描述来自官方文档:https://developer.android.com/studio/test/monkey?hl=zh-cn

3、Monkey命令示例

示例

这么长的命令,如果每次执行都需要手动输入,未免太麻烦了些!如果某个功能需要多条命令或多个参数处理,我们可以放在批处理文件中执行!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车通信技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值