专项-弱网络测试

2023-11-14

  • 弱网络

简单理解:网络不好;网络环境复杂、使用场景多变;异常逻辑检查。

  • 弱网络测什么

测试标准

客户端的核心场景必须有断线重连机制,并在有网络抖动、延时、丢包的网络场景下,客户端需达到以下要求:
一. 不能出现以下现象:
1、游戏中不能出现收支不等、客户端卡死/崩溃等异常情况;
2、游戏核心功能(如登录、单局、支付等)不能有导致游戏无法正常进行的UI、交互问题;
3、不能有损害玩家利益或可被玩家额外获利的问题;
4、需要有合理的断线重连机制,避免每次重连都返回到登录界面。
二. 需要对延时的有合理的提示

参数:

特征参数
2G、3G、4G、5G
在这里插入图片描述

异常参数
​ 上行100%丢包
​ 下行100%丢包

测试内容:
  1. 前、后端在不同网络(2G/3G/4G/5G/调参数)下的体验表现(体验性)
  2. 前、后端在异常网络(上、下行丢包)下的功能表现(逻辑性)

体验:合理提示、主流网络场景下不会影响正常使用(持续表现)

逻辑:健壮、安全(断网过程、断网重连后状态)

游戏交互的基本原理:

​ 游戏基本都是基于TCP/UDP协议(传输层),

简单理解:

TCP 长连接,游戏登录后一直保持连接,

S 服务端:一直监听请求/响应请求

C 客户端:向服务器发送请求/接收请求

游戏实质:客户端只是躯壳,隐藏在各个界面元素身上的各种消息逻辑才是触发界面表现的根本原因。C、S通过各种消息实现状态转换,触发界面表现的变化。

举例:

购买道具:你点了购买按钮,客户端向服务器发了购买消息(金币数、账号信息等),服务端收到后判断(钱够不够,合法性)后回复响应消息,客户端收到消息认定购买成功或者失败(提示成功扣钱,提示失败,xxx)

异常情况:(比如:C发了购买消息,上行丢包超时,不会发出去购买消息, 那么客户端和服务端状态都不会刷新, 但是如果下行丢包超时,S状态已经变化,C的状态如果不刷新,会出现按钮操作无响应或者其他异常)

弱网测试是指弱网络场景下测试游戏表现,实质上是借助弱网络的丢包、乱序等发现游戏设计的逻辑异常,其中核心是上、下行丢包及触发重连机制后前后端逻辑一致性。

弱网络常见问题:
  • 资源、数据未加载
  • 操作无响应
  • 不同步
  • 卡流程

测试重点

  • 游戏流程(例如:启动、登录、进入游戏、准备/选人、跳流程阶段、游戏结算等)

  • 支付(例如:充值,iOS特别要注意下拉起较慢的情况)

  • 购买、领奖等货币相关(例如:购买钻石、购买道具、游戏复活等;每日奖励、任务奖励、抽奖等)

  • 状态相关(例如:跳转、刷新界面、刷新按钮、使用技能等)

  • 断线重连机制(例如:断网提示、自动重连、失败提示等)

  • 网络敏感的交互功能(例如:实时对战,多人一定要考虑相互影响,注意同步方案-帧同步/状态同步等)

  • 单位时间内重复操作(例如:快速重复操作,一般情况下会做点击限制)

上下行丢包超时重连、切换网络、无网络等场景下关注以上内容

