Android基础知识---Android的monkey测试

前言

尴尬,今天我们主管问题我monkey测试是啥,我竟然一脸懵逼,感觉作为一个android开放程序猿有点无地自容,这不赶紧的看看,下次不能再丢人了。(——。——)

一、Monkey测试是什么

Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上。 Monkey会发送伪随机的用户事件流,适合对app做压力测试

二、Monkey用来做什么

Monkey 主要用于Android 的压力测试 自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash.

三、Monkey简单介绍

(1) Monkey程序由Android系统自带,使用Java诧言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar;
(2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
(3)Monkey 命令启动方式:
a)可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试

b)在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试

c ) 在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器

-p <允许的包名列表>

用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果丌指定包, monkey将允许系统启动设备中的所有app。

指定一个包:adb shell monkey -p com.shjt.map 100

指定多个包:adb shell monkey -p fishjoy.control.menu –p com.shjt.map 100

四、Monkey的基本使用

使用的时候要切到android的SDK的platform-tools目录下执行命令行

-v

用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示:

Level 0  :  adb shell monkey -p com.test.map -v 100               // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息   

Level 1  :  adb shell monkey -p com.test.map -v  -v 100          // 提供较为详细的日志,包括每个发送到Activity的事件信息

Level 2  :  adb shell monkey -p com.test.map -v  -v  -v 100     // 最详细的日志,包括了测试中选中/未选中的Activity信息

-s(随机数种子)

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

monkey测试1:adb shell monkey -p com.test.map –s 10 100                

monkey测试2:adb shell monkey -p com.test.map –s 10 100  

–throttle <毫秒>

用亍指定用户操作(即事件)间的时延,单位是毫秒;如果丌指定这个参数,monkey会尽可能快的 生成和发送消息。 示

例:adb shell monkey -p com.shjt.map --throttle 3000 100  

五、Monkey的参数列表

Android基础知识---Android的monkey测试_第1张图片

参数可以分为
四大类—— 常用选项 、 事件选项 、 约束选项 、 调试选项

1:常用选项

--help:打印帮助信息
-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0

2:事件选项

-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200

--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100

--pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:

--pct-motion  (滑动事件)
--pct-trackball  (轨迹球事件) 
--pct-nav  (导航事件 up/down/left/right)
--pct-majornav  (主要导航事件 back key 、 menu key)
--pct-syskeys  (系统按键事件 HomeBack 、startCall 、 endCall 、 volumeControl)
--pct-appswitch  (activity之间的切换)
--pct-anyevent (任意事件)

3:约束选项

-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;
-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了

4:调试选项

--dbg-no-events:初始化启动的activity,但是不产生任何事件。
--hprof:指定该项后在事件序列发送前后会立即生成分析报告  —— 一般建议指定该项。
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:知道连接了调试器才执行monkey测试。

5:简单的举例

1,adb install xx.apk:把指定的安装包apk文件安装到测试设备中
2,adb shell monkey :给指定的设备发送压力测试,number是要测试的次数。执行这个命令的效果就相当于有个手指在你的手机上乱点。我尝试了10000次,结果费了好一会儿功夫才把手机恢复到我想到的效果。
3,adb shell monkey -p pkgname :同上面效果一样,只是对指定包名(pkgname)apk进行测试。
4,Monkey高级参数的应用 
4.1.throttle参数:指定事件之间的间隔时间 
adb shell monkey -throttle :milliseconds是时间值 ,单位毫秒 
4.2.seed参数:伪随机数生成器的seed 值。 
adb shell monkey -s :如果用相同的 seed 值再次运行 Monkey ,它将生成相同的事件序列。 
4.3.touch:设置触摸事件 
adb shell monkey -pct-touch :指定touch事件的百分比percent 
4.4.motion:设置动作事件 
adb shell monkey -pct-motion :指定motion事件的百分比percent 
4.5.trackball:设置轨迹球事件 
adb shell monkey -pct-trackball :指定轨迹球事件百分比percent 
4.6.nav:导航事件设置 
adb shell monkey -pct-nav :指定基本导航事件百分比percent 
4.7.majornav:设置主要导航事件 
adb shell monkey -pct-majornav :设定主要导航事件百分比percent,兼容中间键,返回键,菜单按键 
4.8.syskeys:设置事件 
adb shell monkey -pct-syskeys :设定系统事件百分比percent,比如HOME,BACK,拨号及音量调节等事件。 
4.9.appswitch:启动Activity事件 
adb shell monkey -pct-appswitch :设定启动activity的事件百分比percent 
4.10.anyevent:不常用事件设置 
adb shell monkey -pct-anyevent :设定不常用事件地百分比 
4.11.crashes :程序崩溃事件设置 
adb shell monkey -ignore-crashes :忽略崩溃和异常事件 
4.12.timeouts:超时事件设置 
adb shell monkey -ignore-timeouts :忽略超时事件 

六、Monkey的一个简单的使用(带log)

adb shell monkey -p com.example.admin.test -v 1000 >e:\text.txt

这就是简单的随机1000次测试并吧log’放到e:\text.txt

小tips:这里log不要放到c盘,可能会被拒绝

七、Monkey的log分析

正常情况, 如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成\

入股出现异常情况

Monkey 测试出现错误后,一般的分析步骤
看Monkey的日志 (注意第一个swith以及异常信息等)
1. 程序无响应的问题: 在日志中搜索 “ANR”
2. 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException ) 肯定是有bug
(Monkey 执行中断, 在log最后也能看到当前执行次数)
3.基本以这两类为主,如果没有搜索Error

你可能感兴趣的:(android基础知识)