APP测试入手点:
功能测试、兼容性测试、安装卸载升级测试、交叉事件测试、PUSH测试、性能测试、用户体验测试、稳定性测试等
一、功能测试
显示需求
隐式需求
业务相关、其他角度(异常、分支、逆向思维)、补充
二、兼容性测试
手机型号
系统版本
屏幕尺寸、分辨率
网络
应用兼容性(与手机硬件兼容、与外部硬件设备兼容、与手机操作系统兼容、与其他app兼容)
依据网站:流量研究院(可以看到设备使用情况) https://tongji.baidu.com/research/app
第三方平台:Testin
三、安装、卸载、升级测试
安装测试关注点
正常场景:
1、不同操作系统版本
2、不同安装渠道(appstore、手机助手、直接下载apk或者ipa文件安装)
3、不同安装路径(安装到手机、安装到sd卡)
异常场景:
1、安装时候出现异常(关机、断网),恢复后能否继续安装
2、安装时候存储空间不足
3、安装时候手动取消后再次安装
4、正常运行时覆盖安装
5、低版本覆盖安装高版本
6、卸载后安装
卸载测试关注点
1、正常卸载(APP手动卸载、工具卸载)
2、运行时卸载(一般是工具卸载)
3、取消卸载
4、卸载异常中断
5、卸载后无数据残留
升级测试关注点
1、从临近版本升级
2、跨版本升级
3、不同渠道升级(应用市场、手机助手)
4、升级提醒成功(可不提醒,可以提示升级,强制升级)
5、应用内升级时非WiFi提醒
升级后要观察升级前的数据正常(当数据结构改变而开发没有处理好时候很容易出现升级前的数据混乱)
四、交叉事件测试
又叫冲突测试或者干扰测试。。。例如播放器,然后突然来个电话,中断后的测试
交叉测试关注点:
五、push测试
app独有特点,弹出消息的测试
消息推送基础知识
消息推送场景:
产品角度:功能需要,如新闻推送,工具类产品公告推送
运营角度:活动运营需要,如电商类活动促销,召回用户
推送消息原理(两 种方式 pull和push):
Push消息推送的实质
Push消息推送的方式
1 操作系统级别的消息推送服务
2 调用第三方推送平台
手机厂商类:小米推送、华为推送
第三方平台类:友盟推送、极光推送、云巴(基于MQTT)
3、自己搭建推送服务器
Push推送设置
APP服务器设置:
push消息针对不同的用户群体: 全部用户、部分用户、特定用户
主动推送:主动设置推送人群
自动推送:设置对应规则,用户达到规则,就推送
手机端设置:
push消息推送是否接收通知,提醒位置等
Push消息测试关注点
一、从服务器配置
1、push服务器的设置推送业务规则
2、push服务器设置的推送对象,与实际接收对象是否一致
二、从手机端角度
3、设置不接受push,收不到push消息对同
4、设置接受push,并且设置接受位置,是否按照对应配置展示push消息
5、push消息能够正常打开
三、APP不同状态下push消息测试
6、app在前台运行时候,弹出push消息
7、app在后台运行时候,给出push消息提示
8、app离线时候,是否收到push(push消息是有生命周期的)
六、性能测试
CPU
内存
流量测试
电量测试
流畅度测试
启动速度
性能测试工具:GT(腾讯开发)
作用:1、监控常见的性能指标:CPU、内存、流量、电量、流畅度 (启动速度无法监控)
2、抓取log
3、抓包
安装:单独安装(APK,ios无单独安装包)
集成SDK
基本使用:
安装:手机有 root 权限
(1)进入 AUT界面,配置要监控的指标
(2)进入参数页面,选择要统计的参数,选择需要实时监控的数据
(3)配置日志开头为logcat 为 on
(4)进入 APP 进行测试
(5)回到 GT 界面,在参数界面看查看监控指标的数据统计
(6)进入日志,查看响应的日志记录
随着时间的推移,GT已经不能满足多样化的测试需求了,取而代之的PerfDog-性能狗,腾讯主推的移动端性能测试工具
性能测试工具
- Perfdog
CPU知识点介绍
一、GT工具提供了两个CPU的监控指标(CPU关键指标): CPU和iffies
1、CPU:(实时情况)
整机的CPU使用水平,即当前手机的CPU整体使用率
计算公式:
在 Linux 系统下,CPU 利用率分为用户态、系统态和空闲态
用户态: 表示 CPU 处于应用程序执行的时间 淘宝
系统态:表示系统内核执行的时间 控制电池消耗、屏幕、读写
空闲态:表示空闲系统进程执行的时间。 idle
CPU使用率=CPU执行非系统空闲进程时间/CPU总的执行时间
2、Jiffies :(开机以来情况)
表示自开机以来,应用程序消耗的CPU时间片的总数
二、CPU问题产生的影响:
1 CPU使用长时间处于90%以上
2 手机发热、耗电量增加
3 反应变慢、引起ANR (Application Not Responding)
三、测试步骤
测试方法:
(1)打开 GT,配置 CP U的监控指标
(2)进入被测APP,进行相关的业务操作
(3)进入 GT查看 CPU 的监控统计 (先看曲线)
(4)收集 CPU 详细数据并分析
内存知识点介绍
一、GT工具提供了两个内存的监控指标: PSS和Private dirty
1、Private dirty (私有内存) :
进程独占内存,也就是进程销毁时可以回收的内存容量
2、PSS(实际使用内存):-----关注比较多的
将跨进程共享页也加入进来,进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存
二、常见的内存问题
内存泄漏:
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
内存溢出:
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory.
memory leak会最终会导致out of memory!
三、内存问题产生的影响
1 程序实际使用的内存PSS持续增长 ----考虑内存泄露问题
2 程序出现crash (可能是内存溢出) ----考虑内存溢出(闪退)
四、测试步骤
(1)打开 GT,配置 内存的监控指标
(2)进入被测APP,进行相关的业务操作
(3)进入 GT查看 内存的监控统计
程序实际使用的内存PSS持续增长
程序出现crash
(4)收集 内存详细数据 并分析
流畅度知识点介绍
一、GT工具提供了流畅度的监控指标: FPS
FPS即Frames per second: GPU在一秒内绘制的帧数
二、流畅度问题产生的影响
1 想要让大脑觉得动作是连续的,至少是每秒10-12的速度
2 想达到流畅的效果,至少需要每秒24帧
3 60顿每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60顿每秒
三、测试步骤
主要针对滑动时候的fps
流量知识点介绍
流量:
手机通过运营商的网络访问 nternet,运营商替我们的手机转发数据报文,数据报文的总大小 (字节数)即流量,数据报文是包含手机上下行的报文。
一、GT工具提供了流量的监控指标: NET
二、常用流量测试方法
1 统计测试法
获取应用程序收发的数据报文,统计出对应的流量
2 抓包测试法
主要是利用工具Tcpdump 或者fiddler抓包,导出 pcap 文件,再在 wireshark 中打开进行分析.
三、流量测试的步骤:
(1)打开 GT,配置流量指 NET
(2)进入GT的插件 tab,选择抓包,开始
(3)进入被测 APP,进行相关的业务测试
(4)进入 GT,查看 NET 指标的流量曲线
(5)手机抓包的报文,进行进一步分析
四、场景的流量优化方法(面试题:打开页面速度过慢,如何优化?)
1数据的压缩
2不同数据格式的采用
3 控制访问的频次
4 只获取必要的数据
5 缓存机制
6 针对不同的网络类型设置不同的访问策略
电量知识点介绍
一、GT工具提供了电量的监控指标: 电流,电压,电量跟温度
电量测试:
就是测试移动设备电量消耗快慢的一种测试方法。一般是用平均电流(电池生产厂家一般都采用mAh来标记电池容量大小,平均电流越小,说明设备使用时间就越长)来衡量电量消耗速度。
二、常见的耗电场景:
定位,尤其是调用 GPS 定位。
网络传输,尤其是非 Wifi 环境。
屏幕亮度
CPU 频率
内存调度频度
wake_locker (锁屏和解锁)时间和次数
三、电量结果测试分析
我们可以根据不同的业务场景测试出对应的电量消耗数据,但是是否有问题需要对比分析
对比方法
(1) 与基准数据对比。 (基准数据来自于产品经理,或者以往数据积累)
(2) 横向对比,拉上竞品一起测 (前多数采用这种方法)同样的网络、手机,相似的测试场景,最后对比我们的产品和竞品在耗电量方面的差距,给出优化建议。
启动速度测试
一、启动速度介绍
app的启动分为冷启动,热启动。
冷启动: 指app被后台杀死后,在这个状态打开app,这种启动方式叫做冷启动。
热启动: 指app没有被后台杀死,仍然在后台运行,通常我们再次去打开这个app,这种启动方式叫热启动。
二、测试方法
APP 启动时间的测试方法:
adb命令:db shellam start -W-n 包名/Activity 名
三个重要时间指标:
Thistime: 当前 activity 的时间
Totaltime: APP 启动时间:包括创建进程、APP 初始化、activity 初始化到界面显示。“
waittime: totaltime+前一个activity pause 时间
三、启动速度的测试结果分析
同电量测试一样,我们可以测试出APP冷启动和热启动时花费的时长,但是是否有问题需要对比分析,对比方法
(1)与基准数据对比。 (基准数据来自于产品经理,或者以往数据积累)
(2)横向对比,拉上竞品一起测 (目前多数采用这种方法)同样的网络、手机,相似的测试场景,最后对比我们的产品和竞品在启动时长方面的差距,给出优化建议
七、用户体验测试
用户体验测试关注点
(1) UI界面测试
对照UI交互设计文档,检查每个界面设计菜单、对话框、窗口、风格、布局等
注意事项:
图片、按钮(选中效果)、字体大小、颜色、居中对齐等等
(2)易用性测试
是否有空数据界面设计,引导用户去执行操作
菜单层次是否太深
交互流程分支是否太多
完成业务操作的步骤是否过多
界面中按钮可点击范围是否适中
是否定义Back的逻辑。涉及软硬件交互时,Back键应具体定义
(3)横竖屏测试
横竖屏的切换是否正常 (针对每个页面都要做横竖屏测试)
特别要关注APP中有表格,因为横竖屏的显示宽度不一样
(4)关注手机应用上的其他辅助功能
可以重点关注“放大字体”、“反色”、“语音转换”、多点触碰等功能
八、稳定性测试
通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。如闪退crash、无响应ANR等
稳定性测试工具一-Monkey
Monkey是一个命令行工具(adb命令),是由安卓官方提供的。
测试人员可以通过Monke来模拟用户的触摸、点击、滑动以及系统按键等操作(操作事件都是随机的),从而实现对APP压力的测试和稳定性测试。
开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的问题。
稳定性测试的时机
一般需要等产品稳定了,bug比较少的时候,再用monkey去测试待测试应用的稳定性
PS:APP测试工具
常用的APP测试工具如下,查看对应工具地址。
APP自动化测试工具:
- Appium
- Airtest
- uiautomator2(python)
APP稳定性测试工具:
- Monkey
- MonkeyRunner
- Maxim
- UICrawler
APP性能测试工具:
- GT
- Perfdog
- SoloPi
APP弱网测试&抓包工具:
- QNET
- Fiddler
- Charles
APP兼容性测试工具:
- TestIn
- 腾讯优测
- 百度MTC
- 阿里MQC
APP安全测试工具:
- OWASP ZAP
- Drozer
- MobSF
- QARK