web项目环境说明
APP专项测试
兼容性
手机型号不同品牌商,不同机型(华为P30)
操作系统版本:
安卓:根据在线统计平台数据获取
iOS
分辨率
屏幕
尺寸:5.1. 5.5 4.7
类型: 刘海屏 水滴屏 曲面屏 折叠屏
网络: 移动数据 和 WiFi
应用兼容性
手机硬件: 手机上的物理按键(音量键 home键 电源键)
外部硬件: 蓝牙设备 有线设备
操作系统设置: wlan 时间 定位
其他APP: 具有后台播放功能的APP,例如音乐
安装
正常场景
从不同渠道安装
不同操作系统安装
不同的路径安装(手机\SD卡)
异常场景
中断安装(关机 断网),中断之后能否恢复安装
存储空间不足安装
安装时手动取消或暂停.恢复之后是否能正常安装
正在运行时能否覆盖安装(后台运行\前台运行:需要考虑是否会打断用户操作)
低版本覆盖高版本
卸载后再安装(卸载后是否会清除数据)
卸载
正常卸载(手机卸载\使用第三方软件卸载)
运行时卸载(后台运行)
取消卸载(第三方软件\二次弹窗确认时取消)
中断卸载(关机)
卸载后数据残留(给用户提示确认,如果用户同意残留,可以保留数据;如果用户拒绝残留,不可以保留数据)(如果不
做任何确认提示,默认需要清空残留数据)
升级
从临近版本升级(上一次发布的版本)
跨版本升级(历史发布过的版本)
当前版本是n: n-2 升级n
从不同渠道升级
升级成功提醒(红点提示\消息提示)
升级前是否提醒(消息推送提示升级\强制升级不提醒)
自己自研升级系统(日常升级\强制升级)
使用第三方(日常升级\强制升级)
当前版本是否具有升级能力(n升级n+1,升级规则)
干扰测试
接打电话
收发短信
音视频电话
查看应用推送(其他软件的推送\当前软件的推送)
连接蓝牙设备
接收文件弹窗提醒(确认接收\拒绝接收)
旋转屏幕
切换网络(移动数据和WiFi自动切换)
手机自带应用(打开相机\手电筒\计算器)
低电提醒
插拔充电器(充电动画)
push推送
推送服务器(是否按照规则去推送)
推送内容
推送的时间
推送频率
推送的对象
手机端
不接收消息,将不会收到任何推送
接收消息
APP在前台运行时,消息如何显示
APP在后台运行时,消息如何显示
APP离线,消息如何显示
消息能否打开
接收时设置
接收消息但不提醒:手机提醒不会触发
接收消息且提醒: 接收消息的同时触发提醒 (结合手机模式:静音模式\震动模式;铃声)
接收消息但不显示消息内容(例如:微信发来一条消息)
用户体验
UI界面测试(原型图设计是否合理)
横竖屏测试(内容展示是否异常)
易用性测试(空数据提示\菜单层次是否过深\业务操作步骤是否过多\按钮位置是否适中)
手机上的辅助功能(色盲模式\盲人模式)
APP性能测试
性能指标描述: 一定是某种时间内某种条件执行某种操作,性能指标如何
性能测试可以考虑和稳定性结合,monkey测试时使用性能监控工具监控性能数据.
CPU
基线:如果有基线要求,CPU曲线图是否存在长期超过基线的现象(min)
如果没有基线,行业默认90%.
CPU占用过高时可能出现的问题:
手机发烫
页面卡顿
电量消耗严重
快速恢复:清空后台运行的进程
下图 : 蓝色曲线是问题曲线(长时间超过基线),红色曲线是正常曲线
内存:
内存泄露:内存的曲线持续增长(增的远比减的多)
内存溢出:一定是因为有内存泄露才会出现.内存持续增加突然降为0 (应用停止运行)
流畅度
流量
使用了多长时间,消耗了多少流量
测试怎么测: 例如: 1小时持续刷新,查看流量消耗
流量优化方法:
数据的压缩
不同数据格式的采用
控制访问的频次
只获取必要的数据
缓存机制
针对不同的网络类型设置不同的访问策略
电量
使用了多长时间,消耗了多少电量
测试怎么测: 例如: 1小时持续刷新,查看电量消耗
常见的电量消耗较大的场景
定位,尤其是调用 GPS 定位。
网络传输,尤其是非 Wi-Fi 环境。
屏幕亮度
CPU 运算:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电;
wake_locker(锁屏-解锁)时间和次数
启动速度
冷启动: APP离线的状态下启动; 时间长
热启动: APP后台运行的状态下启动. 时间短
命令获取: adb shell am start -W 包名/activity名
模拟器常见问题解决
问题1: devices offline (设备离线) 解决方案:重启模拟器
问题2: devices not found (找不到设备) 解决方案:重启模拟器
问题3: more than one devices emulater(连接了多个设备)
获取设备列表:adb devices
断开不需要的设备: adb disconnect 手机ip
ADB命令格式
- 查看已连接的设备列表:adb devices
- 断开连接设备: adb disconnect 手机ip
- 无线连接设备: adb connect 手机ip(手机和电脑处于同一网段)
- 开启adb服务:adb start-server
- 关闭adb服务:adb kill-server
- 安装软件包: adb install /路径/软件包文件名(-r 保留数据 -t 强制覆盖 例如: adb install -r -t /路径/软件包的
文件名)
- 卸载软件包: adb uninstall app的包名
- 获取包名
获取手机里所有的包名: adb shell pm list packages
获取手机里所有的系统应用的包名: adb shell pm list packages -s
获取手机里所有第三方软件的包名: adb shell pm list packages -3
- 获取当前窗口(注意大小写区分)
Windows: adb shell dumpsys window | findstr mCurrentFocus
10. 清除缓存: adb shell pm clear 包名
11. 启动/停止应用
启动: adb shell am start 包名/activity名(包名是软件的标识,Activity主要描述app的某个页面)
停止: adb shell am force-stop 包名
12. 获取手机日志: adb logcat > 本地文件
注意:执行命令后,手机上操作复现步骤
抓取日志以后重定向到某个文件
‘>’ : 覆盖文件内容
‘>>’ : 追加在文件末尾
使用场景: 测试期间记录日志. adb logcat >本地文件
避免问题由于不确定复现步骤而导致无法复现,并且被研发拒绝
- 获取启动时间: adb shell am start -W 包名/activity名
-W :获取时间
-S:启动前强行停止应用 (冷启动的时间)
-R 数字: 启动次数
注意:参数均为大写,顺序可以调整,但-R后必须是数字
14. 获取内存信息: adb shell dumpsys meminfo 包名
15. 获取CPU:
adb shell dumpsys cpuinfo (查看当前CPU占用情况)
adb shell top -s 9(代表CPU)
16. 获取流量消耗值
1.获取userId : adb shell dumpsys package 包名 | findstr userId
2.获取上行: adb shell cat proc/uid_stat/userId/tcp_snd
3.获取下行:adb shell cat proc/uid_stat/userId/tcp_rcv
注意:cat后的路径是固定; userId中的’i"是大写; package后不加s
17. 稳定性测试(Monkey)
- adb shell monkey -p 包名 数字 -v >本地文件
- -v -v -v :最高级别日志
- 常用命令:adb shell monkey -p 包名 10000 -v -v -v --throttle 500 > 本地文件