Skip to content
字数
5534 字
阅读时间
22 分钟

一、项目概述

1. 项目介绍

前端:https://hmshop-test.itheima.net/
后端:https://hmshop-test.itheima.net/admin
  • 项目:TPSHOP,类似于淘宝、京东等电商平台
  • 项目类型:电商平台
  • 项目特点:
    1. 业务通用性强
    2. 更贴近生活,应用范围广

2. 核心业务及模块

  • 项目角色:买家、卖家等

  • 项目业务:下单业务、发货业务等

  • 系统及模块:

    • 买家:注册登录、商品搜索、购物车、下单、支付、售后
    • 卖家:会员管理、商品管理、订单管理、营销管理、物流管理、供应商管理
  • 如何了解项目?

  1. 先了解项目背景:新项目/迭代项目/重构的项目?
  2. 先找文档 + AI查询了解 + 找人(产品/开发)
  3. 抓核心业务功能:购买、上架、下架、售后

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环境变量:
      1. 下载并安装Android SDK到非中文目录下
      2. 在系统变量中新建变量ANDROID_HOME,变量值为SDK的安装目录
      3. 在系统变量的Path中设置环境变量%ANDROID_HOME%\tools%ANDROID_HOME%\platform-tools
      4. 打开cmd命令行,输入adb --version查看环境变量是否成功设置
    • 同理,在环境变量中设置jdk为系统变量

5. 测试范围

注意区分APP测试与Web端测试的区别。APP测试将非功能测试划分为了性能测试和专项测试两大类,且APP的性能测试与Web端的性能测试不同,APP端注重的是APP对手机资源占用情况的测试,而Web的性能测试是对服务器的性能测试
  1. 功能测试
    1. 业务测试
    2. 功能模块测试
  2. 性能测试
    1. CPU、内存占用
    2. 启动速度
    3. 流量、电量消耗
    4. 流畅度
    5. 稳定性
  3. 专项测试
    1. 安装卸载升级
    2. push消息推送
    3. 交叉事件测试
    4. 用户体验测试
    5. 兼容性测试
APP端与Web端的相同与不同之处
相同点
  1. 同一项目APP和Web使用的后端服务器是相同的
  2. 前后端默认都使用HTTP协议进行交互(也有些APP使用socket进行交互)
  3. APP和web端都需要功能测试
不同点
JSON最常用的格式是对象的键值对。例如:{"username":"Lisi", "age":18}
  1. 架构不同:APP端是C/S架构,Web端是B/S架构
  2. 传输格式不同:APP端前后端交互的数据格式以json为主,web端交互的数据格式为json/HTML等,种类更多
  3. 测试范围(非功能):APP测试还有APP专项APP性能;Web端测兼容性易用性

二、APP功能测试

  • 单模块测试步骤:
    1. 熟悉需求:(核心)测试目的 + 条件
    2. 提取测试点,编写测试用例
      • 测试点梳理(这里仅针对功能测试的测试点进行梳理分析):
        • 显示:是否与UI原型图一致,是否正常
        • 操作(含规则):能否成功
    3. 测试用例评审(与其他测试人员交叉评审,或提交给AI评审)
    4. 执行测试用例
    5. 记录执行过程,登记跟踪缺陷
  • APP功能测试中,以注册登录功能为例,常常需要用户勾选同意协议,点击协议可跳转查看协议内容,这些APP端的网页统称为H5(第5代HTML),本质上就是在APP中嵌入了浏览器的驱动,然后以浏览器的形式打开并渲染了一个网页
    • 登录页面存在可点击的协议条款261
      • 打开后查看到的H5页面内容:304

