简介
顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么都不懂, 只知道乱敲。通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。
Monkey的环境搭建
首先几个必要的步骤和环境不能少,分别是java相关环境、Android SDK环境,启动android虚拟机或连接真机、执行monkey测试。
环境配置
一、JAVA环境的搭建(windows10为例)
1.安装jdk-7u60-windows-x64(JAVA1.7.0,也可安装最新版的JAVA1.8.0),安装路径可自定义或默认;
2.JAVA环境变量的搭建:我的电脑→右键属性→环境变量,新增JAVA_HOME变量
3.在系统变量里需找Path,点击编辑,新增java目录
4.cmd 执行 Java -version,出现如下内容证明配置成功
二、Android SDK工具安装
1.下载GoogleAndroidSDK_r24(最新版),下载地址:https://www.androiddevtools.cn/# 。可下载exe安装,也可直接下载zip包,直接解压即可,解压方式最方便。
2.点击“SDK Manager.exe”,安装需要的工具
3.根据需要,在以下界面中选择,然后instal
4、配置环境变量,在系统变量path中新增sdk的路径
5.配置完后检查是否ok,出现以下内容,则证明安装成功
cmd中输入android,出现此界面
输入adb
Monkey的使用
一、adb命令
-
设备连接
将手机与电脑建立链接,手机打开开发者模式,允许USB调试。cmd输入:adb devices 查看设备信息,出现信息,则证明与设备连接正常
-
查看应用的包名
1、在cmd中,切换至sdk\builds-tools\目录下,即aapt.exe同级目录下,已erp的app为例,执行:aapt dump badging C:\Users\MC\Downloads\lsez_android_stage_release_20190513194016_1368.apk。其中package为此应用对应的包名
-
执行随机事件
在cmd中执行 adb shell monkey -p com.meicai.mjt.stage -v -v -s 1 10000 --trottle 200>D:\log.txt
参数说明:-p com.meicai.mjt.stage 指定一个或多个包 ; -v -v 日志级别,最多支持3个-v;-s 10000 伪随机数生成seed指。seed值为1,相同seed值再次执行monkey,将产生相同的事件序列;10000 执行10000次事件;--trottle 200 事件之间间隔200毫秒;>D:\log.txt日志存储在d盘的log.txt文件中
-
控制monkye执行时间
需要控制monkey执行的时间,最简单的方式是通过设置执行时长/事件发送延时,计算出需要执行的次数。如:想要monkey运行24小时,每100毫秒发送一个事件。24*60*60*1000/100=864000(次)
adb shell monkey -p com.meicai.mjt.stage -v -v -s 1 864000--trottle 200>D:\log.txt
二、脚本实现多机并行
-
运行脚本monkey_test.py或直接执行start.bat
输入运行参数,即开始执行测试
-
查看测试结果
脚本执行完成后,chkbugreport.jar 可以通过生成的bugreport的内容,生成我们需要的测试报告。 -
结果分析
方法1:原始日志搜索:崩溃问题:在日志中搜索“Exception”;ANR问题:在日志中搜索“ANR”
方法2:比如友盟、Bugly。可以不以来bugreport生成的测试报告,直接在打测试包的时候,生成一个测试渠道的apk,用它来测试,这样在第三方服务提供的网站上,可以清晰看到测试的报告。
方法3:bugreport生成的测试报告
三、配置脚本参数
1、下载并解压执行脚本monkey_test.rar
2、配置.config文件
phone:测试手机的设备号,可通过adb devices获得
execcount:循环执行测试
monkeyclickcount:随机执行操作数
四、执行start.bat脚本,开始monkey测试
五、生成可视化报告
执行命令(路径为下载脚本路径):java -jar D:\softapp\monkey_test\chkbugreport.jar D:\softapp\monkey_test\bugreport.txt
查看报告:打开bugreport_out文件夹中的index.html
六、其他问题:
问题1、运行中的命令如何结束:
执行以下命令结束进程:
adb shell ps |findstr monkey
adb shell kill id