字数
5534 字
阅读时间
22 分钟
一、项目概述
1. 项目介绍
前端:https://hmshop-test.itheima.net/
后端:https://hmshop-test.itheima.net/admin- 项目:TPSHOP,类似于淘宝、京东等电商平台
- 项目类型:电商平台
- 项目特点:
- 业务通用性强
- 更贴近生活,应用范围广
2. 核心业务及模块
项目角色:买家、卖家等
项目业务:下单业务、发货业务等
系统及模块:
- 买家:注册登录、商品搜索、购物车、下单、支付、售后
- 卖家:会员管理、商品管理、订单管理、营销管理、物流管理、供应商管理
如何了解项目?
- 先了解项目背景:新项目/迭代项目/重构的项目?
- 先找文档 + AI查询了解 + 找人(产品/开发)
- 抓核心业务功能:购买、上架、下架、售后
3. 项目架构
- 系统架构(B/S 和 C/S 架构)
- 开发语言
- 前端:HTML + CSS + JavaScript
- 后端:PHP
- 应用服务器:Nginx、Apache
- 数据库:MySQL
- 开发语言
- 客户端:APP(C/S)、Web(B/S)
- 我们负责的是APP端,也就是C/S架构,是C端软件(一般移动端的应用程序都是)
4. 环境配置
1.JDK安装:由于windows下的模拟手机软件一般都是安卓机,测试过程中会用到安卓开发工具包,而这些安卓开发工具包又正好是使用Java语言开发的,所以需要安装JDK(Java运行环境)
2.Android SDK安装:测试Android设备时,需要Android系统对应的各种开发工具(adb等)
3.移动端模拟器(mumu安装):模拟真是的移动端设备,比如Android/IOS手机- 环境:MUMU模拟器(仅用于学习)
- 配置:
- 配置Android SDK环境变量:
- 下载并安装Android SDK到非中文目录下
- 在系统变量中新建变量
ANDROID_HOME,变量值为SDK的安装目录 - 在系统变量的Path中设置环境变量
%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools - 打开cmd命令行,输入
adb --version查看环境变量是否成功设置
- 同理,在环境变量中设置jdk为系统变量
- 配置Android SDK环境变量:
5. 测试范围
注意区分APP测试与Web端测试的区别。APP测试将非功能测试划分为了性能测试和专项测试两大类,且APP的性能测试与Web端的性能测试不同,APP端注重的是APP对手机资源占用情况的测试,而Web的性能测试是对服务器的性能测试- 功能测试
- 业务测试
- 功能模块测试
- 性能测试
- CPU、内存占用
- 启动速度
- 流量、电量消耗
- 流畅度
- 稳定性
- 专项测试
- 安装卸载升级
- push消息推送
- 交叉事件测试
- 用户体验测试
- 兼容性测试
APP端与Web端的相同与不同之处
相同点
- 同一项目APP和Web使用的后端服务器是相同的
- 前后端默认都使用HTTP协议进行交互(也有些APP使用socket进行交互)
- APP和web端都需要功能测试
不同点
JSON最常用的格式是对象的键值对。例如:{"username":"Lisi", "age":18}- 架构不同:APP端是C/S架构,Web端是B/S架构
- 传输格式不同:APP端前后端交互的数据格式以json为主,web端交互的数据格式为json/HTML等,种类更多
- 测试范围(非功能):APP测试还有APP专项、APP性能;Web端测兼容性、易用性等
二、APP功能测试
- 单模块测试步骤:
- 熟悉需求:(核心)测试目的 + 条件
- 提取测试点,编写测试用例
- 测试点梳理(这里仅针对功能测试的测试点进行梳理分析):
- 显示:是否与UI原型图一致,是否正常
- 操作(含规则):能否成功
- 测试点梳理(这里仅针对功能测试的测试点进行梳理分析):
- 测试用例评审(与其他测试人员交叉评审,或提交给AI评审)
- 执行测试用例
- 记录执行过程,登记跟踪缺陷
- APP功能测试中,以注册登录功能为例,常常需要用户勾选同意协议,点击协议可跳转查看协议内容,这些APP端的网页统称为H5(第5代HTML),本质上就是在APP中嵌入了浏览器的驱动,然后以浏览器的形式打开并渲染了一个网页
- 登录页面存在可点击的协议条款

- 打开后查看到的H5页面内容:

- 打开后查看到的H5页面内容:
- 登录页面存在可点击的协议条款
【扩展】第三方支付原理
- 原理图:

