作者:谦谦骄子_458 | 来源:互联网 | 2023-07-29 14:02
如何做android app的压力测试?
为什么要开展压力测试
1.提高产品稳定性
2.提高产品的留存率
什么时候开展压力测试
1.首轮功能测试通过后
2.下班后夜间进行
测试需求:找美女聊天
1.查找
2.添加
3.聊天
手工测试场景
1.查找
2.添加
3.聊天
自动化测试场景
上面一系列事件的组合,模拟事件流
monkey ADB
发送伪随机用户事件的工具,在手机系统中;
使用monkey需要将手机和电脑连接,通过ADB(Android Debug Bridge)进行连接
硬链接:USB线;软连接ADB
monkey script (不支持截屏操作)
一组可以被monkey识别的命令集合
可以完成重复固定的操作
monkey runner
提供一系列API,可以完成模拟事件,截屏操作
1.monkey runner :用来连接设备或模拟器
2.monkey device:提供安装、卸载应用,发送模拟事件
3.monkey image:完成保存图像、对比操作
可以完成的测试类型:
1.多设备的控制
2.功能测试
3.回归测试
monkey 和 monkey runner 的区别
monkey:在 adb shell 中,生成用户或系统的伪随机事件
monkey runner:通过API定义特定命令和事件控制设备
压力测试结果
1.CRASH
崩溃,应用程序使用过程中非正常退出
2.ANR(application not responding)
应用程序响应时间过长
APP的压测实践
测试环境:
1.android SDK
下载地址:www.android-studio.org
配置环境变量:
mac:
添加:
执行使配置生效:
windows系统:
同MAC,只需添加环境变量即可
2.python
安装python
www.python.org
压测过程:
1.手机开发者选项中勾选USB调试
2.确认手机和电脑连接成功
2.1数据线连接
2.2 adb devices 确认
3.安装测试APP
adb install package.apk
4.发送压力指令
adb shell monkey (mongkey随机发送1000个随机事件)
5.获取APP包名
adb logcat |grep START (抓取日志中包含START标签的信息)
6.指定包打压力
adb shell monkey -p package
7.列出执行的操作事件:-v
adb shell monkey -v -p package
monkey高级参数应用
1.throttle参数: 指定事件之间的间隔
adb shell monkey --throttle<毫秒数> 1000
2.seed参数: 指定随机生成数的seed值,每一个seed值都会生成唯一的操作序列,只要seed值一样,操作就是一样的
adb shell monkey -s 1000
3.触摸事件: 设定触摸事件百分比(点击事件占多大比例)
adb shell monkey --pct-touch<数值:100就是100%>
4.动作事件: 设定动作事件百分比(点击屏幕进行其他操作,然后松手)
adb shell monkey --pct-motion<数值> (如果设置的某两种百分比之和不为100,那么其他操作会占用剩余百分比)
5.轨迹球事件: 设定轨迹球事件的百分比
adb shell monkey --pct-trackball<数值>
6.基本导航事件: 设定基本导航事件百分比,上下左右
adb shell monkey --pct-nav<数值>
7.主要导航事件: 设定主要导航事件百分比,中间键,返回键,菜单按键
adb shell monkey --pct-majornav<数值>
8.系统导航事件: 设定系统导航事件百分比,HOME、BACK、拨号、音量
adb shell monkey --pct-syskeys<数值>
9. 启动Activity事件: 设定启动Activity的时间百分比
adb shell monkey --pct-appswitch<数值>
10.其他系统的事件: 设定其他不常用的事件百分比
adb shell monkey --pct-anyevent<数值>
11.崩溃事件: 忽略崩溃和异常直至完成
adb shell monkey --ignore-crashes
12.超时时间: 忽略超时事件直至完成
adb shell monkey --ignore-timeouts
CRASH结果汲取
LOG输出的CRASH,下方有本次的seed值
ANR结果汲取
ANR日志,同样有seed值;
在手动点击出现ANR时,在哪里找log呢?
1.adb shell 进入手机系统
2.cd /data/anr/ 中 traces.txt中
3.more traces.txt 查看,如果出现ANR,那么会放在文件最上方
monkey script
可以进行重复操作,但是不能截屏
执行命令:
adb shell monkey -f <脚本文件>
脚本命令:
实例:浏览器重复搜索100次
1.启动APP 2.点击输入框 3.输入查询词 4.点击回车 5.点击搜索按钮 6.等待结果 7.点击清空记录
脚本内容:
activity名要连上包名
注;手机的monkey是不能执行电脑上的脚本的,需要将脚本放到手机里去执行,命令:
adb push demo.script /data/local/tmp/
adb shell
cd /data/local/tmp/
ls 确认脚本被推入
ll 查看脚本推入时间
启动脚本:
mokey -f demo.script 3
启动程序问题:
android代码中,activity中如果不加入下图蓝色代码,那么程序不允许外部调起,也就说命令行无法调起
获取APP坐标:
在 android-sdk 中的 uiautomatorviewer
uiautomatorviewer 运行
monkey runnre API:
monkeyrunner所在目录: android-sdk/tools
主要实现脚本和用户间的沟通
(正文、标题、button按钮)
执行:
monkeyrunnre demo.py
等待链接的超时时间,单位秒, ID的字符串名称
实现搜索框输入查询,截图:
执行脚本:
monkeyrunner text.py
monkeyrunner要执行多次,使用python脚本循环操作,多线程来实现