测试开发进阶(四十六)
为什么要做APP专项测试
- 奔溃(crash)
- 卡顿
- 兼容性问题(占据大多数时间)
- 发热/发烫
硬件耗电->产生热量
- 响应慢
2-5-8原则
2秒钟 -> 优
5秒钟 -> 可以接受
8秒钟 -> 不能接受
专项纬度
场景测试
兼容性测试
- testin云测
- STF实验室平台
压力稳定性测试
- Monkey
弱网测试
- fiddler代理
- network Emulator toolkit
- Facebook ATC
安全测试
- BurpSuite
- ApkTool/Dex2Jar/JD-GUI反编译
- 安装包签名
- 账户安全
性能测试
CPU
- proc文件-Jiffies
- GT/soloPi
电量测试
- 腾讯GT
- battery historian
流量测试
- proc文件
- 腾讯GT
启动时间
- adb shell am start
- soloPi插件
流畅度专项
- 卡顿root cause
- FPS/SM
- GPU呈现模式/GT
- 卡顿分析
- 页面多度绘制
- TraceView/StrictMode
- 频繁GC
内存专项
- 内存泄露/溢出
- 内存占用
- LMK
- leakcanary
兼容性测试
由于移动端的碎片化特征,需要确保App产品能够在不同系统版本,不同屏幕分辨率,不同系统定制ROM也能够有好的用户体验
- 系统版本兼容
Android:
2.2 2.3 milestone
4.0 4.1 4.2 4.4
5.0 5.1
6.0 6.1
7.0 7.1
8.0 8.1
9
IOS:
- 8
- 9
- 10
- 11
- 12
- 13
- 系统定制ROM兼容(Android)
小米MIUI
华为EMUI
魅族flyme
- 屏幕分辨率兼容
APP流量数据
https://tongji.baidu.com/research/app
方案
- 云测平台
- 自建STF平台:http://www.lemfix.com/topics/341
压力稳定性测试
App长时间在前/后台运行,用户对于App的稳定性有更高的要求。
通过稳定性测试来避免奔溃(crash)/无响应(ANR)/内存泄露等问题。
- Monkey 支持Android
优点:
Google原生工具,使用简单,开源
缺点:
基于坐标,遍历深度不够,无详细报告
- Maxim 支持Android
优点:
基于uiautomator引擎实现,多种模式运行
缺点:
不开源,无法定制
- FastMonkey 支持IOS
优点:
基于XCTestWD,swiftmonkey二次开发,无需插桩 效率高
缺点:
配置复杂
adb
- 安装
https://www.douban.com/note/701408420/
- 查看版本
1 | adb version |
- 查看设备连接情况
1 | adb devices |
使用「夜神模拟器」
- 杀死/重启adb服务
1 | adb kill-server |
- 查看当前运行的包名
1
adb shell dumpsys activity | find "mFocusedActivity"
dumpsys:解析信息
activity:页面名字
monkey
乱点1000次
1 | adb shell monkey 1000 |
-p
用于约束限制,用此参数指定一个或多个包(App名字)
指定包之后,Monkey将只允许系统启动指定的App,如果不指定则允许启动设备中的所有APP
1 | adb shell monkey -p com.lemon.lemonban 1000 |
-s
用于指定伪随机数生成器的seed值
如果seed相同,则两次Monkey测试所产生的事件序列也相同
1 | 提前指定,第一次Monkey测试出了bug |
-v
日志级别
-v
默认值,仅提供启动提示,测试完成,最终结果
-v -v
提供较为详细的日志,包括每个发送到Activity的事件信息
-v -v -v
最详细的日志,包括了测试中选中/未选中的Activity信息
1 | adb shell monkey -p com.lemon.lemonban -v -v 1000 |
--throttle <毫秒>
指定用户操作间的时延
1 | adb shell monkey -p com.lemon.lemonban --throttle 3000 1000 |
--randomize-throttle
指定随机延时,单位毫秒
执行1000次随机事件,间隔在0~300毫秒之间
1 | adb shell monkey -p com.lemon.lemonban --throttle 300 --randomize-throttle 1000 |
- 杀死monky
1 | adb shell |
事件百分比
1 | adb shell monkey -p com.lemon.lemonban --pct-touch 100 1000 |
设置全部(100%)为点击事件执行1000次
弱网测试
现在APP网络环境复杂,如果APP没有对网络异常进行兼容处理,那么用户可能在日常使用中遇到APP闪退,ANR(程序无响应),数据丢失等问题
低于2G速度属于弱网,3G也可以划分为弱网,一般WIFI不划入弱网测试范畴
工具:
- fiddler/charles
代理限速,设置延时
按照Charles抓取手机报文的方式设置代理
- Network Emulator Toolkit
网卡限速,设置丢包和延时
- facebook ATC
Linux 工具,需要部署环境,后续设备接入热点即可