软件测试-app测试

首先来看app端和web端的区别,首先是两者的架构不同:

APP端:CS架构,有客户端和服务器,使用需下载安装,运行主要消耗客户端本地硬件资源(如手机内存、CPU、电量等)。

Web端:BS架构,基于浏览器访问,无需下载安装,电脑自带浏览器即可使用。

APP测试分类

APP端测试分为三种:

  • 功能测试
    • 不管是Web端还是APP端,都要对业务功能、单页面功能或单模块功能进行逐一测试,保证功能性正确使用。
  • 性能测试
    • APP端是CS架构,安装在客户端本地运行,使用过程中消耗本地客户端资源(如内存、CPU、电量等),需测试APP端消耗资源的使用情况,保证性能过关。
  • 专项测试
    • 安装卸载升级测试:对APP的安装、卸载、升级过程进行测试。
    • Push消息推送测试:验证服务器推送消息到APP端客户端的推送规则。
    • 交叉事件测试:测试APP在运行过程中受到其他干扰(如电话、短信、其他APP)时的情况。
    • 用户体验测试:关注用户在使用APP过程中的感受和体验。
    • 兼容性测试:测试APP在不同设备、操作系统、屏幕分辨率等环境下的兼容性。

APP发布

APP发布是将开发编写好的APP应用程序通过特殊渠道发布给用户,供用户下载安装和使用。根据发布用户对象,分为内部发布渠道(针对内部测试人员)和线上发布渠道(针对正常用户)。

内部发布

采用内测发布平台,如蒲公英、TestLink等。进入公司后,测试人员需与公司确定使用的平台,从该平台获取APP安装包。分为三步:

  1. 开发将编写好的APP包上传到内测平台软件,平台生成二维码。
  2. 测试人员扫码并绑定对应ID。
  3. 测试人员直接下载安装APP,开始相关测试。

线上发布

产品测试完成后,将APP发布到各个平台上,发布步骤也分为三步:

  1. 开发者账号注册,申请发布平台。
  2. 在开发包中绑定平台对应的ID。
  3. 上传发布包到平台,平台进行审核,审核通过后发布成功,用户可在商店下载。例如在应用宝中搜索微信并安装,说明审核通过且已发布到平台。
  1. 一般线上发布过程由开发人员负责。
  2. 软件包加入平台ID后上传至发布平台时,需测试人员验证核心业务功能。

发布环境与策略

正常情况下有三套环境:

  1. 开发环境:开发阶段使用。
  2. 测试环境:测试人员使用。
  3. 预发布环境/生产环境:服务器集群,有多台服务器电脑。

发布生产环境时,先在少数服务器(1 - 3台)上发布,运行一段时间稳定后,再将最新服务程序发布到所有服务器。目的是减少损失,避免APP在生产环境下出现异常导致所有服务器出现问题。这种策略也叫做灰度发布。

APP功能测试

功能测试是使用技术手段验证程序交付的功能是否符合应用需求,主要测试对象为程序的核心业务和业务中的单功能或单页面。

功能测试主要流程分为六步:

  1. 需求分析:明确程序要交付的功能及其规则。
  2. 编写测试计划:根据组内实际情况,体现测试方法和模块负责人。
  3. 设计测试用例:提取测试点覆盖需求,将测试点转换成可执行的测试用例文档。
  4. 执行测试用例:根据编写的测试用例文档开始测试。
  5. 缺陷管理:若发现需求与实际交付不符,产生缺陷,需进行缺陷管理(提交、验证、关闭)。
  6. 编写测试报告:总结测试过程、bug分布、用例执行情况及不足,为下次改进提供参考。

在用例设计上,共有四种方法:

  1. 等价类:解决数据穷举问题,分为有效等价类和无效等价类。
  2. 边界值:解决边界长度范围问题。
  3. 判定表:解决多条件之间有约束、依赖和限制的问题。
  4. 流程图法:针对核心业务流程进行测试覆盖。

功能测试不分Web和APP,主要针对程序功能测试,使用的方法和流程相同。

APP测试环境

APP 测试分功能测试点设计和测试点执行两部分。设计时可依据需求文档和原型图进行,但执行测试点(包括非功能测试如专项、性能测试)必须要有项目运行环境,所以需搭建环境。

环境指 APP 应用程序运行所需的软件和硬件,要保证项目能正常运行。以 TP shop 为例,所需环境包括模拟器和 APP 安装包。

APP专项测试

安装卸载升级

先来看安装:

  • 正常场景:
    • 在不同的操作系统版本上安装
    • 从不同的安装渠道安装(APP商城、手机助手、直接下载apk或者ipa文件安装)
    • 不同的安装路径(安装到手机上、安装到SD卡上)
    • 卸载后安装
    • 正在运行时覆盖安装
  • 异常场景:
    • 安装时出现异常(关机、断网),恢复后能否继续安装
    • 安装时存储空间不足
    • 安装时手动取消后再次安装
    • 低版本覆盖安装高版本

然后是卸载:

  • 正常卸载(APP手动卸载、工具卸载)
  • 运行时卸载
  • 取消卸载后再次卸载
  • 卸载异常中断后卸载
  • 卸载后无数据残留

最后是升级测试关注点:

  • 从临近版本升级
  • 跨版本升级
  • 不同渠道升级(应用商场、手机助手)
  • 升级提醒成功(可不提醒、可以提示升级、强制升级)
  • 应用内升级时非WIFI提醒