误区

  • 弱网络 ≠ 异常中断

    异常中断 会触发 断线重连(物理中断、非物理中断)

    断线重连分2种,第1种是从登陆(冷启动)完成重连(杀进程),第2种是过程中(热启动)重连(超时重连、断wifi快速重连)

    热启动/冷启动,进程在/不在,是否需要重新加载。

    弱网络上、下行丢包超时重连属于非物理中断中的断线重连,

    常规测试中,物理性的异常中断(杀进程、断wifi、电话短信)是需要测试的。

  • 上、下行丢包 ≠ 断网(上、下行100%丢包)

    断网好比把路堵了;上、下行丢包好比单向通行。

  • 专业术语

    • 丢包

      TCP/IP协议通信传输中的数据单位,一般也称“数据包”,它包含发送者和接收者的地址信息。这些包然后沿着不同的路径在一个或多个网络中传输,并且在目的地重新组合。

    • 延时

    • 带宽

    • 误码

      编码、解码、转码

    • 乱序

      不同消息包发送先后不一,传输路径不同,理论上是先发先至,但极低概率会后发先至

    • 上、下行

      上行: C—S(客户端到服务器)

      下行: S—C(服务器到客户端)

  • 工具及原理

    工具

    • QNET

    • Fiddler 、Charles、WiFi管家等等

    模拟弱网络的原理

    • WIFI-设备之间(中间加代理)

    • WIFI(出口做限制)

    QNET是在连接的网络和设备内的应用之间建立了VPN(=代理),通过控制相应参数,以控制对应用上、下行消息的网络状态。

    C — S (消息直传,只受所连接的网络条件影响)

    C — 代理 —S(消息均会经过代理进行转发,代理控制 丢包、延迟、带宽)

怎么开展弱网络测试

工具(QNET)下载安装

https://wetest.qq.com/product/qnet

工具使用演示(略)

测试过程

  • 了解及理解游戏,从前、后端技术栈、架构上,游戏类型同类参考上,特别是要搞清楚断线重连机制,初步分析风险点。
  • 写用例,参考测试重点,参考弱网络用例模板,
  • 开始测试,在各条用例上完成以下几步操作
  • 编写报告
  • 总结经验、归档

用例

2部分,1部分是测试异常网络(上、下行丢包、切换网络),1部分测试特征网络(2、3、4、5G等),如:
在这里插入图片描述

异常网络(分上行、下行2部分):

超时处理(一直观察从弱网参数生效开始的游戏表现,主要是验证断线重连逻辑)

再次请求(重连后再次进行操作,比如:弱网参数下点击领奖后,重连完成,再次点击领奖的表现)

多次请求(弱网参数下多次进行操作,比如:弱网参数下多次点击领奖,如做限制则无法点击)

切换网络(切换不同网络,一般情况下WIFI/4G)

分别在以上操作下验证是否符合测试标准,如:

预期:
1.不会无限重试
2.有合理提示,引导玩家回到登录前界面
3.网络恢复后可以正常登录/重回
4.登录/重回转菊花期间网络恢复,无异常
5.多次请求后网络恢复,可以正常登录
特征网络(2G/3G/4G等)

游戏体验(流畅、一般、难以忍受、无法游戏)

体验结果:
流畅:操作体验流畅,没有响应失败,反复重连的现象
一般:操作体验一般,偶尔有响应失败和响应时间长的现象
难以忍受:操作体验极差,经常性连接失败,反复重连
无法游戏:无法正常游戏,经常性掉线

测试

进入测试场景后,开启当前需测试网络参数,持续观察游戏表现或进行相关操作。

比如:购买物品测试过程,

  1. 开启上行丢包超时,开启后点击购买,此时会出现菊花等待响应状态,观察界面表现,正常情况下一定时间会有网络断开提示,提示后会触发自动重连,重连n次失败,会提示框回到登录。

  2. 恢复正常网络,再次点击购买

  3. 开启上行丢包超时,连续点击购买

  4. 选中4G,切换3G,马上点击购买,切换4G,再次点击购买

  5. 分别在2G/3G/4G网络参数下,购买物品,观察体验

报告

报告包含内容(根据情况加入解决建议):

测试结论(问题列表)、项目概述(测试标准、测试参数、测试场景)

总结、归档

分享总结

分享后需要理解内容:

  • 什么是弱网络
  • 弱网络与断线重连的关系
  • 弱网络测试方法
  • 弱网络测试重点
  • 如何编写弱网络测试报告

