APP测试基础

一、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正常运行的场景)

  1. app运行时接打电话
  2. app运行时收发信息
  3. app运行时查看应用推送
  4. app运行时街上蓝牙设备
  5. app运行时接收文件弹窗的提醒
  6. app运行时旋转屏幕
  7. app运行时切换网络
  8. app运行时使用相机, 计算器等手机自带应用
  9. app运行时电量告警, 插拔充电器

4.4 Push消息测试

消息推送场景

消息推送场景

  • 产品角度: 功能需要, 如: 资讯类产品的新闻推送, 工具类产品的公告推送等等
  • 运营角度: 活动需要, 如: 电商类产品的促销, 游戏类产品召回用户等等

消息推送原理

消息推送原理

  1. Pull:客户端每隔固定时间主动向服务器获取信息, 若有更新信息, 则发送给客户端
  2. Push:当服务器有更新信息时, 主动发送给客户端
    对比

区别: push方式 比 pull 方式更好

消息推送方式

  1. 操作系统级别的消息推送服务
    Android 和 IOS
  2. 调用第三方推送平台
    手机厂商:小米推送, 华为推送等等
    第三方平台:友盟, 阿里云, 百度云
  3. 自己搭建推送服务器
    好处: 功能好, 性能强, 安全性高
    缺点: 成本高

Push推送设置

  • app服务器设置
    1. 针对的用户群体: 全部, 部分, 特定
    2. 推送的频率
  • 手机端设置
    1. 推送是否接受通知, 是否显示标号

关注点

  1. Push消息是否按照指定业务规则发送
  2. 当Push消息是针对特定用户时, 检查收到Push的用户是否相符
  3. 设置不接受推送消息时, 用户是否能收到Push消息
  4. 收到Push消息, 是否能正常打开
  5. app在前台使用时, 收到Push消息如何提示
  6. app在后台运行时, 收到Push消息如何提示
  7. app离线, 是否能收到Push消息

4.5 性能测试

4.5.1 常见指标

  • CPU:发热问题
  • 内存:内存溢出/ 内存泄漏
  • 流量
  • 电量
  • 启动速度:冷启动 / 热启动
  • 流畅度

关注点:

  • app使用时对CPU, 内存的占用情况
  • app使用是否流畅
  • app使用时电量, 流量消耗情况
  • app启动时间是否过长

4.5.2 CPU

CPU性能问题产生的影响

  1. CPU使用长时间处于90%以上
  2. 手机发热, 耗电量增加
  3. 反应变慢

测试过程

需求
		打开被测app, 实际使用app, 查看CPU指标是否正常
	测试方法
		1 打开GT工具, 配置CPU监控指标 (可配置告警阀值)
		2 进入被测app, 操作各个模块的业务, 观察运行时CPU指标
			app运行时, CPU是否有快速飙升
			app运行时, CPU是否长时间处于90%以上
		3 查看CPU运行结果
		4 保存CPu详细数据, 并查看CPU的详细的数据统计

4.5.3 内存

常见内存问题

  1. 内存泄漏 memory leak, 是指程序在申请内存后, 无法释放已申请的内存空间, 如果一直存在这个行为, 无论多少内存, 迟早会被占光
  2. 内存溢出out of memory, 是指程序在申请内存时, 没有足够的内存空间供其使用
    二者关系: 内存泄漏一定会最终导致内存溢出

内存问题产生的影响

内存问题产生的影响
	1 程序实际使用的内存PSS持续增长
	2 程序出现闪退 (可能是内存溢出)

测试过程

测试过程
	需求
		打开被测app, 实际使用app, 查看内存指标是否正常
	测试方法
		1 打开GT工具, 配置内存监控指标 (可配置告警阀值)
		2 进入被测app, 操作各个模块的业务, 观察运行时CPU指标
			app运行时, PSS是否持续增长
			app运行时, 程序是否出现闪退 (可能是内存溢出)
		3 查看内存运行结果
		4 保存并查看内存的详细的数据统计

4.5.4 流畅度

流畅度影响效果

  1. 想要让大脑觉得动作是连续的, 至少是每秒10~12帧的速度
  2. 想要达到流畅的效果, 至少需要每秒24帧
  3. 较好的流畅度效果, 需要每秒60帧以上

测试过程

测试过程
	需求
		打开被测app, 实际使用app(页面切换和页面滑动), 查看内存指标是否正常
		不同于CPU, 内存, 当页面多为静态时, FPS值小是正常, 如页面数据是动态加载, FPS值比较大
	测试方法
		1 打开GT工具, 配置流畅度监控指标 (在参数项中配置)
		2 进入被测app, 操作页面切换或者滑动, 观察流畅度指标
		3 查看流畅度运行结果
		4 保存并查看内存的详细的数据统计

4.5.5 流量

常用的流量测试方法

  1. 统计测试法: 获取应用程序的收发数据报文, 统计对应的流量
  2. 抓包测试法: 主要是利用 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 用户体验测试

  1. UI界面
    • 对照UI交互设计文档, 检查每个界面设计菜单, 对话框, 窗口, 风格, 布局等等
    • 注意: 图片, 按钮(选中效果), 字体大小/颜色/对齐方式等等
  2. 易用性
    • 引导页
    • 菜单层次是否太深
    • 交互流程分支是否太多
    • 完成业务操作的步骤是否过多
    • 界面中按钮可点击 范围是否适中
  3. 横竖屏
    • 横竖屏切换是否正常
    • 特别关注app的表格在屏幕切换时的表现
  4. 其他辅助功能
    • 重点关注"字体放大"“语音转换”"多点触碰"等等功能

4.5.8 稳定性测试

通过长时间对应用程序进行无序操作,检验其是否出现异常,如程序闪退或无响应,可以使用以下方法:
稳定性测试工具: Monkey

  • Monkey 是一个由安卓官方提供的命令行工具。
  • 测试人员可以通过 Monkey 来模拟用户的触摸、点击、滑动等操作,这些操作事件是随机的。
  • Monkey 实现对应用程序的压力测试和稳定性测试。

稳定性测试的时机:

  • 通常在产品较为稳定且 bug 较少时使用 Monkey 进行测试。
  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值