一.背景
1.为什么要开展压力测试?
- 提高产品的稳定性
- 提高产品的留存率
2.什么时候开展压力测试?
- 首轮功能测试通过后
- 下班后的夜间进行
二.理论
1.什么是Monkey
- Monkey 是发送伪随机用户事件的工具。
2.什么是MonkeyScript
- MonkeyScript 是一组可以被Monkey识别的命令集合
- MonkeyScript 可以完成重复固定的操作
3.什么是MonkeyRunner
- MonkeyRunner 提供了一系列的Api,通过这些Api可以完成模拟事件及截图操作。
4.Monkey 和MonkeyRunner的区别
- Monkey:在adb shell 中,生成用户或系统的伪随机事件。
- MonkeyRunner:通过Api 定义特定命令和事件控制设备。
5.MonkeyRunner Api
- MonkeyRunner:用来连接设备或模拟器
- MonkeyDevice:提供安装、卸载应用,发送模拟事件
- Monkeylmage:完成图像保存,及对比的操作。
6.MonkeyRunner 的测试类型
- 多设备控制
- 功能测试
- 回归测试
7.压力测试结果(异常)
- CRASH:及崩溃,应用程序在使用过程中,非正常退出。
- ANR:Application Not Responding
三.实践
一.基础
1.准备测试环境
- 准备Android SDK环境
- 准备Python 环境
2.连接设备
在cmd中输入adb devices 进行检测设备,如下图
并安装一个app.
3.发送压力指令
4.获取App 报名
cmp=com.xxx.xxx (报名)
5.给指定包进行压力测试
二.Monkey 高级参数的应用
throttle 参数:指定事件之间的间隔
seed参数:指定随机生成数的seed值
应用场景:当app进行压力测试时,可加上该值。如果在测试过程中出现异常,而且我们需要进行复现时。在此运行相同命令便可。
触摸事件:设定触摸事件百分比
- 应用场景:因为monkey 是随机事件。而当我只需要触发点击事件时,便可设置改值
此时你若想看详细的点击情况,可以加 -v
- 动作事件:设定动作事件百分比
轨迹球事件:设定轨迹球事件百分比
基本导航事件:设定基本导航事件百分比,输入设备的上、下、左、右
adb shell monkey --pct-nav <百分比>
- 主要导航事件:设定主要导航事件百分比,兼容中间键、返回键,菜单按键(软件盘上的一些导航键)
adb shell monkey --pct-majornav <百分比>
- 系统导航事件:设定系统导航事件百分比,HOME、BACK、拨号及音量键
adb shell monkey --pct-syskeys <百分比>
- 启动Activity 事件:设定启动Activity的事件百分比
adb shell monkey --pct-appswitch<百分比>
- 不常用事件:设定不常用事件的 百分比
adb shell monkey --pct-anyevent <百分比>
- Crash 异常测试结果析取
测试命令
异常分析:
然而,有时我们为了更好的解决该异常,会想让该异常重现
重现异常
- 崩溃事件:忽略崩溃和异常(在遇到奔溃事件,继续进行应用压测,直到数量满足event-count)
- 超时事件:忽略超时事件(当程序执行时遇到ANR异常时,忽略ANR,继续执行事件,直到数量满足event-count)
adb shell monkey --ignore-timeouts <event-count>
Monkey Script
定义:当你想在App中进行固定的压测事件(比如搜索)时,可以使用Monkey Script
执行Monkey脚本的命令
adb shell monkey -f <scriptfile> <event-count>
写脚本会用到的命令
获取屏幕坐标点位置的工具
C:\Users\Administrator\AppData\Local\Android\Sdk\tools\bin 下 uiautomatorviewer.bat 。点击打开即可。
脚本
注意:在项目mainfest 中的Activity中加入代码,如下图,否则无法从外部调起该Activity
在编写完脚本后,我们还需要将脚本从电脑 push 到手机文件夹中。然后才能执行脚本
1.cmd 切换到脚本所在路劲
例如:
2.执行 push 命令
3.检验是否成功 push
4.运行脚本
MonkeyRunner Api
配置python环境,编辑py 文件