简介
方法:利用Monkey工具,选择某些场景做持续反复操作,以衡量系统的稳定性
工具: monkey 友盟埋点 日志分析工具 系统监控工具GT
场景:
* 随机测试 可以用monkey模拟
* 多个运行中app切换测试;
* 各种事件打扰,如插拔数据线、电话打扰、收发短信、切换网络、浏览网络、使用蓝牙传送/接收数据、相机等;
什么是Monkey
Monkey测试,就像一只猴子,乱敲键盘在测试。通过Monkey程序模拟用户触摸屏幕、滑动、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常(crash).
Monkey作用
1. Monkey 主要用于Android 的压力/稳定性测试的工具,测试APP是否会crash
2. 根据一个指定的命令脚本模拟按键,但是不支持条件判断和读取待测界面信息执行验证操作
3. 什么时候运行monkey测试?
1. app打包转测试功能测试的同时跑monkey测试;
2. 当界面和参数有修改时可以运行一次;
4. monkey测试时间 一般进行8个小时
Monkey命令如何启动
adb shell monkey -p com.xyy.vwill --throttle 100 -s 10 10000 -v -v -v > d:\vwill.log
Monkey命令参数
-p 用此参数指定一个或多个包。指定后只允许系统启动指定的app。不指定包则默认允许系统启动设备中的所有app
-v 用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别:
Level 0 : adb shell monkey -p com.xyy.vwill -v 100
缺省值,仅提供启动提示、测试完成和最终结果等少量信息
Level 1 : adb shell monkey -p com.xyy.vwill -v -v 100
提供较为详细的日志,包括每个发送到Activity的事件信息 app的归定的activity
Level 2 : adb shell monkey -p com.xyy.vwill -v -v -v 100
最详细的日志,包括了测试中选中/未选中的Activity信息 app的所有activity
-s(随机数种子) 用亍指定伪随机数生成器的seed值.每次操作按照一定的先后顺序所组成的一系列操作,即一个序列.每次执行完Monkey之后,从输出里可以看到当前的seed值,只要通过-s参数指定相同的 seed,就可以重复刚才的操作
4. 事件类型
* pct-touch <percent>:指定触摸事件的百分比。
* pct-motion <percent>:指定滑动事件的百分比。
* pct-trackball <percent>:指定轨迹球事件的百分比。
* pct-nav <percent>:指定导航事件中,up、down、left、right 等事件的百分比。
* pct-majornav <percent>:指定导航事件中,back、menu 等事件的百分比。
* pct-syskeys <percent>:指定系统按键的百分比,包括 HOME、Back、音量等。
* pct-appswitch <percent>:指定 Activity 之间切换的比例。
* pct-anyevent <percent>:指定任意事件的百分比。
* 默认情况下,如果不设置,会是--pct-anyevent为百分之百,也就是纯随机事件。如果通过其他的参数配置了之后,如果相加的百分比不为百分百,余下的百分比部分也会生成随机事件(-pct-anyevent 0,表示100%,输入20,表示20%)
--throttle
在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。
如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。单位是毫秒
--monitor-native-crashes : 监视并报告Android系统中本地代码的崩溃事件。
--ignore-crashes:该参数用于指定应用程序出现崩溃时,monkey是否继续运行下去。如果加了该参数那么monkey会继续运行下去直到计数完成
--ignore-timeouts: 忽略超时,app运行中如果超时可能会报错ANR
--ignore-security-exception:该参数用于软件出现错误时,例如证书错误,网络错误等。Monkey是否继续运行直到计数完成
--kill-process-after-error:当应用程序发生错误时,应用程序停止运行并保持当前状态
monkey日志分析
1. 正常情况:如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间。 Monkey finished 代表执行完成
2. 异常情况 :
程序无响应的问题: 在日志中搜索 “ANR”
崩溃问题:在日志中搜索 “Exception”(如果出现空指针,NullPointerException)肯定是有bug
--理论上来说,Monkey所有的Crash都需要在发布前修复掉
查找gt文件
1. 查找gt文件地址: find -name "test"
./mnt/shell/emulated/0/GT/GW/com.xyy.vwill/1.0/test
./data/media/0/GT/GW/com.xyy.vwill/1.0/test
2. 进入查询保存的设备文件
cd ./data/media/0/GT/GW/com.xyy.vwill/1.0/test
3. 将结果保存到本地
adb pull /data/media/0/GT/GW/com.xyy.vwill/1.0/ D:\GT
adb pull ./mnt/shell/emulated/0/GT/GW/com.xyy.vwill/1.0/vwill.log D:\GT