扩展学习了解内容:

  • OSI七层网络模型
  • TCP\UDP协议,Protocol Buffer, socket
  • 冷启动、热启动
  • 计算机默认初始时间1970-1-1

后续进阶

弱网络测试理解原理后,扩展到 消息乱序和改包后的处理已经涉及一定安全测试范畴,后续可结合服务器压测,实现脱离客户端对服务端测试,结合起来可进行性能及安全相关的进一步测试。

弱网络异常部分详解

(上、下行100%丢包超时 分别进行如下测试,即测试内容*2)

测试过程

超时处理、恢复网络再次请求、多次请求后恢复网络

  • 超时处理

超时处理是指验证游戏从断网开始到触发断线重连到恢复的整个过程,一般情况表现为:一定时间后提示断网(图标或者tips),后进入自动重连状态(后台重连几次,前台无明显表现),超出设定重连次数还失败则弹出提示框(回到登录页面或检查网络)

测试点:检查各功能是否表现一致

风险点:不同的功能不同的人做,特别是非战斗和战斗功能,战斗有可能有特殊重连处理,会互相影响,导致表现不一致或其他问题。(篮球出现过:战斗中没有断网提示,重连逻辑互相影响)

  • 恢复网络再次请求

断网过程理解:一般情况下从断网开始到重连有3个阶段,1是还在等待中(还在判定是否超时触发断线重连的阈值时间内),2是断线重连中(超出判定阈值),3是已经断线重连后

测试点:

  1. 在等待中 恢复网络,检查上、下行是否符合预期
  2. 在断线重连中 恢复网络,检查上、下行是否符合预期
  3. 在重连恢复后, 再次进行请求, 检查上、下行是否符合预期

恢复再次请求在不同的状态下进行表现不一样,具体如下:

上行丢包:等待中恢复,操作会生效(√)

上行丢包:断线重连中恢复,操作不生效(×,因为消息没有发出去)

上行丢包:断线重连后,操作生效(√)

下行丢包:等待中恢复,操作会生效(√)

下行丢包:断线重连中恢复,操作会生效(√)

下行丢包:断线重连后,操作会生效(√)

风险点:上、下行丢包超时异常时,如果状态不一致,会导致前后端状态不一致,再次进行操作无法操作或数据异常。上行丢包出异常大概率是状态存在客户端,下行丢包出异常大概率是客户端没有刷新状态。

(如:新手引导,下行丢包点击下一阶段,服务端状态已经进入下一阶段,客户端无法刷新状态,则会卡死在当前界面;

领奖,下行丢包点击领奖,服务端状态已经领取,客户端如无法刷新状态,则会显示未领奖但是无法领取;)

  • 多次请求后恢复网络

是指重复发送请求,主要是为了验证服务端逻辑。

原理:多次重复请求,发送同样的请求,检查客户端、服务端是否有去重处理,服务端逻辑是否正确。

测试点:

  1. 响应次数(1次)
  2. 响应正确性(服务端判定)

举例:

断网了点击没反应,可能点了10次购买按钮(意味着发了10次请求),恢复网络后,查看结果。

测试点:第1是否买了10次,第2是否扣钱正确。(玩家期望:只买了1次,扣了1次的钱正确)

异常情况:响应了10次,买了10次(没有丢弃重复请求),扣钱只扣了1次(为什么扣1次,服务端判定错误)。

分析:当服务器使用错误缓存数据或者客户端数据做验证时,下行丢包超时情况下,客户端请求消息一直是一样的(如:10000块钱买个1000的东西),服务端使用前端数据判定,则10次请求每次都是10000块钱买1000的东西,最后买了10次剩余9000块钱。

正常情况:

1符合逻辑的表现:响应10次,扣了10次钱,买了10个东西(第1次买完剩9000,第2次买完剩8000,10次买完剩0元。。。)

2符合体验的表现:正常处理应该只响应1次(没反应习惯性一直点,避免玩家误操作扣钱),服务端判定扣除货币且数据正确(买1个东西,剩余9000)。