【扩展】第三方支付原理

  • 原理图:
    • 业务服务器:当前APP的后台
    • 第三方服务器:微信、支付宝等支付软件的服务器
  • 过程描述:
    1. 请求服务器获取能否下单
    2. 服务器确认能够下单成功
    3. APP点击立即支付后,跳转到第三方支付APP进行支付(实际上钱是在第三方支付平台上进行流转的)
    4. 第三方支付后,返回支付的结果(成功)
    5. APP完成支付后,自动刷新状态,并向业务服务器说明刚才的订单已经完成支付,现在的订单状态如何
    6. 第三方服务器立即将订单支付信息调给业务服务器,告诉它金额是否到账
    7. 业务服务器确认收到金额,立即修改订单状态(已支付)
    8. 业务服务器将修改后的订单信息回送给业务APP

三、🌟APP专项测试(尽量背诵)

专项测试的测试点一般都相同,背一背就好。可以按照Xmind文件进行背诵,大方向知道就行了。Xmind文件分享:https://pan.baidu.com/s/1i0FxtgRby20Oxw3ohrlhIw 提取码: ripa
  • 说明:在不同的移动设备上能够持久、稳定运行的APP程序
  • 测试环境:
    1. 真机/模拟器
    2. App安装包(安卓安装包后缀 --> .apk;RS手机安装包后缀 --> .ipa)
  • 测试范围:
    1. 安装卸载升级
    2. 兼容性
    3. push消息推送
    4. 交叉事件(也叫干扰测试,例如:在通话过程中使用支付功能是否能成功)
    5. 用户体验

1.安装卸载升级

  • 使用前:确保安装、升级功能正常
  • 使用后:确保卸载功能正常
1)安装测试关注点
  • 正常场景:
    • 来源:从不同的安装渠道安装(APP商城、手机助手、直接下载apk或ipa文件安装)
    • 去向:在不同的操作系统版本上安装
    • 不同的安装路径(安装到手机上、安装到SD卡上)
    • 卸载后重装
    • 正在运行时覆盖安装
  • 异常场景:
    • 安装时出现异常(关机、断网),恢复后能否继续安装
    • 安装时存储空间不足
    • 安装时手动取消安装
    • 低版本覆盖高版本安装(原先是高版本,能否使用低版本进行覆盖安装)
    • 不兼容的CPU架构
    • 低版本手机安装高版本要 求的APP
2)卸载测试关注点
  • 正常卸载(APP手动卸载、工具卸载)
  • 运行时卸载
  • 取消卸载
  • 卸载异常中断后是否能继续卸载
  • 卸载后无数据残留
3)升级测试关注点
升级后要观察升级前的数据是否正常,必须确保升级后数据正常,才能推送升级版本上线
  • 临近版本升级
  • 跨版本升级
  • 不同安装渠道升级(应用商城、手机助手)
  • 升级提醒成功(可不提醒、可以提示升级、强制升级)
  • 应用内升级时非WIFI提醒

2. APP兼容性

  • 说明:APP在不同的机型上由于软件硬件等不同可能出现各种各样的问题,因此需要做兼容性测试。
  • 测试范围:
    1. 手机型号:覆盖市面上的主流机型(Android:vivo、小米、OPPO、华为)考虑APP线上排名
    2. 系统版本:Android系统、ios系统
    3. 分辨率:1080×1920、720×1280
    4. 屏幕尺寸:5.5、4.7
    5. 网络:3G、4G、5G、WIFI
    6. 应用兼容性:
      1. 手机硬件兼容:home键、电源开关键、音量调节键等
      2. 外部硬件设备兼容:耳机、蓝牙等
      3. 操作系统软件兼容:系统定位功能、时间调节功能等

3. push消息推送测试

  • 什么是push消息?
    • push消息:APP给用户推送的各种消息
    • 前提:需要在手机中"设置" -> "通知"进行push消息的设置
1)两种模式 --> Pull和Push
  • Pull(拉)客户端主动获取:客户端固定时间主动向服务器获取消息
  • Push(推)客户端被动接受:当服务器有消息更新时,主动发送到客户端
2)推送流程
  • 服务器有更新消息 --> 推送服务器 --> APP --> 用户
    • 常见推送服务器(了解):
