monkey测试简介

今天开始我也写博客了,一点一点积累吧!

monkey测试主要写了5大块,分别如下:

一.什么是monkey测试及程序介绍

二.monkey测试环境准备

三.monkey基本命令和常用参数

四.monkey测试结果分析

五.monkey注意事项

 

一.什么是monkey测试及程序介绍

1.什么是monkey测试

    monkey测试是运行在模拟器或设备上的一段程序,它产生伪随机事件流(点击、触摸、手势等一些系统级别的事件),主要用于app压力测试,来观察被测应用程序的稳定性和可靠性。

2.monkey的程序介绍

    (1).monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;

    (2).monkey.jar程序是由一个名为“ monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;

    (3).monkey的源码可以在官网上下载

3.monkey的架构

    monkey 运行在设备或模拟器上面,可以脱离PC运行(普遍做法是将monkey作为一个像待测应用发送随机按键消息的测试工具。验证待测应用在这些随机性的输入面前是否会闪退或者崩溃)

 

 

2.monkey测试环境准备

1.安装JDK,并配置环境变量

    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 (1).系统变量→新建 JAVA_HOME 变量,变量值填写jdk的安装目录

 (2).系统变量→寻找 Path 变量→编辑,在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

 (3).系统变量→新建 CLASSPATH 变量,变量写.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

2.安装SDK,并配置环境变量(需要下载完整版sdk)

   http://developer.android.com/sdk/index.html(翻@墙)

   翻@墙教程(http://blog.softweek.net/article/google-hosts)

 (1).系统变量→新建 SDK_HOME 变量,变量值填写sdk的安装目录

 (2).系统变量→寻找 Path 变量→编辑,在变量值最后输入%SDK_HOME%\tools; %SDK_HOME%\ platform-tools

3.连接手机,测试adb环境

(1).在手机上设置【设置】--【系统设置】--【开发者选项】--开启【USB调试】模式;

(2).将手机通过数据线和电脑相连接,使用adb devices 来查看设备Monkey测试。

4.apk包名查看(三种方法)

 (1).手机中安装包名查看器(在应用市场直接下载)

 (2).源码下的AndroidManifest.xml文件查看(无源码反编译)

打开AndroidManifest.xml, manifest节点的package属性值是应用的包名

 (3).aapt命令查看(aapt是sdk自带的一个工具,在sdk\builds-tools\目录下)

    命令行中切换到aapt.exe目录执行:aapt dump badging E:\apk\es3.apk;

 运行后的结果中以下两行分别是应用包名package和入口activity名称
   package: name=’com.estrongs.android.pop’
   launchable-activity: name=’com.estrongs.android.pop.view.FileExplorerActivity’

 

3.monkey基本命令和常用参数

基本命令
adb shell monkey -p com.android.mms --throttle 500 -v -v -v -s 99 --ignore-crashes --ignore-timeouts 164000 > E:\monkey.txt

-P(指定包名)
* 指定一个包: adb shell monkey -p com.htc.Weather 100
* 指定多个包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader
* 不指定包:adb shell monkey 100

-V(指定log级别)
adb shell monkey -p com.htc.Weather –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息;
adb shell monkey -p com.htc.Weather –v -v 100
说明 提供较为详细的日志,包括每个发送到Activity的事件信息;
adb shell monkey -p com.htc.Weather –v -v –v 100
说明 最详细的日志,包括了测试中选中/未选中的Activity信息;

-S(随机数的种子)

用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

eg:

    Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100

    Monkey测试2:adb shell monkey -p com.htc.Weather –s 10 100

 

--throttle(毫秒)

adb shell monkey -p com.htc.Weather –throttle 3000 100

一般为了模拟正常用户操作频率,--throttle <毫秒>值建议为500

 

--ignore-crashes

用于指定当应用程序崩溃时(Force Close错误),Monkey是否停止运行

 

--ignore-timeouts

用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行

下图是所有命令汇总,其他命令用的较少,可自行查阅官方文档:http://developer.android.com/tools/help/monkey.html

 

4.monkey测试结果分析

Monkey测试的log分析,我们可以通过几个关键词来判断测试是否通过。

跑monkey时需要记录3个log,monkey的log(重新指向到某个txt中),dump system的log(查看系统占有),android本身的log logcat

 

Monkey log

 

查看Monkey finished字段

打开LOG,查看log的最下端,是否有类似以下字段:

## Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)

// Monkey finished

这个字段表明本次的Monkey没有异常,测试通过。(如果设置--ignore-crashes和--ignore-timeouts则不能证明一定没有异常)

 

ANR

ANR(Application Not Responding)是一个比较容易遇到的稳定性问题,当一个Android App遇到以下两种情况之一时,会产生ANR:

1.输入事件5秒内未响应完成,例如点击屏幕,按键等操作;

2.BroadcastReceiver10秒内未执行完毕;

在Monkey log中搜索”ANR”字段,如果搜索到有结果,则表明有进程出现问题,测试不通过。

Android的ANR日志存放在/data/anr/traces.txt。其中包括了App每个线程的堆栈信息,我们可以使用以下命令将日志导出到电脑上:

1.进入adb shell,使用以下命令将ANR日志文件复制到可导出的文件夹:

cp /data/anr/traces.txt /sdcard/traces.txt

2.然后用adb命令导出到本地的文件:

adb pull /sdcard/traces.txt 本地文件路径

 

FC

FC(Force Close)强制关闭会出现crash字段,在Log中搜索”crash”(“Exception”)字段,如果有搜索有结果,则表示测试过程中,测试对象出现了崩溃的现象,因此测试不通过。

 

无法搜索到上述信息

出现这种情况,一般都是外界原因而非程序本身原因。比如电脑异常测试中断,需要重新测试

 

5.monkey注意事项

在进行monkey测试的时候,应该避免以下内容导致的测试不能正常结束:

1、电脑设置从不休眠

2、手机设置长亮,防止手机进入锁屏状态

3、开启系统log(具体可根据每个机型平台决定)

4、避免打扰别人,给手机插上耳机

posted @ 2016-03-17 18:43  反馈原始人_Z  阅读(1141)  评论(0编辑  收藏  举报