Monkey稳定性测试大全
一、什么是monkey?
Monkey是Android中的一个命令行工具,它其实就是SDK中附带的一个工具,可以运行在模拟器里或实际真机设备中。
Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户对应用程序发送随机事件流,按键输入、触摸屏输入、手势输入等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。该工具主要用于进行压力测试,开发人员结合monkey打印的日志解决测试中出现的问题。
- 测试的对象仅为应用程序包,有一定的局限性;
- Monkey测试,所有的事件都是随机产生的,不带任何人的主观性;
- 可对MonkeyTest的对象,事件数量,类型,频率等进行设置。
二、环境搭建
2.1 安装JDK
- 下载jdk
https://www.oracle.com/cn/java/technologies/downloads/#java8-windows
下载时需要登录登录账号,没有账号直接注册就好,下载完成后,双击按步骤安装即可,建议不要装到c盘。
- 配置系统环境变量
新增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验证是否配置成功,出现版本号,说明配置成功了,如下图:
2.2 安装SDK
- 下载SDK
https://www.androiddevtools.cn/index.html下载完成解压即可。
- 配置系统环境变量
新增ANDROID_HOME变量,值:sdk安装路径
添加path变量,值为:;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;
打开cmd命令窗口,输入Android验证是否配置成功,下载自己所需的一些包。
三、模拟器、手机配置
3.1 模拟器设置
- 下载模拟器(夜神)
- 设置模拟器开发者模式-打开USB调试
1. 点开模拟器内的设置
2. 拉下到最下面选择【关于平板电脑】
3. 拉到最下面鼠标左键点击【版本号】7-8下就可以进入开发者模式
4. 返回上一层就可以看到开发者选项
- 打开模拟器后,进入模拟器所在路径位置输入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 | 堆栈溢出错误 |
评论区(0)