3)测试点设计
  • Push消息推送的设置:

    • APP服务器设置(交给推送服务器):
      • 推送内容
      • 推送时机
      • 推送频率
      • 推送人群(全部用户/部分用户)
    • 手机端设置:
      • 是否接收通知
      • 提醒位置等
  • 🌟Push消息测试的关注点(测试点):

    • APP服务器设置测试点:
      • Push消息是否按指定的业务规则推送
      • 当Push消息是针对特定用户时,检查收到的Push与用户身份是否相符合
    • 手机端设置测试点:
      • 设置不接收推送消息时,用户是否会收到Push消息
      • 设置push消息显示的位置,是否与配置一致
      • 收到push消息,是否能正常打开跳转
    • 其他测试:
      • APP在前台使用时,收到push消息如何提示
      • APP在后台使用时,收到push消息如何提示
      • APP离线,是否能收到push消息

4. 交叉事件测试

  • 测试点设计:
    • 🌟APP运行时接打电话
    • 🌟APP运行时收发信息
    • 🌟APP运行时连接蓝牙设备
    • APP运行时旋转屏幕
    • APP运行时切换网络(4G、WIFI)
    • APP运行时电量告警、插拔充电器

5. 易用性测试(用户体验测试)

四、性能测试

实际工作中,对以下这些指标的检测一般以小时为单位
  • APP性能:测试APP使用过程中占用硬件资源(cpu、内存、流量、电量)的使用情况
  • APP性能测试分类:
    • App运行时占用手机硬件资源情况(性能指标)
    • App稳定性(长时间运行是否出现异常)
  • APP性能测试关注点:
    1. APP使用时对cpu、内存的占用情况
    2. APP使用时是否流畅
    3. APP使用时电量流量的消耗情况
    4. APP的启动时间是否过长
    5. APP是否能长时间稳定运行

1. 如何测试APP性能

使用mumu模拟器时,机型不要使用VIVO,该机型可能会导致开启了悬浮窗,但仍然提示未获取到悬浮窗权限
  • 使用工具或命令进行测试
  • 工具:
    • Android:SoloPi --> 一个由支付宝开源的Android自动化工具,具备录制回放、性能测试等功能
    • ios:Xcode Instrument --> 苹果官方提供的性能测试分析工具集,深度集成于Xcode开发环境
  • SoloPi功能:
    1. 性能测试:记录并监控APP应用的性能指标;还能进行性能加压模拟,复现APP应用在性能差、网络环境不佳的情况下的表现
    2. 录制回放:能将用户的操作记录下来,支持在各个设备上进行回放
    3. 一机多控:操作一台主机设备来控制多台从机设备,进行重复冗余的兼容性测试,能极大提升兼容性测试的效率

2. 性能内存监控

1)指标
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。
  • SoloPi工具提供了两个内存的监控指标:Private dirty 和 PSS
    • Private dirty(私有内存):进程独占内存,也就是进程销毁时可以回收的内存容量
    • PSS(实际使用内存):将跨进程共享页也加入进来,进行按比例计算PSS。这样能比较准确的表示进程占用的实际物理内存
      • 实际使用内存=共享内存+私有内存
      • 举个例子:扬声器占有共享内存,音乐播放器、接打电话等占用私有内存
  • 图例说明:
2)内存问题的现象
a. 内存泄露(memory leak)
  • 定义:内存泄露指的是程序在申请内存后,退出时无法释放已申请的内存空间。
  • 单次内存泄漏的危害可以忽略,但内存泄露堆积后果严重,无论有多少内存,迟早会被占用完。因此,内存泄露最终会导致内存溢出
b. 内存溢出(out of memory)
  • 定义:内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,就出现了内存溢出的异常问题
3)性能内存测试步骤
  • 需求:浏览网易严选首页的平均内存消耗情况
  • 步骤:
    1. 打开SoloPi工具,配置内存监控543543
    2. 进入APP,操作上述业务,观察运行时的内存指标(监控录制完毕后,在SoloPi中查看监控结果)631
    3. 查看内存运行结果
      • 检查程序实际使用的内存值PSS

3. CPU监控

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

