Monkey Test简单介绍
什么是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程序,它由一个叫作monkey的shell脚本启动执行。shell脚本的存放路径为:/system/bin
adb shell
cd /system/bin
ls | grep 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命令示例
这么长的命令,如果每次执行都需要手动输入,未免太麻烦了些!如果某个功能需要多条命令或多个参数处理,我们可以放在批处理文件中执行!