流程图:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

专项-弱网络测试 的相关文章

  • “性能压测揭密:关键指标分析!“

    在进行全链路压测和性能测试时 需要关注多个关键性能指标 KPIs 来评估系统的性能表现 以下是一些常见的性能测试指标 1 吞吐量 Throughput 系统在单位时间内能够处理的请求数量或事务数量 通常以每秒请求数 RPS TPS 来衡量
  • 处理不舒服的同事关系:实用建议与技巧

    处理不舒服的同事关系 实用建议与技巧 在工作中 我们难免会遇到一些与同事关系不和谐的情况 这些不舒服的关系可能会影响到我们的工作情绪和效率 那么 如何处理这些不舒服的同事关系呢 本文将为你提供一些实用的建议 一 保持冷静和理智 在处理同事关
  • 这些专利知识你知道吗?

    专利作为一种重要的知识产权保护形式 专利不仅成为了企业核心竞争力的重要组成部分 也成为了国家创新发展的重要支撑 专利是指国家专利主管机关授予发明创造申请人的一种专有权 这种专有权具有独占性 排他性和法律强制性 能够为持有者带来经济利益和竞争
  • 基于成本和服务质量考虑的不确定性下,电动汽车充电网络基础设施需求预测和迭代优化的分层框架研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • HPE Aruba Networking:五大网络现代化策略助力实现校园数字化转型

    作者 Aruba中国区技术销售总监 俞世丹 全球数字化进程日益加深 科技已成为加速教育行业发展的重要驱动力 人工智能 大数据 云计算 物联网 虚拟现实等新兴技术的快速发展 正在深刻改变着教育的形态和模式 为了更好地满足学校师生个性化教育教学
  • 游戏开发常见操作梳理系列之——玩家信息的显示系统

    在游戏中 有不少游戏在左上角会出现玩家的头像和等级以及血量 这就是玩家的信息显示系统 那么这些是如何制作的呢 接下来我将讲讲代码的操作 其它操作我会在其它笔记中一一说明 敬请期待 信息的显示相当简单就是控制一些UI 然后在其它系统里面填写相
  • 游戏开发中常见系统梳理之背包系统的实现一

    游戏中几乎都存在大大小小的背包系统 接下来我将讲述背包系统具体是如何实现的 完整源码 以下是使用unity NGUI实现 使用txt配置的方法 后续更新UGUI Json实现的背包系统敬请期待 背包中的物品我们常常将其制作成预设体 通过改变
  • tcpdump抓包

    tcpdump抓包 基本概念 1 类型的关键字 host 指明一台主机 如 host 10 1 110 110 net 指明一个网络地址 如 net 10 1 0 0 port 指明端口号 如 port 8090 2 确定方向的关键字 sr
  • 电脑操作系统的发展史:从初级到高级的演变

    自电脑诞生以来 操作系统作为其重要组成部分 不断推动着电脑技术的进步与发展 本文将带您回顾电脑操作系统的发展历程 探究其在不同阶段的特点与影响 一 早期操作系统 真空管与批处理 在电脑诞生初期 真空管技术占主导地位 此时的操作系统尚未形成完
  • 语音翻译软件app哪家好?帮你和外国人无碍交流的软件分享

    在和外国人交流的时候发现听不懂怎么办 还能怎么办 谁让我们的英语没学好呢 这种时候还是得寻求其他人的帮助 不过万一要是在只有你一个人的情况下又怎么办呢 俗话说 求人不如求己 那还是得在自己手机里时刻准备好能够翻译英语的工具呀 今天就给大家分
  • 申泰勇教练的独家人物化身系列即将登陆 The Sandbox

    申泰勇 Shin Tae yong 教练是足球界的传奇人物 他来到 The Sandbox 推出了自己的专属人物化身系列 作为前 K 联赛中场球员和印尼队取得历史性成就的幕后教练 他的传奇经历现在已经影响到了虚拟世界 向过去 现在和未来致敬
  • 如何正确下载激活NTFS for Mac2024最新版本?

    对于产品来说 更新换代是常有的事 很多软件在用户使用过后 会根据用户的使用需求以及一些客观需求 将软件进行改进 这样一个新的版本的软件就会出现 用户需要将软件进行更新才能享受最新的功能 使用更加完善的软件 所以我们一定要学会如何将软件进行更
  • 如何打赢稳定性之战?

    文章目录 前言 为什么总会出现问题呢 如何证明你的稳定性做的有效果 既是持久战 也是防御战 1 提前建筑好防御工事 2 以攻为守 3 找外部支援和配合 前言 随着23年年末期间 各大厂争先恐后的出现的各种线上
  • 静态综合实验

    1 IP地址划分 192 168 1 0 27 用于主干拆分 192 168 1 32 27 用于用户拆分 192 168 1 64 27 用于用户拆分 192 168 1 96 27 用于用户拆分 192 168 1 128 27 用于用
  • 新画图不好用?『 图层困扰?』『 剪切板拷贝失败?』旧版画图软件yyds

    樊梓慕 个人主页 个人专栏 C语言
  • AI新年头像模板在哪找?告别单调头像的工具分享

    农历新年到啦 今年的春节假期你有没有弄一些氛围装饰呀 除了每年都有的对联 福字等 经典皮肤 现在也流行起给自己的账号营造一些过年的感觉啦 说到这个 很多人第一反应就是给自己换个新年头像 限定皮肤 不过头像要怎么营造新年的感觉呢 其实用AI工
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学

