目录
一、app系统架构
系统架构图(三层架构)
相同点
- app和web使用的后端服务器是相同 (应用服务器和数据库服务器)
- 前后端都可以使用 http 协议进行交互
不同点
- app是 C/S 架构, web是B/S架构,通过浏览器发起请求的
- app前后端数据交互格式以 JSON, web前后端数据交互格式以 HTML 为主
二、项目环境
2.1 项目后端环境
一般公司开发/ 测试人员会使用不同的环境, 以隔离工作过程中彼此的干扰, 同时, 上线给用户使用的产品会在单独的环境中进行部署。
-
开发环境: 指开发人员进行开发调试运行的环境, 一般是开发人员的工作电脑
-
测试环境:提供测试人员使用, 用于测试人员执行测试, 回归缺陷
-
预生产环境 (预发布环境):一般会连接生产环境的数据库, 进行上线前的最后测试和验收
-
生产环境 (线上环境):产品的实际用户使用的环境
2.2 发布流程
开发(开发环境) -> 测试(测试环境 & 预生产环境) -> 上线(灰度发布环境 & 生产环境)
2.3 灰度发布
假如有多台服务器, 先把新版本更新到部分服务器上, 试运行, 如果ok, 再面向全部服务器进行更新
三、app发布平台
当app开发完成后, 相应的开发人员打包应用程序, 由测试人员进行安装
- 安卓: apk测试包
- IOS: ipa测试包
3.1 应用内测分发平台
在实际测试中, 为了方便测试程序包的安装和管理, 一般使用一些免费的应用内测分发平台, 将应用测试包上传到这些平台, 可以生成对应的二维码, 直接扫码进行下载和安装
- 蒲公英
- fir.im
3.2 应用线上发布平台
产品测试完成后, 要在线上进行发布, 让用户下载使用, 如下是安卓和IOS应用常用的发布平台:
- 安卓: 豌豆荚, 应用宝, 360手机助手, 各类手机品牌商城等
- IOS: 主要 AppStore, iTools, 爱思助手等
四、app测试
app在不同的机型上由于软硬件环境不同可能出现各种各样的问题, 因此需要做兼容性测试
4.1 兼容性测试关注点
1 手机型号
Android: 三星, 小米, OPPO, 华为
2 系统版本
Android: 4.4 5.1.6.0 7.0
ios: 9.x 10.x
3 屏幕尺寸, 分辨率
尺寸 5.5 4.7
分辨率 1080*1920 720*1280
4 网络
2G 3G 4G 5G WIFI
5 应用兼容性
与手机硬件兼容
与外部硬件设备兼容
与操作系统软件
与其他app兼容
4.2 安装卸载升级测试
app是客户端程序, 需要提前进行安装才能使用, 因此需要测试安装, 卸载, 升级操作
关注点
安装
正常场景
1 在不同的操作系统版本上安装
2 从不同的安装渠道安装 (app商城, 手机助手, 直接下载安装包)
3 不同的安装路径 (安装到手机, 安装到SD卡上)
异常场景
1 安装时出现异常 (关机, 断网), 恢复后能否继续安装
2 安装时存储空间不足
3 安装时手动取消后, 再次安装
4 正在运行时, 覆盖安装
5 低版本覆盖高版本
6 卸载后的安装
卸载
1 正常卸载 (手工卸载, 工具卸载)
2 运行时卸载
3 取消卸载
4 卸载异常中断
5 卸载后无数据残留
升级
1 从邻近版本升级
2 跨版本升级
3 不同渠道升级
4 升级成功提醒 (可不提醒, 可以提示升级, 提示强制升级)
5 应用内升级时非WIFI提醒
4.3 交叉事件测试
交叉测试又叫做中断测试
指的是一个功能正在执行过程中, 另外一个事件或操作对该过程进行中断的测试
关注点
如何测试: 模拟用户真实场景 (所有可能会影响app正常运行的场景)
- app运行时接打电话
- app运行时收发信息
- app运行时查看应用推送
- app运行时街上蓝牙设备
- app运行时接收文件弹窗的提醒
- app运行时旋转屏幕
- app运行时切换网络
- app运行时使用相机, 计算器等手机自带应用
- app运行时电量告警, 插拔充电器
4.4 Push消息测试
消息推送场景
消息推送场景
- 产品角度: 功能需要, 如: 资讯类产品的新闻推送, 工具类产品的公告推送等等
- 运营角度: 活动需要, 如: 电商类产品的促销, 游戏类产品召回用户等等
消息推送原理
消息推送原理
- Pull:客户端每隔固定时间主动向服务器获取信息, 若有更新信息, 则发送给客户端
- Push:当服务器有更新信息时, 主动发送给客户端
对比
区别: push方式 比 pull 方式更好
消息推送方式
- 操作系统级别的消息推送服务
Android 和 IOS - 调用第三方推送平台
手机厂商:小米推送, 华为推送等等
第三方平台:友盟, 阿里云, 百度云 - 自己搭建推送服务器
好处: 功能好, 性能强, 安全性高
缺点: 成本高
Push推送设置
- app服务器设置
1. 针对的用户群体: 全部, 部分, 特定
2. 推送的频率 - 手机端设置
1. 推送是否接受通知, 是否显示标号
关注点
- Push消息是否按照指定业务规则发送
- 当Push消息是针对特定用户时, 检查收到Push的用户是否相符
- 设置不接受推送消息时, 用户是否能收到Push消息
- 收到Push消息, 是否能正常打开
- app在前台使用时, 收到Push消息如何提示
- app在后台运行时, 收到Push消息如何提示
- app离线, 是否能收到Push消息
4.5 性能测试
4.5.1 常见指标
- CPU:发热问题
- 内存:内存溢出/ 内存泄漏
- 流量
- 电量
- 启动速度:冷启动 / 热启动
- 流畅度
关注点:
- app使用时对CPU, 内存的占用情况
- app使用是否流畅
- app使用时电量, 流量消耗情况
- app启动时间是否过长
4.5.2 CPU
CPU性能问题产生的影响
- CPU使用长时间处于90%以上
- 手机发热, 耗电量增加
- 反应变慢
测试过程
需求
打开被测app, 实际使用app, 查看CPU指标是否正常
测试方法
1 打开GT工具, 配置CPU监控指标 (可配置告警阀值)
2 进入被测app, 操作各个模块的业务, 观察运行时CPU指标
app运行时, CPU是否有快速飙升
app运行时, CPU是否长时间处于90%以上
3 查看CPU运行结果
4 保存CPu详细数据, 并查看CPU的详细的数据统计
4.5.3 内存
常见内存问题
- 内存泄漏 memory leak, 是指程序在申请内存后, 无法释放已申请的内存空间, 如果一直存在这个行为, 无论多少内存, 迟早会被占光
- 内存溢出out of memory, 是指程序在申请内存时, 没有足够的内存空间供其使用
二者关系: 内存泄漏一定会最终导致内存溢出
内存问题产生的影响
内存问题产生的影响
1 程序实际使用的内存PSS持续增长
2 程序出现闪退 (可能是内存溢出)
测试过程
测试过程
需求
打开被测app, 实际使用app, 查看内存指标是否正常
测试方法
1 打开GT工具, 配置内存监控指标 (可配置告警阀值)
2 进入被测app, 操作各个模块的业务, 观察运行时CPU指标
app运行时, PSS是否持续增长
app运行时, 程序是否出现闪退 (可能是内存溢出)
3 查看内存运行结果
4 保存并查看内存的详细的数据统计
4.5.4 流畅度
流畅度影响效果
- 想要让大脑觉得动作是连续的, 至少是每秒10~12帧的速度
- 想要达到流畅的效果, 至少需要每秒24帧
- 较好的流畅度效果, 需要每秒60帧以上
测试过程
测试过程
需求
打开被测app, 实际使用app(页面切换和页面滑动), 查看内存指标是否正常
不同于CPU, 内存, 当页面多为静态时, FPS值小是正常, 如页面数据是动态加载, FPS值比较大
测试方法
1 打开GT工具, 配置流畅度监控指标 (在参数项中配置)
2 进入被测app, 操作页面切换或者滑动, 观察流畅度指标
3 查看流畅度运行结果
4 保存并查看内存的详细的数据统计
4.5.5 流量
常用的流量测试方法
- 统计测试法: 获取应用程序的收发数据报文, 统计对应的流量
- 抓包测试法: 主要是利用 Tcpdump 或 Fiddler 抓包, 导出 pcap 文件, 再去wireshark中打开分析
测试过程
测试过程(对应统计测试法)
需求
打开被测app, 实际使用app(消耗网络流量), 查看流量指标是否正常
测试方法
1 打开GT工具, 配置流量监控指标
2 进入被测app, 消耗流量, 观察流量指标
3 查看运行结果
4 保存并查看流量的详细的数据统计
4.5.6 电量
常见的耗电场景
- 定位, 尤其是调用GPS定位
- 网络传输, 尤其是非wifi环境
- 屏幕亮度
- CPU频率
- 内存调度频率
测试过程
测试过程
需求
调整屏幕亮度到最大
打开被测app, 进行各种业务测试, 并且注意不同的网络环境下进行测试
使用过程中, 间隔几分钟就锁屏或者唤醒屏幕
测试方法
1 打开GT工具, 配置插件, 点击耗电数据采集
2 选择采样频率, 屏幕亮度和采集参数, 点击开始
3 进入被测应用, 操作业务
4 测试完成后, 回到参数页面, 点击停止录制, 保存数据
4.5.7 启动速度
app的启动分为冷启动, 热启动
冷启动: 指app被后台杀死后, 在这个状态下打开app, 这种启动方式就是冷启动
热启动: 指app没有被后台杀死, 仍然在后台运行, 通常我们再次去打开这个app, 这种启动方式叫热启动
测试方法
使用adb命令
4.5.8 用户体验测试
- UI界面
- 对照UI交互设计文档, 检查每个界面设计菜单, 对话框, 窗口, 风格, 布局等等
- 注意: 图片, 按钮(选中效果), 字体大小/颜色/对齐方式等等
- 易用性
- 引导页
- 菜单层次是否太深
- 交互流程分支是否太多
- 完成业务操作的步骤是否过多
- 界面中按钮可点击 范围是否适中
- 横竖屏
- 横竖屏切换是否正常
- 特别关注app的表格在屏幕切换时的表现
- 其他辅助功能
- 重点关注"字体放大"“语音转换”"多点触碰"等等功能
4.5.8 稳定性测试
通过长时间对应用程序进行无序操作,检验其是否出现异常,如程序闪退或无响应,可以使用以下方法:
稳定性测试工具: Monkey
- Monkey 是一个由安卓官方提供的命令行工具。
- 测试人员可以通过 Monkey 来模拟用户的触摸、点击、滑动等操作,这些操作事件是随机的。
- Monkey 实现对应用程序的压力测试和稳定性测试。
稳定性测试的时机:
- 通常在产品较为稳定且 bug 较少时使用 Monkey 进行测试。