Monkey是一个可以在模拟器或者实际设备中运行的命令行程序,它可以向程序中发出一系列的伪随机事件流(比如按键输入、触摸输入、手势输入等的用户事件和一些系统级的事件)。开发者可以通过Monkey工具以一种随机且可以重复的方式来对正在开发的程序进行压力测试。
Monkey使用综述
Monkey是一个可以在模拟器或者实际设备中运行的命令行程序,可以向程序中发出一系列的伪随机事件流,来对正在开发的程序进行压力测试。
Monkey工具包含很多可选项,主要可以分为4中基本类型:
-基本的配置选项,比如可以设定要发送的事件数。
-操作限制,比如可以限制只测试的一个应用程序包。
-测试事件的类型和测试频率
-调试选项
当Monkey运行的时候,它将向系统发送随机产生的事件,并对测试下的系统进行观测,特别留意三种条件:
-当限制Monkey只对一个或者多个特定应用程序包进行测试的时候,it watches for attempts to navigate to any other package, and block them。
-如果你的程序崩溃或者遇到了什么未处理的议程,Monkey将停止运行,并将错误显示出来。
-如果你的程序产生了一个无反应的错误,Monkey也将停止运行,并报告错误。
根据你设定的事件的多少,你将会在命令行中看到Monkey产生的事件和运行过程。
Monkey的使用方法
启动方式:可以通过使用命令行或者脚本文件来启动Monkey工具。因为Monkey工具运行在模拟器或者实际设备中,所以,你必须在模拟器或者实际设备的Shell中启动Monkey。如果你没进入shell中,你也可以在每个Monkey命令之前加上adb shell,当然如果你已经进入shell中,这种情况下直接使用Monkey命令就行了。
基本的使用方式如下:
$ adb shell monkey [options] <event-conunt>
如果没指定
options
,
Monkey
将以一种
quiet(non-verbose)
模式启动,在这种模式下
Monkey
将向你的设备或模拟器上安装的每一个程序发送事件。下面是一种更典型的使用方式,具体功能就是向你的程序发送
500
个伪随机事件:
$ adb shell monkey -p your.package.name -v 500
下面的表包含了可以在Monkey命令中所有可选项。
类型 | 可选参数option | 描述 |
General | --help | 打印一个简单的使用指导 |
-v | 命令行中的每一个 -v都将增加verbosity level(verbosity的意思是冗余,具体意思就是关于测试信息的多少,level越高,测试信息月详细)。level0(默认)仅提供关于开始启动、测试完成和最重结果的很少的信息。Level1提供了更多的关于测试的信息,比如每一个正在发送给你的activities的事件。Level2又比Level1提供了更多的关于启动的信息,比如提供了要测试和不要进行测试的activities。 | |
Events | -s <seed> | 伪随机事件产生器的seed值。如果你使用相同的seed值第二次运行 Monkey命令的时候,它将产生与第一次相同的伪随机事件。 |
--throttle <milliseconds> | 在事件之间插入一个固定值。你可以通过这个option来减慢Monkey的运行。如果没指定这个值的话,事件之间没有停顿,事件产生器将以最快的速度产生命令。 | |
--pct-touch <percent> | 调整触摸事件的百分比(用户的触摸事件在屏幕上是down-up形式的)。 | |
--pct-motion <percent> | 调整移动事件的百分比。 | |
--pct-trackball <percent> | 调整trackball事件的百分比。 | |
--pct-nav <percent> | 调整导航事件的百分比。(导航事件主要是输入设备的方向键,比如向上、下、左、右) | |
--pct-majornav <percent> | 调整主要的导航事件的百分比。 | |
--pct-syskeys <percent> | 调整系统按键事件(比如Home,back,Start Call等) | |
--pct-appswitch <percent> | 调整activity的启动百分比。 | |
--pct-anyevent <percent> | 调整其他类型事件的百分比。 | |
Constraints | -p <allowed-package-name> | 指定要测试的应用程序包名 |
-c <main-category> | 指定要测试的categories | |
Debugging | --dbg-no-events | |
--hprof | ||
--ignore-crashes | ||
--ignore-timeouts | ||
--ignore-security-exceptions | ||
--kill-process-after-error | ||
--monitor-native-crashes | ||
--wait-dbg
|