4. APP流量测试【了解】

  • 操作APP会与服务器交换数据,流量就是指这些交互数据的大小
  • 说明示例图:
    • 上行消息就是APP发送给服务器的数据,下行消息是APP接收的服务器的数据(一般下行消息更多)
1)指标
  • SoloPi指标:网络
2)测试步骤
  • 需求:打开网易严选首页(因为一般首页消耗流量最多),上下动态滑动20秒,获取消耗的网络流量。
  • 步骤:
    1. 打开SoloPi工具,勾选流量监控指标网络
    2. 进入APP,操作上述业务
    3. 查看流量统计结果

5. APP电量测试【了解】

模拟器没有电池,无法进行电量测试
  • 定义:APP应用时对电池电量的消耗
  • 常见的用电量大的场景:
    • 定位/实时定位
    • 网络传输(打游戏、刷剧等)
    • 屏幕常亮
    • wake_locker(锁屏解锁)
  • 常见监控方法:
    • 系统自带的接口:在内置的setting中,查看各应用的耗电情况
      • 该方案不能检测固定一段时间内的电池精准消耗
    • 软件工具检测:使用SoloPi、AccuBattery等第三方软件来检测
  • 结果分析:
    • 基准结果进行比对(一般由产品经理给出,或过往的数据)
    • 同行竞品比对
1)指标
  • SoloPi -> 性能测试 -> 电池
2)测试步骤
  • 需求:打开网易严选,进入首页,上下动态滑动2分钟,获取耗电量数据
  • 步骤:
    1. 打开SoloPi的电量性能指标监控
    2. 进入APP,完成需求业务的操作
    3. 保存后,查看SoloPi监控到的数据指标情况

6. 流畅度测试

  • 场景:对动画播放、图片切换的流畅度的测试(没有这类功能的就不需要流畅度测试)
1)监控指标
建议使用SoloPi监控帧率时,勾选“游戏帧率”。因为“帧率”监控得到的数据需要经过计算后才能得知帧率值,而“游戏帧率”指标监控得到的就是直接的帧率值,不需要计算
  • SoloPi提供了监控指标:帧率FPS
    • FPS:Frames per second,即:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数)
    • FPS值越高,画面越流畅
  • 流畅度要求:
    • 让大脑认为动作是连续的,至少需要每秒10~12帧
    • 想到达流畅的程度,至少要到达每秒24帧
    • 如果能维持在60帧是最佳的
  • 当页面多为静态时,FPS值小很正常
  • 若页面多为动态,例如上下滑动加载,FPS值比较大(至少在24帧以上才算作流畅)
2)测试步骤
  • 需求:打开网易严选,进入首页,上下动态滑动2分钟,记录FPS值
  • 步骤:
    1. 打开SoloPi工具,勾选"游戏帧率"
    2. 进入APP,执行业务操作
    3. 记录数据,查看运行帧率结果458
    • 需要根据手机性能、网络情况来综合判断APP的流畅度,若手机与网络都没问题,这种情况下,FPS低大概率是APP的问题

7. APP启动测试

  • 启动速度:从启动APP到主页面加载完成的速度
  • 启动分类:冷启动、热启动
    • 冷启动(常用):启动app进程,这种方式叫冷启动
    • 热启动:将APP从后台置于前台
1)指标
  • SoloPi提供了"启动耗时计算"用于测试APP的启动速度,但该测试是由人工进行操作并计算,不太准确,后续会提供使用ADB命令进行测试的更准确的方法。
2)测试步骤
  • 需求:打开网易严选,测试APP冷启动和热启动速度
  • 步骤:
    1. 打开APP,同时单击"开始录制"
    2. 等待APP完全加载完成,同时单击"结束录制"
    3. 自动计算得到冷启动时间(该误差太大,建议等学习ADB命令后,使用ADB命令进行测试)413
    • 热启动则需要先打开APP,然后将APP置于后台,随后单击开始录制的同时,将后台APP置于前台,等待界面加载完毕后结束录制

五、ADB

贡献者

The avatar of contributor named as freeway348 freeway348

文件历史

撰写