APP测试
📌 关于环境
灰度环境/版本:少量机器发版,不能影响用户使用。
内测时分发平台:二维码下载、蒲公英、fir.im
上线时发布平台:
- 安卓:豌豆荚、应用宝、360手机助手、品牌商城。
- IOS:AppStore、iTools
上线:app发给平台方审核后,将获取到的平台号打包至app,再进行冒烟测试,最后正式提交发布。
📌 APP测试要点
- 功能测试
- 兼容性测试
- 安装/卸载/升级测试
- 交叉事件测试
- PUSH测试
- 性能测试
- 用户体验测试
- 稳定性测试
🚁 兼容性测试
概括:兼容不同操作系统版本、不同厂商
#todo,版本上载兼容性的测试策略
- 手机型号
- 主流机型:三星、小米、OPPO、华为
- 用户机型排名:移动设备份额统计、
https://screensiz.es/
- 安卓:4.4以上(5.1、6.0、7.0);ios:9.x以上
- 屏幕尺寸(5.5、4.7)、分辨率(
1080*1920
、720*1280
) - 网络网速
- 应用兼容性
- 与手机硬件兼容:手机按键、音量调节等
- 与外部设备硬件兼容:耳机、蓝牙等
- 与操作系统软件兼容:定位、字体设置等
- 与其他APP兼容:主要是播放器
- 第三方云测平台
🚁 安装/卸载/升级测试
属于新功能时专项测试
-
安装测试点
-
正常场景:
- 在不同的操作系统版本安装
- 从不同安装渠道安装
- 不同的安装路径(手机/SD卡)
- 下载时断点续传
-
异常场景:
- 安装时异常(关机、断网等),恢复后继续安装
- 安装时存储空间不足
- 安装时手动取消后再次安装
- APP正在运行时安装
- 低版本覆盖高版本
- 卸载后安装
-
-
卸载测试点
- 正常卸载(APP手动卸载、工具卸载)
- 运行时卸载
- 取消卸载,回滚文件
- 卸载异常中断
- 卸载后残留数据、用户文件
-
升级测试:升级后需要冒烟测试
- 临近版本升级
- 跨版本升级
- 不同渠道升级
- 升级提醒(无大改动可不提醒、新功能提示升级、重大bug或数据结构改动需强制升级)
- 应用升级在非WIFI环境时提醒
🚁 交叉事件测试
又称冲突测试、干扰测试,如app运行时接听电话、收发短信、应用推送、连接蓝牙、接收文件弹窗、屏幕旋转、切换网络环境、相机计算机等自带应用、电量告警等。
🚁 PUSH测试
即消息通知,分为如下两种方式:
- pull需要客户端不断监测服务器变化
- push主动推送/被动推送-触发事件
测试点:
- 是否根据对应业务规则推送
- 是否根据指定用户、角色推送
- 是否与手机通知设置一致(不允许通知、显示位置等)
- app在使用时、后台运行时、离线时,push消息能否正常提示
🚁 性能测试
- 服务器端,参考JMeter性能测试
- APP性能测试常见指标包括:CPU、内存、流量测试/弱网测试、电量测试、流畅度测试、启动速度(不同软件切换)
🚁 稳定性测试
长时间运行时进行稳定性测试,主要通过monkey
命令,在测试后期进行。
🙋 测试版的app,会让开发将跳转到其他应用的功能屏蔽掉再测。
#todo,ios的稳定性测试
📋 步骤:
adb shell monkey -p package -v 100000 -s 100 > E:\share\monkey.log
,向程序发送十万个伪随机事件,并记录日志。- 查看日志检查运行失败的次数,失败时需分析异常类型。
- 回归测试时,使用同样的命令执行,确保seed值一致。
参考资料:
📌 app异常类型
- ANR-弹窗提示无响应
- Crash-弹窗提示崩溃
- 应用闪退
补充
原生安卓系统ANR、Crash日志等在/data/system/dropbox
、/data/anr/trace.txt
等目录可找到(进入data目录需要root权限),但不同手机厂商加定制化系统时可能缺少这层目录。
ANR
- 日志关键字:
anr in
- 原因分析:1.线程阻塞;2.内存不足;3.CPU满负荷(现在手机性能越来越高,基本不会出现)
Crash
- 日志关键字:
null point
- 原因分析:1.空指针;2.数组越界;3.内存不足;4.CPU满负荷(现在手机性能越来越高,基本不会出现)
闪退
通过查看logcat日志进行排查
📌 adb常用命令
命令 | 补充说明 |
---|---|
adb connect ip:port |
连接到远程设备 |
adb -s ip:port install a.apk |
指定设备安装apk |
adb shell ps |
查后台进程 |
adb shell dumpsys cpuinfo |
查看cpu信息 |
adb shell dumpsys meminfo |
查看内存信息 |
adb shell pm list package |
查看所有包名,参数-3仅展示第三方包 |
adb logcat -v time *:E > logcat.log |
查看日志,参数-v time 指加上时间戳;*:E 指获取error级别日志 |
20241217
adb shell content query --uri content://sms/inbox --projection body --sort "date DESC" --limit 1
--projection,列表;获取最新一条短信的内容,但vivo x200 Pro执行该命令提示:无desc、limit参数。
adb shell content query --uri content://sms/inbox --projection body --sort date
用该命令则可以获取到全部短信内容,再搭配str.splitlines()
转列表提取最新一条短信内容。
参考资料:
🚁 logcat缓冲区
默认256K,写满时会删除较旧的日志。搭配-b Main
指定缓冲区。
- Radio:输出系统通信的日志
- System:输出系统组件的日志
- Events:输出事件(按键事件、触摸事件等)日志
- Main:输出主程序(Java的main方法)日志,不属于上述三层