一、前言
1.什么是Monkey
顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么都不懂, 只知道乱敲
2.使用场景
通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常
为什么要开展app压力测试?
(1)、为了提高产品的稳定性;
(2)、为了提高产品的留存率;
那什么时候进行压力测试呢?
首轮功能测试通过以后,等产品稳定,没有太多的 bug 的时候,一般会用 monkey 去测试待测应用的稳定性,健壮性
(是否会发生闪退,崩溃,无响应)和整机测试
3.所需环境
adb
jdk
具体安装这里就不再赘述
4.具体使用方式及日志分析
这里我也不做搬运工了
贴几个自己感觉不错的教程
5.关于Monkey测试的停止条件
Monkey Test执行过程中在下列三种情况下会自动停止:
1.如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。
2.如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。
3.如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
通过多次并且不同设定下的Monkey测试才算它是一个稳定性足够的程序
二、界面版工具
1.界面版优势:
- 无需命令输入,简单易操作,极大提高工作效率;
- 可根据原生 monkey seed 值或者时间来控制执行次数或者运行时间;
2.界面展示
3.使用方式
1.打开exe运行程序
2.选择设备
3.自行设置事件次数
、seed值
、延迟时间
、及事件比例
4.输入要测试的包名
5.开始执行
6.查看日志
4.用chkbugreport把日志转换成html报告
ChkBugReport介绍
ChkBugReport是一个开源工具,它可以把你得到的bugreprot解析成适合阅读的html文件。导出的html文件包含了根据bugreport数据得出的图表和分析结论。
使用
1.把日志转换为ChkBugReport可解析的格式
adb shell bugreport > log/bugreport.txt
转换过程比较慢,耐心等待,报错不用管
2.解析日志并转换为html报告
java -jar chkbugreport.jar log/bugreport.txt
3.打开logugreport_outindex.html
即可
4.报告释义
- system log:系统日志
- Log level distribution:日志级别分布
- kernel log:内核日志
- event log:事件日志
- raw data:原始数据
目前ChkBugReport可以从bugreport数据中抽取出如下信息:
1、Stacktraces
ChkBugReport可以从bugreport中解析出输出bugreport的最后时刻、导致ANR时刻甚至更多时刻的堆栈信息。在例子中你可以看到进程的优先级和策略都已标示出来,堆栈中耗时的部分颜色是黑红,一些违反Strict Mode的部分(比如主线程中使用数据库)颜色标记为亮红。如果这个线程死锁,在报告的Errors将会出现。
2、Logs
这部分是对system、main和kernel日志的分析,在这里你可以看到每个进程内存使用图、那个程序产生的log最多、Activity的启动耗时、数据库操作耗时统计、对象被锁定时间、AIDL调用时间、Activity和Service的生命周期及其在内存中使用频率等等,详见
3、Packages
ChkBugReport解析bugreport中存储的packages.xml并展示一系列的packages、user ids和 permissions。参见
4、Processes
操作app过程中产生的系统事件日志、内存使用信息等等,参见
5、Battery statistics
电池使用统计信息,参见
6、CPU Frequency statistics
CPU频率统计信息,参见
7、Raw data
被分割成小段的原始数据