随机推荐

  • 文献综述写作模板1.0

    参考视频 基础模板框架 https www bilibili com video BV1E54y1U7SM spm id from 333 337 search card all click vd source e5e46a7b9d3909
  • SpringBoot开发符合S3协议的文件存储服务

    背景 公司最近的业务大量涉及安可项目 要求避免使用第三方组件 原有开发框架支持本地文件存储 Minio 各类云存储 现在要求文件独立存储且文件服务需要自研 经调研评估后决定基于SpringBoot开发文件存储服务 使用s3协议标准 这样可以
  • 集成AI的移动自动化测试

    集成AI的 移动自动化测试 前一阵子小编看到了爱奇艺Android架构师的一篇文章 爱奇艺基于AI的移动自动化框架的设计与实践 介绍了了一种基于AI算法的自动化测试框架Aion 该框架融合了传统图像处理和深度学习方案 虽然目前该框架还未开源
  • chatgpt赋能python:Python长浮点型介绍

    Python长浮点型介绍 Python是一种强大的编程语言 通过其众多的数据类型 使开发人员可以快速开发复杂的应用程序 其中 Python长浮点型就是Python支持的一种数据类型 长浮点型是指Python可以处理的浮点数的精度可以高达25
  • ubuntu运行python程序 已杀死_一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃

    由于 Ubuntu 中的汉字输入实在是太不友好了 所以装了个 搜狗输入法 好不容易把 搜狗输入法装好 本以为可以开开心心的搞代码了 然而 pycharm 一打开 就崩溃 关不掉 进程杀死还是不行 只能关机重启 本以为 pycharm 出现了
  • 半导体创业

    synosis系列 芯耀辉 芯华章 芯原 dsp 壁仞科技 主要负责人华为mobile gp ps 华为升腾的大佬是liaoheng和tujiajun Mikehong在MobileGpu oppo 哲库科技 GPU摩尔线程 NB 芯翼信息
  • Android中apk的名称被Module下相同的app_name替换时,正确的更改方式

    错误产生原因 android 中 寻找资源文件 首先会寻找本机语言下的资源文件 例如 如果手机是中文版 则会优先选择res下面values有中文资源的进行匹配 这也是导致我的app name被module下的中文app name替换的原因
  • Python:Anaconda安装&常用库(selenium,pymysql)离线安装

    因为网络限制 所以用很多库用pip安装不成功 只能采用离线安装了 方法也简单 按照下面步骤来就好了 1 Anaconda下载安装 下载地址 https www anaconda com products individual 下载后 傻瓜式
  • ES6(这是我见过写的最好的)!推荐

    文章目录 ES6总结 var let const的区别 箭头函数和function的区别 结构赋值 原型 原型链 继承 1 原型链继承 2 构造函数继承 3 组合式继承 4 class类继承 Promise async和await Gene
  • iOS 使用蓝牙耳机的mic作为输入源

    1 首先采样率的设置必须与蓝牙耳机设备的采样率相同 2 然后通过 setPreferredInput 方法从可用的输入设备的数组中选取蓝牙耳机
  • linux应用程序core dump处理

    默认编译出来的程序在出现Segmentation fault 时并没有生成core崩溃文件 可以在gcc g 编译时增加 g选项 如果仍然没有生成core文件 则可能是因为系统设置了core文件大小为0 可以通过 ulimit a 查询得知
  • 实现游戏结束时显示GameOver界面。(Unity)

    在Canvas画板里添加Text文本组件 修改名字为GameOver 修改名字是为了让我们以后更改时更容易找到对应的组件 请名字时尽量和代码一样需要见名知义 并且通过锚点修改他的位置 在位置里修改他需要显示的大小 并且在Text文本组件中修
  • python画笑脸-如何用Python画滑稽笑脸

    Linux编程 点击右侧关注 免费入门到精通 作者丨Saltwater Room https blog csdn net Saltwater Room article details 829 用turtle画滑稽 fromturtle im
  • Android ListView默认选中第一项或第N项

    大体上从查阅的资料和自己的实践一共可以分为以下几种方法 一 重写Adapter 在getView里进行自己的操作 选中 变色等等 class MyAdapter extends BaseAdapter Override public Vie
  • 垂直网络广告

    垂直网站 英文名 Vertical website 注意力集中在某些特定的领域或某种特定的需求 提供有关这个领域或需求的全部深度信息和相关服务 作为互联网的亮点 垂直网站正引起越来越多人的关注 垂直网络广告是指广告发布主体利用网络广告投放平
  • 两个二叉树的合并

    将给定两个二叉树 想象当你将它们中的一个覆盖到另一个上时 两个二叉树的一些节点便会重叠 你需要将他们合并为一个新的二叉树 合并的规则是如果两个节点重叠 那么将他们的值相加作为节点合并后的新值 否则不为 NULL 的节点将直接作为新二叉树的节
  • 手把手教你打造自己的弱口令扫描工具(系统弱口令篇)

    0x01 前言 在渗透测试过程中 弱口令检测是必要的一个环节 选择一个好用的弱口令扫描工具 尤为重要 类似的弱口令检测工具如 Hydra Hscan X Scan 很多时候满足不了自己的需求 通过Python打造自己的弱口令扫描工具 集成在
  • 01FFMPEG的AVFormatContext结构体分析和输出时AVFormatContext的初始化(包含有输入和无输入的AVFormatContext)

    01FFMPEG的AVFormatContext结构体分析和输出时AVFormatContext的初始化 包含有输入和无输入的AVFormatContext 提醒 接下来对所有源码的分析都是针对于目前最新版本的avformat5 8源码 概
  • 五个实施环节

    定级 定级流程 在 信息系统安全等级保护定级指南 中 说明了定级的一般流程 1 确定作为定级对象的信息系统 2 确定业务信息安全受到破坏时所侵害的客体 3 根据不同的受侵害客体 从多个方面综合评定业务信息安全被破坏对客体的侵害程度 4 根据
  • 专项-弱网络测试

    弱网络 简单理解 网络不好 网络环境复杂 使用场景多变 异常逻辑检查 弱网络测什么 测试标准 客户端的核心场景必须有断线重连机制 并在有网络抖动 延时 丢包的网络场景下 客户端需达到以下要求 一 不能出现以下现象 1 游戏中不能出现收支不等