Monkey简单介绍

什么是monkey

Monkey是Android中的一个命令行工具,monkey测试的原理就是利用socket通讯的方式来模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。当Monkey程序在模拟器或设备运行的时候,如果用户触发了比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试你开发的软件。

Monkey测试目的测试软件的稳定性、健壮性。

 

monkey的特征

(1测试的对象仅为应用程序包,有一定的局限性。

(2)Monkey测试使用的事件流数据流是随机的,不能进行自定义。

(3)可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

 

常见问题处理

(1)adb devices检测不到设备怎么办呢?

如果你在命令行输入adb devices检测不到你的设备,可以查看一下你的adb.exe进程有没有启动,如果这个进程没有启动你的设备肯定是检测不到的。

 

说明:adb全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod手机。它的主要功能有:
* 运行设备的shell(命令行)
* 管理模拟器或设备的端口映射
* 计算机和设备之间上传/下载文件
* 将本地apk软件安装至模拟器或android设备

 

如果你的adb.exe进程一直无法启动,可能是端口被其它程序给占用了,可以自己创建一个adb.exe的端口

创建之前你可以在命令行通过netstat查看一下你设置的这个端口有没有程序占用“开始”-->“运行”-->输入cmd->命令行输入netstat -ano |findstr "25025"如果查看没有进程,说明这个端口没有占用

 

接下来在电脑->属性->高级系统设备->环境变量->系统变量,新建一个adb.exe的端口值,如图是自己创建的:

 

然后启动adb的服务,“开始”-->“运行”-->输入cmd->命令行输入adb start-server->Enter,如图

 

然后在命令行输入adb devices看是否检测到你的设备如图

 

(2如果adb shell 进入后显示$符表示一般用户,#符表示拥有管理员权限用户我们需要切换管理员权限的用户su 户名

 

(3) 如果在安装APP软件时无法安装,提示如下报错:

Installation error:INSTALL_FAILED_INSUFFICIENT_STORAGE

是由于设备存储空间不足造成,需要进入“Settings>Storage”查看剩余空间大小,如果不够,需要删除多余的软件来释放足够的空间。

 

、Monkey基本命令

1).标准的monkey 命令
[adb shell] monkey [options] <eventcount> , 例如:
adb shell monkey -v 500    --------产生500次随机事件。

上面只是一个简单的例子,实际情况中通常会有很多的options 选项
2).四大类—— 常用选项 、 事件选项 、约束选项、调试选项
1:常用选项 (monkey --help)

复制代码 代码如下:

--help:打印帮助信息

 

--pct-touch {百分比} 如:----pct-touch 10    调整触摸事件的百分比

motion 动作事件  trackball轨迹事件  nav基本导航事件   majornav主要导航事件

-v:指定输出信息的详细级别(0~2),一个 -v增加一个级别 , 默认级别为 0 ,最多3个。

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

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

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

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


2:事件选项
-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。当出现问题时要重现操    作问题需要设置相同的种子值。如:-s 1521701962828 (从日志中的seed值获取)
--throttle:每个事件结束后的间隔时间——降低系统的压力,单位是毫秒(如不指定,系统会尽快的发送事件序列)。如:--throttle 100


3:约束选项

复制代码 代码如下:

-p:指定有效的package程序名称

可以添加多个P,测试多个package, 如:-p com.ckt -p com.ckt.asura;

如果不指定包,Monkey将允许系统启动设备中所有的APP。


4:调试选项

复制代码 代码如下:

--dbg-no-events:初始化启动的activity,但是不产生任何事件。
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常(发生证书许可错误时)
--monitor-native-crashes:监视并报告系统中本地代码发生的崩溃

五、Monkey命令举例说明

adb shell monkey -p com.sankuai.meituan  -v 200

但是,工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。monkey 测试命令如下:

adb shell monkey -p com.sankuai.meituan --throttle 300  --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 2000 > D:\a.txt

monkey作用的包:-p com.xy.android.junit

事件之间的延迟时间500毫秒:--throttle 500
产生时间序列的种子值:-s (复现问题时需要设置,从运行日志中获取)
忽略程序崩溃 : --ignore-crashes 

忽略超时: --ignore-timeouts 

监视本地程序崩溃: monitor-native-crashes 

输出信息级别为2: -v -v

产生 10000个事件 : 10000

信息保存路径:> D:\a.txt

 

如果想在执行monkey命令过程中终止测试,执行以下命令即可:

【adb shell】进入后,用【ps | grep monkey】命令查询出monkey进程号(显示的第一个数字),然后用【kill pid 进程号】命令杀掉该进程号即可立即停止测试。

 

手工结束进程:kill pid 17185

六、Monkey 日志分析:

(1)ANR问题:在日志中搜索“ANR ”(注意ANR后有空格)

(2)崩溃问题:在日志中搜索“Exception

Application Not Responding 在Android上,如果你的应该程序有一段时间响应不够灵敏,程序无响应。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章