关于Monkey

 

1. Monkey介绍及作用

Monkey是Android系统SDK中附带的一个命令行工具,可以运行在模拟器例或者真机中,向被测应用程序发送伪随机事件流(如按键、触屏、手势等),进行压力测试。

开发人员可以结合Monkey打印的日志和系统打印的日志,分析测试中的原因。

 

adb全称是Android Debug Bridge 起桥梁连接作用,是Android SDK提供的Debug工具。

 

2. Monkey测试原理

Monkey是由java语言写的,Monkey.jar包是由一个名为monkey的shell脚本来启动执行,shell脚本的存放路径:/system/bin/monkey。

 

3. Monkey的环境搭建

1) 安装JAVA环境

a)      装好java的JDK,配置环境变量

JAVA_HOME:jdk安装路径

PATH:使系统可以在任何路径下识别java命令

%JAVA_HOME%\bin; %JAVA_HOME%\jre\bin

CLASSPATH:java加载类(class或lib)

b)     cmd出现java-verson,java,javac表示环境变量配置成功

2) 安装Android SDK环境

a)      下载最新的Android SDK

b)     解压SDK文件,运行SDK Manager.exe,进行SDK下载

c)      运行后在出现的界面选择要安装的Android版本,点击 “Install X package”

d)     在出现的界面上选择Access license,点击Install。(开始安装,整个安装过程比较久)

3) 连接真机

在dos命令下进入SDK的adb.exe,输入adb devices 显示连接的手机型号。然后就可以开始执行Monkey命令了。

 

 

4. Monkey命令大全

基础参数:

-v 指定打印信息的详细级别,默认为0,最高为2,-v -v -v。

-s 指定随机事件的种子数,相同的种子数产生相同的事件序列。事件相同但是具体的坐标是不同的。

-- throttle 指定用户操作事件间的时延,单位为毫秒。

-p 指定package

 

发送的事件类型

--pct-touch 20 触摸事件

--pct-motion 滑动事件

--pct-trackball 轨迹事件(一个或多个随机移动组成)

--pct-nav 导航事件

--pct-majornav 主要导航事件,如回退按键、菜单按键

--pct-syskeys 系统按键事件的百分比:Home、Back等

--pct-appswitch activity之间的切换

--pct-anyevent 任意事件

 

调试选项

--ignore-crashes 忽略崩溃(Force & Close)

--ingore-timeouts 忽略超时(ANR)

--ignore-security-exceptions 忽略应用程序出现许可错误

--kill-process-after-error 当应用程序发生错误时,应用程序停止并保持在当前状态

--motior-native-crashes 指定是否检视并报告应用程序发生崩溃的本地代码

 

>符号后跟保存在本地的日志文件

2>&1 把中间忽略的异常日志页放入到日志文件中

放在最后的&符号表示开始执行Monkey后拔掉数据线不会影响测试

adb shell screencap 屏幕截图脚本

 

Monkey测试出现错误后,一般的差错步骤:

  1. 找到是哪个地方出现错误
  2. 查看Monkey出错前的一些时间动作,并手动执行该动作
  3. 如若还找不到错误,再执行一遍原来的monkey命令,seed值要一样

 

一般的测试结果分析:

ANR:搜索ANR

崩溃问题:搜索CRASH

异常问题:搜索“Exception” Force Close

错误问题:在日志中搜索“Error”、“Failed”、“Warning”