- 业务服务器:当前APP的后台
- 第三方服务器:微信、支付宝等支付软件的服务器
- 过程描述:
- 请求服务器获取能否下单
- 服务器确认能够下单成功
- APP点击立即支付后,跳转到第三方支付APP进行支付(实际上钱是在第三方支付平台上进行流转的)
- 第三方支付后,返回支付的结果(成功)
- APP完成支付后,自动刷新状态,并向业务服务器说明刚才的订单已经完成支付,现在的订单状态如何
- 第三方服务器立即将订单支付信息调给业务服务器,告诉它金额是否到账
- 业务服务器确认收到金额,立即修改订单状态(已支付)
- 业务服务器将修改后的订单信息回送给业务APP
三、🌟APP专项测试(尽量背诵)
专项测试的测试点一般都相同,背一背就好。可以按照Xmind文件进行背诵,大方向知道就行了。Xmind文件分享:https://pan.baidu.com/s/1i0FxtgRby20Oxw3ohrlhIw 提取码: ripa- 说明:在不同的移动设备上能够持久、稳定运行的APP程序
- 测试环境:
- 真机/模拟器
- App安装包(安卓安装包后缀 --> .apk;RS手机安装包后缀 --> .ipa)
- 测试范围:
- 安装卸载升级
- 兼容性
- push消息推送
- 交叉事件(也叫干扰测试,例如:在通话过程中使用支付功能是否能成功)
- 用户体验
1.安装卸载升级
- 使用前:确保安装、升级功能正常
- 使用后:确保卸载功能正常
1)安装测试关注点
- 正常场景:
- 来源:从不同的安装渠道安装(APP商城、手机助手、直接下载apk或ipa文件安装)
- 去向:在不同的操作系统版本上安装
- 不同的安装路径(安装到手机上、安装到SD卡上)
- 卸载后重装
- 正在运行时覆盖安装
- 异常场景:
- 安装时出现异常(关机、断网),恢复后能否继续安装
- 安装时存储空间不足
- 安装时手动取消安装
- 低版本覆盖高版本安装(原先是高版本,能否使用低版本进行覆盖安装)
- 不兼容的CPU架构
- 低版本手机安装高版本要 求的APP
2)卸载测试关注点
- 正常卸载(APP手动卸载、工具卸载)
- 运行时卸载
- 取消卸载
- 卸载异常中断后是否能继续卸载
- 卸载后无数据残留
3)升级测试关注点
升级后要观察升级前的数据是否正常,必须确保升级后数据正常,才能推送升级版本上线- 从临近版本升级
- 跨版本升级
- 不同安装渠道升级(应用商城、手机助手)
- 升级提醒成功(可不提醒、可以提示升级、强制升级)
- 应用内升级时非WIFI提醒
2. APP兼容性
- 说明:APP在不同的机型上由于软件、硬件等不同可能出现各种各样的问题,因此需要做兼容性测试。
- 测试范围:
- 手机型号:覆盖市面上的主流机型(Android:vivo、小米、OPPO、华为)考虑APP线上排名
- 可以在testin云测平台进行兼容性测试(远程真机)
- 系统版本:Android系统、ios系统
- 分辨率:1080×1920、720×1280
- 屏幕尺寸:5.5、4.7
- 网络:3G、4G、5G、WIFI
- 应用兼容性:
- 与手机硬件兼容:home键、电源开关键、音量调节键等
- 与外部硬件设备兼容:耳机、蓝牙等
- 与操作系统软件兼容:系统定位功能、时间调节功能等
- 手机型号:覆盖市面上的主流机型(Android:vivo、小米、OPPO、华为)考虑APP线上排名
3. push消息推送测试
- 什么是push消息?
- push消息:APP给用户推送的各种消息
- 前提:需要在手机中"设置" -> "通知"进行push消息的设置
1)两种模式 --> Pull和Push
- Pull(拉)客户端主动获取:客户端固定时间主动向服务器获取消息
- Push(推)客户端被动接受:当服务器有消息更新时,主动发送到客户端
2)推送流程
- 服务器有更新消息 --> 推送服务器 --> APP --> 用户
- 常见推送服务器(了解):

