Monkey稳定性测试大全

发布时间: 3 months ago

一、什么是monkey?

Monkey是Android中的一个命令行工具,它其实就是SDK中附带的一个工具,可以运行在模拟器里或实际真机设备中。

Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户对应用程序发送随机事件流,按键输入、触摸屏输入、手势输入等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。该工具主要用于进行压力测试,开发人员结合monkey打印的日志解决测试中出现的问题。

  • 测试的对象仅为应用程序包,有一定的局限性;
  • Monkey测试,所有的事件都是随机产生的,不带任何人的主观性;
  • 可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

二、环境搭建

2.1 安装JDK

  1. 下载jdk
    https://www.oracle.com/cn/java/technologies/downloads/#java8-windows
    下载时需要登录登录账号,没有账号直接注册就好,下载完成后,双击按步骤安装即可,建议不要装到c盘。

  2. 配置系统环境变量
新增JAVA_HOME变量,值 jdk安装路径
添加CLASSPATH变量,值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
添加path变量,值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

打开cmd命令窗口,输入java -version验证是否配置成功,出现版本号,说明配置成功了,如下图:
Description

2.2 安装SDK

  1. 下载SDK
    https://www.androiddevtools.cn/index.html下载完成解压即可。

  2. 配置系统环境变量
新增ANDROID_HOME变量,值:sdk安装路径
添加path变量,值为:;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;

打开cmd命令窗口,输入Android验证是否配置成功,下载自己所需的一些包。
Description

三、模拟器、手机配置

3.1 模拟器设置

  1. 下载模拟器(夜神)
  2. 设置模拟器开发者模式-打开USB调试
1. 点开模拟器内的设置
2. 拉下到最下面选择【关于平板电脑】
3. 拉到最下面鼠标左键点击【版本号】7-8下就可以进入开发者模式
4. 返回上一层就可以看到开发者选项
  1. 打开模拟器后,进入模拟器所在路径位置输入cmd,打开命令窗口
1. 查看模拟器信息(查看端口号):adb devices
2. 查看模拟器版本:nox_adb version
3. sdk和模拟器关联:输入adb connect +模拟器信息(127.0.0.1:62001)
4. 查看自己安装的包名:adb shell pm list packages -3

3.2 手机设置

1、查看电脑是否安装adb:adb version
2、手机打开调试模式:连续点击手机版本号
3、开启USB调试
4、adb devices,查看连接设备信息
5、查看包名:adb shell pm list packages -3

四、命令

4.1 执行命令

adb shell monkey -p包名 -v -v -v --throttle 500 360000 >D: monkeylog.txt

adb shell monkey -p 包名 --ignore-crashes --ignore-timeouts --monitor-native- crashes -s sedd值 --throttle 500 -v -v 次数>C:\Users\Administrator\Desktop\testing.log

参数 说明
-p 用于约束限制,用此参数指定一个或多个包 (Package) 。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP
-v Log日志详细级别,越多越详细,最多三个
-s Seed值,它是随机数的事件序列定一个值,若出现问题下次可以重复同样的序列进行排错
–throttle 时间间隔,事件流的时间间隔
–ignore-crashes 忽略应用程序崩溃
–ignore-timeouts 忽略超时
–ignore-native-crashes 忽略本地崩溃
–ignore-security-exceptions 忽略许可错误
–monitor-native-crashes 监控本地崩溃
–ptc touch 触摸事件百分比
–ptc motion 手势事件百分比
–ptc trackball 二指缩放事件,轨迹球事件百分比
–ptc nav 轨迹事件,基本导航事件百分比
–ptc majornav 屏幕旋转事件,主要导航事件百分比
–ptc syskeys 基本导航事件,系统按键事件百分比
–ptc appswitch 主要导航事件,应用启动事件百分比
–ptc anyevent keypress 系统按键事件
–ptc anyevent 启动Activty事件,不常用的button
–ptc anyevent 键盘事件,其他未涉及的事件

注意:我们在测试过程中,建议不要忽略这些异常,尽可能的暴露出程序中存在的问题,如果选择忽略出现crash、anr等现象,手机中就不会有提示,不便于判断测试是否正常。忽略异常是想要对此模块执行完成,尽可能发现更多问题,但是这个问题的判断只能通过log去分析,不便于测试的判断。所以我们]测试建议使用下边的命令:adb shell monkey -p包名 -v -v -v --throttle 500 次数 > D: monkeylog.txt

4.2 停止命令

1、打开cmd命令行窗口输入:adb shell ps | grep monkey,返回来的第一个数字,即是monkey的进程号
2、kill 命令结束进程继续输入:adb shell kill 【刚才查到的进程号】

五、结果分析

得到Monkey测试的log之后,查看log的最下端,是否有类似以下字段:

## Network stats: elapsed time=3799ms (3799ms mobile, 0ms wifi, 0ms not connected)
// Monkey finished

这个字段表明本次的Monkey测试通过,没有异常

在日志中搜索关键词:
1、CRASH:报错闪退现象
2、NOT RESPONDING:进程无响应的现象
3、ANR:程序无响应的问题
4、Exception:其他异常

注意:各事件类型的百分比总数不能超过100%

异常 说明
ArithmeticExecption 算术异常类
NullPointerException 空指针异常类
ClassCastException 类型强制转换异常
NegativeArrayException 数组负下标异常
ArrayIndexOutOfBoundsException 数组下标越界异常
SecturityException 违背安全原则异常
EOFException 文件已结束异常
FileNotFoundException 文件未找到异常
NumberFormatException 字符串转换为数字异常
SQLException 操作数据库异常
IOException 输入输出异常
IllegalAccessError 违法访问错误
OutOfMemoryError 内存不足错误
StackOverflowError 堆栈溢出错误
212
1
0

评论区(0)

官方公众号

官方微信

官方微博

官方QQ群