Monkey简介

在Android的官方自动化测试领域有一只非常著名的“猴子”叫Monkey,这只“猴子”一旦启动,就会让被测的Android应用程序像猴子一样活蹦乱跳,到处乱跑。人们常用这只“猴子”来对被测程序进行压力测试,检查和评估被测程序的稳定性。

Android官方对这只“猴子”的描述是这样的:

The Monkey is a program that runs on your emulator or device and generates pseudo-random streams of user events such as clicks, touches, or gestures, as well as a number of system-level events. You can use the Monkey to stress-test applications that you are developing, in a random yet repeatable manner.

Monkey是一个程序,运行在您的模拟器或设备上,并生成伪随机的用户事件流,如点击,触摸或手势,以及一些系统级事件。 您可以使用Monkey以随机但可重复的方式对您正在开发的应用程序进行压力测试。

monkey官方文档:http://www.android-doc.com/tools/help/monkey.html

Moneky 路径

Monkey程序是Android系统自带的,其启动脚本是位于Android系统的/system/bin目录的Monkey文件,其jar包是位于Android系统的/system/framework目录的Monkey.jar文件。用户主要是通过adb命令来启动Monkey的,Monkey在运行时,会根据命令行参数的配置,生成伪随机的事件流,并在Android设备上执行对应的测试事件。同时,Monkey还会对测试系统进行监测,当出现以下三种情况时会进行特殊处理:

  • 如限定了Monkey运行在特定包上,当监测到试图转到其他包的操作,将对其进行阻止。
  • 如应用程序崩溃或接收到任何失控异常,Monkey将记录对应的错误日志,并根据命令行参数判断是停止运行还是继续运行。
  • 如果应用程序发生了程序无响应(application not responding)的错误,Monkey将记录对应的错误日志,并根据命令行参数判断是停止运行还是继续运行。
  • 按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。
Monkey启动步骤
  1. 连接移动设备
  2. 连接成功后输入命令
adb shell
  1. 进入到指定目录
cd /system/bin
  1. 输入 monkey命令看到如下提示则说明启动成功。
usage: monkey **[-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]**

​       **[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]**

​       **[--ignore-crashes]** **[--ignore-timeouts]**

​       **[--ignore-security-exceptions]**

​       **[--monitor-native-crashes]** **[--ignore-native-crashes]**

​       **[--kill-process-after-error]** **[--hprof]**

​       **[--pct-touch PERCENT]** **[--pct-motion PERCENT]**

​       **[--pct-trackball PERCENT]** **[--pct-syskeys PERCENT]**

​       **[--pct-nav PERCENT]** **[--pct-majornav PERCENT]**

​       **[--pct-appswitch PERCENT]** **[--pct-flip PERCENT]**

​       **[--pct-anyevent PERCENT]** **[--pct-pinchzoom PERCENT]**

​       **[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]**

​       **[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]**

​       **[--wait-dbg]** **[--dbg-no-events]**

​       **[--setup scriptfile]** **[-f scriptfile [-f scriptfile] ...]**

​       **[--port port]**

​       **[-s SEED]** **[-v [-v] ...]**

​       **[--throttle MILLISEC]** **[--randomize-throttle]**

​       **[--profile-wait MILLISEC]**

​       **[--device-sleep-time MILLISEC]**

​       **[--randomize-script]**

​       **[--script-log]**

​       **[--bugreport]**

​       **[--periodic-bugreport]**

​       COUNT
强制关闭monkey
  1. adb shell ps 查看全部在运行的进程
  2. 查找出com.android.commands.monkey 进程PID
  3. adb shell kill pid 杀掉monkey进程
monkey 命令

monkey命令格式如下:

$ adb shell monkey [options] <event-count>
  • [options]是指monkey可传入的参数,是可选项(如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包)
  • <event-count>是指随机发送事件数。如:输入100就是执行100个伪随机事件,为必选项。