- 常见推送服务器(了解):
3)测试点设计
Push消息推送的设置:
- APP服务器设置(交给推送服务器):
- 推送内容
- 推送时机
- 推送频率
- 推送人群(全部用户/部分用户)
- 手机端设置:
- 是否接收通知
- 提醒位置等
- APP服务器设置(交给推送服务器):
🌟Push消息测试的关注点(测试点):
- APP服务器设置测试点:
- Push消息是否按指定的业务规则推送
- 当Push消息是针对特定用户时,检查收到的Push与用户身份是否相符合
- 手机端设置测试点:
- 设置不接收推送消息时,用户是否会收到Push消息
- 设置push消息显示的位置,是否与配置一致
- 收到push消息,是否能正常打开跳转
- 其他测试:
- APP在前台使用时,收到push消息如何提示
- APP在后台使用时,收到push消息如何提示
- APP离线,是否能收到push消息
- APP服务器设置测试点:
4. 交叉事件测试
- 测试点设计:
- 🌟APP运行时接打电话
- 🌟APP运行时收发信息
- 🌟APP运行时连接蓝牙设备
- APP运行时旋转屏幕
- APP运行时切换网络(4G、WIFI)
- APP运行时电量告警、插拔充电器
5. 易用性测试(用户体验测试)

四、性能测试
实际工作中,对以下这些指标的检测一般以小时为单位- APP性能:测试APP使用过程中占用硬件资源(cpu、内存、流量、电量)的使用情况
- APP性能测试分类:
- App运行时占用手机硬件资源情况(性能指标)
- App稳定性(长时间运行是否出现异常)
- APP性能测试关注点:
- APP使用时对cpu、内存的占用情况
- APP使用时是否流畅
- APP使用时电量流量的消耗情况
- APP的启动时间是否过长
- APP是否能长时间稳定运行
1. 如何测试APP性能
使用mumu模拟器时,机型不要使用VIVO,该机型可能会导致开启了悬浮窗,但仍然提示未获取到悬浮窗权限- 使用工具或命令进行测试
- 工具:
- Android:SoloPi --> 一个由支付宝开源的Android自动化工具,具备录制回放、性能测试等功能
- ios:Xcode Instrument --> 苹果官方提供的性能测试分析工具集,深度集成于Xcode开发环境
- SoloPi功能:
- 性能测试:记录并监控APP应用的性能指标;还能进行性能加压模拟,复现APP应用在性能差、网络环境不佳的情况下的表现
- 录制回放:能将用户的操作记录下来,支持在各个设备上进行回放
- 一机多控:操作一台主机设备来控制多台从机设备,进行重复冗余的兼容性测试,能极大提升兼容性测试的效率
2. 性能内存监控
1)指标
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。- SoloPi工具提供了两个内存的监控指标:Private dirty 和 PSS
- Private dirty(私有内存):进程独占内存,也就是进程销毁时可以回收的内存容量
- PSS(实际使用内存):将跨进程共享页也加入进来,进行按比例计算PSS。这样能比较准确的表示进程占用的实际物理内存
- 实际使用内存=共享内存+私有内存
- 举个例子:扬声器占有共享内存,音乐播放器、接打电话等占用私有内存
- 图例说明:

2)内存问题的现象
a. 内存泄露(memory leak)
- 定义:内存泄露指的是程序在申请内存后,退出时无法释放已申请的内存空间。
- 单次内存泄漏的危害可以忽略,但内存泄露堆积后果严重,无论有多少内存,迟早会被占用完。因此,内存泄露最终会导致内存溢出。
b. 内存溢出(out of memory)
- 定义:内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,就出现了内存溢出的异常问题
3)性能内存测试步骤
- 需求:浏览网易严选首页的平均内存消耗情况
- 步骤:
- 打开SoloPi工具,配置内存监控


- 进入APP,操作上述业务,观察运行时的内存指标(监控录制完毕后,在SoloPi中查看监控结果)

- 查看内存运行结果
- 检查程序实际使用的内存值PSS

- 检查程序实际使用的内存值PSS
- 打开SoloPi工具,配置内存监控
3. CPU监控
1)指标
- SoloPi提供了两个监控指标:全局占用CPU和应用进程CPU
- 全局占用CPU:整机的CPU使用水平,即:当前手机的CPU整体使用率
- 在Linux系统中,CPU利用率分为用户态、系统态和空闲态
- 用户态:表示CPU处于应用程序执行的时间
- 系统态:表示系统内核执行的时间
- 空闲态:表示空闲系统进程执行的时间(空闲进程就是一个低功耗的省电占位符)
- :CPU执行非空闲进程的时间/CPU总的执行时间(包括空闲进程与非空闲进程)
- 在Linux系统中,CPU利用率分为用户态、系统态和空闲态
- 应用进程CPU:表示自开机以来,应用程序消耗的CPU时间的总数
- 全局占用CPU:整机的CPU使用水平,即:当前手机的CPU整体使用率
2)CPU消耗引起的异常现象
- 出现以下现象,基本可判断APP的CPU性能测试不通过
- CPU使用长时间处于90%以上
- 手机发热、耗电量增加
- 响应变慢、引起ANR(即:应用程序无响应,Application Not Responding)
3)性能CPU测试步骤
- 需求:测试滑动首页CPU使用率
- 步骤:
- 打开SoloPi工具,勾选CPU监控指标
- 进入网易严选,操作上述业务,观察运行时的CPU指标
- 查看CPU运行结果
- 检查APP运行时应用程序CPU是否长时间处于90%以上(平均值小于90%即可)

