一、app压力测试
- monkey是谷歌提供的一款用于app稳定性和压力测试的命令行工具
- monkey可以运行在模拟器或真机设备中
- monkey会向系统发送伪随机的用户事件,对app应用进行稳定性和压力测试
monkey基本用法
- 连接设备
- 获取被测包名
- 发送命令:
adb shell monkey [参数] [随机事件数]
adb shell monkey 100
三、monkey常用选项
- -v:用于指定反馈信息级别,总共分三个等级-v -v -v
adb shell mokey -v -v -v 100
- -s:用于指定伪随机数生成器的种子seed值
adb shell monkey -s 123 100
- –throttle:每个事件结束的间隔时间
adb shell monkey --throttle 500 100
- -p:用于约束限制,指定一个或多个包
adb shell monkey -p com.android browser 100
- –ignore-crashes:忽略崩溃
- –ignore-timeouts:忽略超时
- –ignore-security-exceptions:忽略安全异常
- –ignore-native-crashes:忽略本地代码导致的异常
- –monitor-native-crashes:跟踪本地方法的崩溃问题
四、monkey事件选项
- –pct-touch:触摸事件
- –pct-motion:滑动事件
- –pct-appswitch:activity之间切换
- –pct-pinchzoom:缩放事件
- –pct-rotation:屏幕旋转事件
- –pct-flip:键盘事件
- -pct-anyevent:任意事件
- 注意:以上所有类型事件比例加起来不能超过100
五、压力测试实战
5.1、雪球app压力测试
- 确定测试 app 的包名:
adb shell dumpsys activity | grep mFocusedActivity
- 执行 8 小时:
需要跑的时间/命令之间的时间间隔=要执行的次数 8*60*60*1000/300 = 96000
- 日志级别:3 个 v
- 确定雪球中常用的操作类型和比例:滑动、触摸、键盘、系统按键、activity切换
- 确定 seed 值:
-s 12345
- 确定调试选项:
--ignore-crashes --ignore-timeouts --ignore-security-exceptions
- 重定向日志到文件中
>
5.2、压力测试脚本
adb shell monkey -p com.xueqiu.android --pct-touch 30 --pct-motion 30 --pct-syskeys 10 --pct-appswitch 20 --pct-flip 5 --pct-anyevent 5 -s 12345 --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v 1000 >monkey_xueqiu.log
六、日志分析
- 程序无响应:在日志中搜索ANR
- 程序崩溃:在日志中搜索crash
- 其他问题:在日志中搜索Execption