一、准备条件
1.测试设备需要是Android 4.1以上版本的系统
2.将手机设置为充电时屏幕不关闭
方法:进入手机设置--开发者选项--充电时屏幕不会休眠
(备注:找不到开发者选项的设备点击内部版本号三次会弹出开发者选项)
3.部分手机(如:魅族),自带手机手机管家,关闭:USB安全管理
方法:手机管家—权限管理—USB安全管理—关闭
4.部分手机(如小米),开启:USB调试(安全设置)
方法:开发者选项—USB调试(安全设置)--开启
5.手机解锁图案设置为“无”
方法:手机系统设置—安全--屏幕锁定图案设置为“无”
6.手机首次执行时如弹出安装uiautomator请按提示一步步点击后安装
7.手机安装uiautomator
进入python所在目录,例如:D:\Python27\Lib\site-packages\uiautomator\libs
adb –s 设备号 install app-uiautomator.apk
adb -s 设备号 install app-uiautomator-test.apk
二、执行说明
1.测试准备:
执行时手机不能和电脑断开,否则不会生成执行日志等文件
2.测试报告:
报告:report/时间戳/设备号
文件:report/时间戳/设备号/monkey.txt(每次执行都生成)
文件:report/时间戳/设备号/20190115_205323_logcat(崩溃时截取的logcat)
文件:report/时间戳/设备号/xxx.csh(崩溃时截取)
3.各按钮说明
帮助:跳转到”SuperMonkey使用说明书“页面
开始:当前选择设备开始执行monkey测试
停止:停止当前选择设备执行的monkey
开始所有:所有设备都开始执行monkey测试
停止所有:停止所有设备执行monkey
获取包名: 请进入到被测试app程序里面,再点击”获取包名“
多设备可以选择相同包,点击”开始全部”同时执行monkey测试
多设备可以选择不同测试包,分别点击”开始“执行相应的monkey测试
4.提示信息
开始:提示"monkey test has been started 设备号"
停止:提示"monkey test has been stoped 设备号"
开始所有:不同设备连续弹出提示"monkey test has been started 设备号"
停止所有:不同设备连续弹出提示"monkey test has been stoped 设备号";
(多设备提示语连续弹出,只保留最后一条)
测试正常结束:{'monkey progress': 'finished', 'testresult': {'CRASH': 0, 'ANR': 0}}
三、monkey各参数段说明
1.-help 查看monkey的帮助信息
例:adb shell monkey -help
2.-p 指定被测应用的包名
例:adb shell monkey -p com.UCMobile.x86 100
如果想要指定多个包名,每一个包名要跟一个-p
例:adb shell monkey -p packageName1 -p packageName2 100
3. COUNT 设置执行的次数
例:adb shell monkey 100
4.-s 设置种子数(相当于设置一个路径,因为monkey是
随机事件,所以为了使回归路径一致就需要设置相同的seed值)
例:adb shell monkey 100 -s 5
如果想重现上面例子的路径下次执行的-s也必须为5
5.--throttle 设置每次随机事件的时间间隔(单位:毫秒)
例:adb shell monkey 100 --throttle 500
6.--throttle time --randomize-throttle 设置随机时间的时间间隔区间
例:adb shell monkey 100 --throttle 500 --randomize-throttle
说明:执行一百次monkey随机事件,每次事件的间隔在0到500毫秒之间不固定
7.-v 设置日志级别最多(默认一个-v)
例:adb shell monkey -v 100
如需更详细的日志可以加多个-v,最多3个
例:adb shell monkey -v -v -v 100
8.--ignore-crashes 运行中忽略crash,遇到crash依然把后面的事件跑完
例:adb shell monkey --ignore-crashes -v 100
9.--ignore-timeouts 运行中忽略ANR,遇到ANR依然把后面的事件跑完
例:adb shell monkey --ignore-timeouts -v 100
10.设置事件百分比,所有的百分比加起来不能超过100%
0:触摸事件百分比,即参数--pct-touch
1:滑动事件百分比,即参数--pct-motion
2:缩放事件百分比,即参数--pct-pinchzoom
3:轨迹球事件百分比,即参数--pct-trackball
4:屏幕旋转事件百分比,即参数--pct-rotation
5:基本导航事件百分比,即参数--pct-nav
6:主要导航事件百分比,即参数--pct-majornav
7:系统事件百分比,即参数--pct-syskeys
8:Activity启动事件百分比,即参数--pct-appswitch
9:键盘翻转事件百分比,即参数--pct-flip
10:其他事件百分比,即参数--pct-anyevent
例:adb shell monkey --pct-touch 20 -v 100
11.--ignore-native-crashes 忽略monkey本身的异常,直到事件执行完毕
例:adb shell monkey --ignore-native-crashes -v 100
四、monkey日志分析
1.崩溃问题
如出现崩溃问题在monkey.txt里搜索CRASH ;
SuperMonkey工具会实时分析和统计崩溃问题
例如:
// CRASH: xxxxxxxx
// Short Msg: java.lang.NullPointerException
2.ANR问题
如出现ANR问题,monkey.txt里搜索ANR in xxx
SuperMonkey工具会实时分析和统计无响应问题
3.Monkey测试完成
如monkey测试完成,monkey.txt里搜索Monkey finished