兼容性测试

兼容性测试就是测试APP能否在不同的设备上仍能正常运行,主要的影响因素有:

  1. 品牌型号
  2. 网络
  3. 软件兼容
  4. 硬件兼容

Push消息推送方式

在使用app应用过程中,我们会接收各种各样的通知,像点赞、评论、关注通知等。在app应用里或手机设置中,还能设置这些通知的权限以及显示位置,这些通通都属于push消息。

Push消息推送的两种方式

  1. 客户端主动拉取(Pull)
    • 客户端在指定时间向服务器询问是否有消息,例如一分钟问一次。
    • 这种方式会消耗客户端和服务器的资源。对于客户端,固定时间询问是一种消耗;若在线客户端有上百万甚至上千万台,服务器一分钟要接受上千万的消息询问,资源消耗较大。
  2. 服务器主动推送(Push)
    • 当服务器有更新消息时,直接推送给客户端,客户端无需主动询问。
    • 这种方式比较节省资源,对客户端无影响,所以基于手机流量和电量考虑,通常使用push消息推送。

推送流程

  1. 应用服务器后台有推送消息时,将消息传递给独立的推送服务器。
  2. 推送服务器按照设置好的推送规则,推送给客户端。
  3. 客户端根据自己设置的相关规则(如是否显示、显示位置等),最终将消息呈现给用户。

推送服务器类型

  1. 系统级别消息推送:安卓、IOS或鸿蒙等操作系统有更新提示时会进行推送。
  2. 自建消息服务器:好处是性能强、安全性高,但成本太高。
  3. 现有推送平台
    • 手机厂商有小米推送、华为推送等。
    • 第三方平台有友盟和极光,大多数非手机厂商公司使用较多。
    • BAT大厂有自己的推送服务器。

消息推送关注点及测试点提取

  1. 推送服务器设置相关
    • 关注点:推送内容、时间、频率、人群等策略设置。
    • 测试点
      • 收到消息成功(全部用户)
        • 前置操作:app正在前台使用,已设置好push消息显示位置。
        • 覆盖内容:推送内容、时机、频率、人群(全部用户)。
      • 收到消息成功(部分用户)
        • 前置操作:app在后台运行。
        • 覆盖内容:针对特定用户群体,检查用户身份是否相符。
      • 收到消息成功(离线后上线):离线间隔一段时间(如三个小时)再上线,应能收到对应消息。
      • 收到消息失败(离线):离线状态下应无法收到消息。
      • 关闭推送权限:在手机设置里关闭推送消息权限,应不显示消息。
    • 提醒位置:作为预期检查项,可在任何一个测试点中检查。

交叉测试/用户体验测试

交叉测试又叫冲突或干扰测试,指一个功能正在执行时,另一个事件或操作对该过程的干扰影响。例如,使用app时突然来电话,交叉测试就是测试电话对app应用的干扰。

  1. 关注点
    • 电话对app的干扰
    • 短信干扰
    • push消息推送干扰
    • 蓝牙设备干扰
    • 文件弹窗提醒干扰
    • 屏幕旋转(横屏、竖屏)干扰
    • 网络切换干扰
    • 手机自带应用(相机、计算器等)干扰
    • 电量警告(一般低于5%、20%会有警告)干扰
    • 拔插充电器干扰

用户体验测试指以主观角度感知软件、产品或服务的舒适、易用和友好程度,较难衡量,但可从四个维度关注。

  1. 关注维度及测试点
    • UI界面
      • 参照对象:关注产品原型和UI设计的布局、颜色、风格。
      • 具体测试点
        • 页面布局与原型设计一致。
        • 页面字体、图片、颜色与UI设计一致。
    • 易用性
      • 空数据判断:必填框不允许为空,失去焦点应有提示。
      • 菜单层次:一般不超过三级。
      • 操作步骤:一般不超过五步。
      • 按钮点击范围:适中,方便手指操作。
      • 导航明确:任意界面有返回、退出操作指引。
    • 横竖屏:分辨率切换成功。
    • 其他辅助功能:根据应用面向对象,关注特殊功能设置,如放大字体、语音转换、多点触碰等。
相关推荐
charlie1145141913 小时前
CSS学习笔记5:CSS 盒模型 & Margin 注意事项
前端·css·笔记·学习·教程
Radan小哥3 小时前
Docker学习笔记---day002
笔记·学习·docker
QT 小鲜肉6 小时前
【C++基础与提高】第二章:C++数据类型系统——构建程序的基础砖石
开发语言·c++·笔记
songyuc9 小时前
【S2ANet】Align Deep Features for Oriented Object Detection 译读笔记
人工智能·笔记·目标检测
蒙奇D索大11 小时前
【算法】递归算法的深度实践:从布尔运算到二叉树剪枝的DFS之旅
笔记·学习·算法·leetcode·深度优先·剪枝
卡提西亚11 小时前
C++笔记-25-函数模板
c++·笔记·算法
郭庆汝15 小时前
(二)自然语言处理笔记——Seq2Seq架构、注意力机制
人工智能·笔记·自然语言处理
墨倾许17 小时前
《Windows 11 + Docker:极简DVWA靶场搭建全记录》—— 附详细排错指南与最终解决方案
windows·笔记·网络安全·docker·容器·靶场
WPG大大通17 小时前
【经验分享】Genio 520/Genio720未使用引脚处理方法
经验分享·笔记·信号处理·模块测试·usb·功能模块