- 检查APP运行时应用程序CPU是否长时间处于90%以上(平均值小于90%即可)
4. APP流量测试【了解】
- 操作APP会与服务器交换数据,流量就是指这些交互数据的大小
- 说明示例图:

- 上行消息就是APP发送给服务器的数据,下行消息是APP接收的服务器的数据(一般下行消息更多)
1)指标
- SoloPi指标:网络
2)测试步骤
- 需求:打开网易严选首页(因为一般首页消耗流量最多),上下动态滑动20秒,获取消耗的网络流量。
- 步骤:
- 打开SoloPi工具,勾选流量监控指标网络
- 进入APP,操作上述业务
- 查看流量统计结果
5. APP电量测试【了解】
模拟器没有电池,无法进行电量测试- 定义:APP应用时对电池电量的消耗
- 常见的用电量大的场景:
- 定位/实时定位
- 网络传输(打游戏、刷剧等)
- 屏幕常亮
- wake_locker(锁屏解锁)
- 常见监控方法:
- 系统自带的接口:在内置的setting中,查看各应用的耗电情况
- 该方案不能检测固定一段时间内的电池精准消耗
- 软件工具检测:使用SoloPi、AccuBattery等第三方软件来检测
- 系统自带的接口:在内置的setting中,查看各应用的耗电情况
- 结果分析:
- 与基准结果进行比对(一般由产品经理给出,或过往的数据)
- 与同行竞品比对
1)指标
- SoloPi -> 性能测试 -> 电池
2)测试步骤
- 需求:打开网易严选,进入首页,上下动态滑动2分钟,获取耗电量数据
- 步骤:
- 打开SoloPi的电量性能指标监控
- 进入APP,完成需求业务的操作
- 保存后,查看SoloPi监控到的数据指标情况
6. 流畅度测试
- 场景:对动画播放、图片切换的流畅度的测试(没有这类功能的就不需要流畅度测试)
1)监控指标
建议使用SoloPi监控帧率时,勾选“游戏帧率”。因为“帧率”监控得到的数据需要经过计算后才能得知帧率值,而“游戏帧率”指标监控得到的就是直接的帧率值,不需要计算- SoloPi提供了监控指标:帧率FPS
- FPS:Frames per second,即:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数)
- FPS值越高,画面越流畅
- 流畅度要求:
- 让大脑认为动作是连续的,至少需要每秒10~12帧
- 想到达流畅的程度,至少要到达每秒24帧
- 如果能维持在60帧是最佳的
- 当页面多为静态时,FPS值小很正常
- 若页面多为动态,例如上下滑动加载,FPS值比较大(至少在24帧以上才算作流畅)
2)测试步骤
- 需求:打开网易严选,进入首页,上下动态滑动2分钟,记录FPS值
- 步骤:
- 打开SoloPi工具,勾选"游戏帧率"
- 进入APP,执行业务操作
- 记录数据,查看运行帧率结果

- 需要根据手机性能、网络情况来综合判断APP的流畅度,若手机与网络都没问题,这种情况下,FPS低大概率是APP的问题
7. APP启动测试
- 启动速度:从启动APP到主页面加载完成的速度
- 启动分类:冷启动、热启动
- 冷启动(常用):启动app进程,这种方式叫冷启动
- 热启动:将APP从后台置于前台
1)指标
- SoloPi提供了"启动耗时计算"用于测试APP的启动速度,但该测试是由人工进行操作并计算,不太准确,后续会提供使用ADB命令进行测试的更准确的方法。
2)测试步骤
- 需求:打开网易严选,测试APP冷启动和热启动速度
- 步骤:
- 打开APP,同时单击"开始录制"

- 等待APP完全加载完成,同时单击"结束录制"

- 自动计算得到冷启动时间(该误差太大,建议等学习ADB命令后,使用ADB命令进行测试)

- 热启动则需要先打开APP,然后将APP置于后台,随后单击开始录制的同时,将后台APP置于前台,等待界面加载完毕后结束录制
- 打开APP,同时单击"开始录制"