app端测试——app压力测试

一、app压力测试

  • monkey是谷歌提供的一款用于app稳定性和压力测试的命令行工具
  • monkey可以运行在模拟器或真机设备中
  • monkey会向系统发送伪随机的用户事件,对app应用进行稳定性和压力测试

monkey基本用法

  1. 连接设备
  2. 获取被测包名
  3. 发送命令: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

六、日志分析

  1. 程序无响应:在日志中搜索ANR
  2. 程序崩溃:在日志中搜索crash
  3. 其他问题:在日志中搜索Execption