一、App测试
1、App与Web的区别
系统架构:App时C/S结构,Web时B/S结构
C/S(Client/Server):即客户端/服务器,需要下载安装客户端。
B/S(Browser/Server):即浏览器/服务器,基于浏览器访问。
2、 App测试范围
2.1 总结
1. App项目测试范围:
- 功能测试:业务、单功能
- 专项测试:安装、卸载、升级、兼容性、push消息推送、交叉事件、用户体验
- 性能测试:内存、CPU、电量、流量、启动时间、流畅度、稳定性
2. Web与App区别:
- App是C/S结构,Web浏览器是B/S结构。
3、App发布
3.1 概述
- 将开发完成的移动应用程序通过特定的渠道和流程,向公众发布,使得用户可以下载、安装并使用一个用程序。
3.2 分类
内部发布渠道
- 在实际测试工作中,为了方便测试程序包的安装和管理,可以使用一些应用内测分发平台。
如:蒲公英、Testlink等。
- 步骤:
- 开发将应用测试包上传到这些平台上;
- 平台可以生成对应的二维码;
- 测试直接扫码进行应用安装。
线上发布渠道
- 产品测试完成后,将App发布到应用个中平台上。
安卓应用:豌豆荚、应用宝、360助手、各类手机品牌商城等;
IOS应用:主要有App store、iTools、爱思助手等。
- 步骤:
- 开发者账号注册,申请在发布平台(各种应用商店)上架;
- 针对不同的发布平台,在软件包中加入对应的平台ID(渠道ID),上传到发布平台;
- 平台审核通过后,用户即可在应用商店中下载。
注意事项:
- 一般线上发布过程,由开发人员负责。
- 在软件包加入平台ID后,上传到发布平台时,需要测试人员验证核心的业务功能。
3.3 发布策略
项目发布时采用的一种策略,先发布少数(1-3个)服务器,待运行稳定后再发布到所有服务器。
3.4 总结
1. App发布方式
内部发布:蒲公英、Testlink等
线上发布:
- 安卓应用:豌豆荚、应用宝、360助手、各类手机品牌商城等;
- IOS应用:主要有App store、iTools、爱思助手等。
2. 上线发布策略
- 开发环境→测试环境→(策略:灰度发布)→生产环境
- 灰度发布:部分用户可用,若有异常则回滚。
- 线上发布:所有用户可用。
二、App功能测试
1、功能测试
使用技术手段,验证程序功能符合应用需求。
- 对象:核心业务、单功能
- 流程:
- 需求分析
- 测试计划
- 测试用例设计
- 测试用例执行
- 缺陷管理
- 测试报告
- 方法
- 等价类:穷举数据选取
- 边界值:长度范围覆盖
- 判定表:多条件之间约束限制
- 流程图:业务流程
2、案例
三、App非功能测试
1、App专项测试
1.1 什么是专项测试
说明:在不同的移动设备上能持久、稳定的运行App程序。
1.1.1 专项测试目的
- 保障主流移动设备能正常使用App应用
- 不同的网络环境App应用正常使用
- 不同App版本正常使用
1.1.2 专项测试内容
专项测试:安装卸载升级 + 兼容性 + push消息推送 + 交叉事件 + 用户体验
1.1.3 App项目测试环境
1.2 安装、卸载、升级
能对TPshop(安装、卸载、升级)设计测试点
1.2.1 安装测试
1.2.2 卸载测试
1.2.3 升级测试
注意事项
升级后要观察升级前的数据是否正常(当数据结构改变而开发没有处理好时很容易出现升级前的数据混乱)
1.2.4 总结
- 安装:系统版本 + 渠道 + 路径 + 异常后安装
- 卸载:正常卸载 + 运行时卸载 + 取消后卸载
- 升级:临近版本 + 跨版本 + 不同渠道
1.3 兼容性
1.3.1 兼容性测试
1.3.2 兼容性测试关注点
1.3.3 兼容性测试方法
1.3.4 总结
- 兼容性:品牌型号 + 分辨率 + 网络 + 软件 + 硬件
1.4 Push消息推送
1.4.1 Push消息介绍
Push消息是App推送的各种通知。
- 如:点赞、评论、关注。
1.4.2 Push消息推送方式
- Pull(拉)客户端主动获取:客户端固定时间主动向服务器获取消息。
- Push(推)客户端被动接受:当服务器有更新消息时,主动发送到客户端。
Pull方式消耗客户端和服务器资源。
Push方式节省客户端和服务器资源。
提示
- 在App项目中,基于手机电量和流量的考虑,使用的都是push方式进行消息推送,因此又叫Push消息。
1.4.3 Push消息推送流程
1.4.4 Push消息测试关注点
1.4.5 总结
- Push消息:app接收的各种通知
- 推送服务器:操作系统级别 + 自己搭建 + 三方推送
- 关注点:内容 + 业务规则 + 人群 + 显示/关闭通知 + 位置
1.5 交叉测试
1.5.1 交叉测试介绍
交叉测试又叫(冲突、干扰)测试,是指一个功能正在执行过程中,另一个事件或操作对该过程进行干扰的测试。
- 如:在App前台/后台运行同时接听来电或者下载文件等。
1.5.2 交叉事件测试关注点
1.6 用户体验测试
用户体验:UI界面+易用(导航、菜单、提示)+横竖屏
2、App性能测试
2.1 App性能测试介绍
测试app使用期间占用硬件资源(CPU、内存、流量、电量)使用情况。
分类
- App程序运行时占用手机硬件资源情况
- App稳定性
2.2 如何测试App性能?
说明:使用工具或命令进行测试。
- 工具
SoloPi事一个无线的Android自动化工具,具备录制回放、性能测试等功能。
- 功能
性能测试:能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现。
录制回放:能够将用户的操作记录下来,支持在各个设备上进行回放。
一机多控:操作一台主机设备来控制多台从机设备,进行重复冗杂的兼容性测试,能够极大提升兼容性测试的效率。
安装:独立安装的SoloPi(APK,IOS无该版本)像普通App一样安装。
2.2.1 SoloPi使用(选择测试项)
2.2.2 SoloPi使用(监控)
2.2.3 SoloPi使用(查看结果)
2.2.4 总结
- App性能测试分类:资源占用 + 稳定性
- App性能工具:
① Android:工具(SoloPi、GT) + 命令
② IOS:苹果开发工具XCode
2.3 内存测试
2.3.1 内存监控指标
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。
提示:SoloPi工具提供了两个内存的监控指标:Private dirty 和 PSS。
- Private dirty(私有内存):
进程独占内存,也就是进程销毁时可以回收的内存容量。
- PSS(实际使用内存):
将跨进程共享页也加入进来,进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存。
2.3.2 内存问题的现象
2.3.3 总结
1. 性能:
① 内存 + CPU + 流量 + 电量
② 启动速度 + 流畅度 + 稳定性
2. 内存关注:
① 实际使用内存(PSS)
② 私有内存
3. 内存常见问题:
① 内存泄漏:申请内存无释放内存。
② 内存溢出:申请内存时,无内存可用。
2.4 CPU测试
2.4.1 CPU监控指标
SoloPi工具提供了两个CPU的监控指标:全局占用CPU和应用进程CPU。
全局占用CPU:整机的CPU使用水平,即当前手机的CPU整体使用率。
- 在Linux系统下,CPU利用率分为用户态、系统态和空闲态。
- 用户态:表示CPU处于应用程序执行的时间。
- 系统态:表示系统内核执行的时间。
- 空闲态:表示空闲系统进程执行的时间。
- CPU使用率 = CPU执行非系统空闲进程时间 / CPU 总的执行时间
应用进程CPU:表示自开机以来,应用程序消耗的CPU时间的总数。
2.4.2 CPU消耗引起的现象
- CPU使用时间处于90%以上
- 手机发热、耗电量增加
- 响应变慢,引起ANR(Application Not Responding)
2.4.3 总结
- 关注:长时间90%以上
- CPU问题现象:手机发热 + 耗电量增加 + 反应变慢 + 无响应
2.5 流量测试
2.5.1 流量介绍
操作APP会与服务器交换数据,流量就是指这些交互数据的总大小。
2.5.2 性能流量测试案例
2.5.3 总结
流量优化策略:
- 数据的压缩
- 不同数据格式的采用
- 只获取必要的数据
- 缓存机制
- 针对不同的网络类型设置不同的访问策略
2.6 电量测试
2.6.1 电量介绍
APP应用使用时对电池电量的平均消耗。
常见的耗电量大的场景:
- 定位
- 网络传输
- 屏幕亮度
- wake_locker(锁屏-解锁)
2.6.2 电量的监控方法
2.6.3 总结
1. 耗电量大场景:
- 定位
- 网络传输
- 屏幕亮度
- wake_locker(锁屏-解锁)
2. 分析结果:
- 与基准数据对比(基准数据来自产品经理,或者以往数据积累)
- 横向对比(竞品)
2.7 流畅度测试
2.7.1 流畅度介绍
动画播放或图片切换的流畅性。
2.7.2 流畅度的监控指标
SoloPi工具提供了流畅度的监控指标:帧率FPS
- 即Frames per second:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数)
- FPS值越高画面越流畅。
流畅度问题产生的影响:
- 想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度。
- 想达到流程的效果,至少需要每秒24帧。
- 60帧每秒的流畅度事最佳的,我们的目标就是让程序的流畅度能接近60帧每秒。
注意事项:
- 当页面多为静态时,FPS值很小是正常的。
- 页面数据多为动态加载时,FPS值比较大(建议在24帧以上)
2.7.3 总结
流畅度:动画播放或图片切换的流畅性。
- 达到流畅效果 24/s
- 最佳流畅效果 60/s
2.8 启动速度测试
2.8.1 启动速度介绍
APP启动速度:从启动app到主页面加载完成的速度。
APP启动分类:冷启动、热启动。
- 冷启动:启动app进程,这种启动方式叫做冷启动。
- 热启动:将app从后台置于前台。
SoloPi指标:启动耗时计算
2.9 稳定性测试
2.9.1 Android-sdk环境搭建
2.9.2 稳定性介绍
app程序能持久良好的运行。
稳定性测试:在app应用中随意操作,挖掘有可能出现的异常。
常见稳定性的异常:
2.9.3 稳定性测试工具-Monkey
2.9.4 稳定性测试步骤
2.9.5 案例
扩展:
2.9.6 总结
1. 常见app不稳定的现象
- 崩溃、闪退、无响应、卡顿。
2. 稳定性测试
- 在app应用中随意操作,挖掘有可能出现的异常。
3. 稳定性怎么测?
- ① Android系统使用自带Monkey工具
- ② 测试次数 [工作中50w-80w次]
4. Monkey工具应用
- ① 执行Monkey命令:adb shell monkey -p 包名 -v 次数 > 日志.log
- ② 检查日志是否有异常,有一场将日志发给开发(ANR、timeout、Exception、out、leak、error)