如何使用弱网环境来验证游戏中的一些延迟问题

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
可观测监控 Prometheus 版,每月50GB免费额度
函数计算FC,每月15万CU 3个月
简介: 如何使用弱网环境来验证游戏中的一些延迟问题

 关于弱网

在当今移动互联网盛行的时代,网络的形态除了有线连接,还2G/3G/Edge/4G/Wifi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。

从测试角度来说,需要额外关注的场景就远不止断网、网络故障等情况了。对于弱网的数据定义,不同的应用所界定的含义是不一样且不清晰的,不仅要考虑各类型网络最低速率,还要结合业务场景和应用类型去划分。按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外,弱信号的Wifi通常也会被纳入到弱网测试场景中。

特别是在游戏、或者是看一些重要直播的过程中,网络的卡顿延迟,真的让人大为光火。所以我想在最近分享一下,游戏测试需要怎么开展弱网测试,来尽量避免网络问题带给用户的不良体验。

为什么要弱网测试

       作为移动端游戏测试,网络环境——尤其是弱网环境下——的测试环节其实是必不可少的。而手机上的网络制式类别很多:wifi、2G、3G、4G、5G,应用场景可能就更多了:办公室、街道、商场、地铁、车库等等。在这不同的场景、不同制式下,我们都可能遇到各式各样的断线、卡顿、延迟、数据同步异常等问题。

       我之前负责过一款全球唯一服的一款SLG游戏,核心用户主要集中在美国,北欧,东非,东南亚地区。根据adjust数据分析显示,在坦桑尼亚等东非国家,普遍使用的都是2G网络,覆盖率达到40%以上,3G网络的覆盖都非常少,并且稳定性较差,还有德国等一些北欧国家,俄罗斯的网络环境也比较差,在这种弱网环境下最容易出现一些bug,导致人物移动,技能释放,等状态同步出现问题。由此,对于当前的App应用交付要求即至少在弱网以及无网状态下能正常运行。

为什么要弱网测试

如何做弱网测试

       弱网环境测试主要依赖于弱网环境的模拟。弱网测试主要就是对带宽、丢包、延时等进行模拟弱网环境。

环境搭建方式一般有两种:软件方式和硬件方式。软件方式的成本低,主要就是通过模拟网络参数来配置弱网环境,通常来讲可以达到测试目的.一般可通过热点共享设置。在各类网络软件中,主要就是对带宽、丢包、延时等进行模拟弱网环境。如果要求更接近弱网环境,比如现在很多的专项测试,会更倾向于通过硬件方式来协助测试,但这种方式相对会麻烦很多,一般会由网维协助搭建。当然,对于有些无法模拟的情况,只能靠人工移动到例如电梯、地铁等信号比较弱的地方。

属于健壮性测试的内容。。想象一下,用户在地铁里,巴士上,甚至是电梯,车库等场景使用APP,我们就需要针对这些场景的弱网环境下,验证出现丢包、延时软件的处理机制,避免因用户体验不友好造成用户的流失。

这里我给大家推荐一款个人经常用的工具clumsy。

链接: https://pan.baidu.com/s/1B-DCoJeHM124yM3J68luwQ 提取码: fru6 复制这段内容后打开百度网盘手机App,操作更方便哦

Clumsy是基于C语言开发的一款开源网络模拟工具。它能在Windows平台下人工造成不稳定的网络状态,应用它可以方便调试应用程序在极端网络状态下的表现。

目前对于Clumsy 0.2版本的功能有以下几种:

    • 延迟(Lag):把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况;
    • 丢包(Drop):随机丢弃一些数据;
    • 截流(Throttle):把一小段时间内的数据拦截下来后再在之后的同一时间一起发出去;
    • 重发(Duplicate):随机复制一些数据并与其本身一同发送;
    • 乱序(Out of order):打乱数据包发送的顺序;
    • 篡改(Tamper):随机修改小部分的包裹内容。

    软件特色:

    1、实时调节多种参数,仔细控制网络情况

    2、clumsy支持本地调试(服务器与客户端都在 localhost)

    3、clumsy工具下载即用,不需要安装任何东西

    4、不需要额外设置,不需要修改你的程序的代码

    5、这款网络环境模拟工具 不仅只支持 HTTP,任何 TCP, UDP 的网络连接都能被处理

    6、热插拔,你的程序能一直运行,而 clumsy 可以随时打开与关闭

    7、系统级别的网络控制,可以适用于命令行,图形界面等任何 Windows 应用程序

    clumsy工具不需要安装即可使用,软件界面下图可供参考,大致三部分,过滤器;预知过滤器;功能设置:

    image.gif编辑

    clumsy使用方法:

    1、打开clumsy工具,就直接的的点击软件进人

    image.gif编辑

    2、进人到软件的主界面后,就可以选择自己需要的进行使用

    presets选择 all sending packets

    设置拦截

    Lag:延迟,把请求缓存一段时间再发出,可以用来模拟网络延迟,最大3000ms;

    Drop:丢包,随机丢弃一些请求;

    Throttle:节流,把一小段时间内的请求拦截下来,再在同一时间发出去;

    Duplicate:重发,随机复制一些请求,与原请求一起发送;

    Out of order:乱序,打乱请求的发送顺序;

    Tamper:篡改,随机修改小部分请求的内容;

    点击start开始,对应指标前面出现绿点,表示该项拦截生效

    点击stop停止

    正常情况下,我ping下度娘:

    image.gif编辑

    接下来,我设置了下丢包率:

    image.gif编辑

    可以看到现在已经有比较明显的丢包情况了:

    image.gif编辑

    那么我继续让丢包率达到90%看下效果:

    image.gif编辑

    那么其他的功能,大家都可以探索,总之工具的使用是简单的,但分析排查问题的过程还得结合自己的业务逻辑。

    感谢各位粉丝们的持续关注和分享,由于最近项目较忙,未及时更新哈,别走开,精彩仍然继续

    image.gif编辑

    相关文章
    |
    XML 网络协议 测试技术
    【游戏专项测试】弱网测试-NEWT使用
    【游戏专项测试】弱网测试-NEWT使用
    【游戏专项测试】弱网测试-NEWT使用
    |
    1月前
    |
    数据采集 缓存 定位技术
    网络延迟对Python爬虫速度的影响分析
    网络延迟对Python爬虫速度的影响分析
    |
    网络协议 容灾 Java
    【游戏】服务器性能测试(四) 简单压测工具理论篇
    做了一个简单的压测交互关系,对服务器压测需要大量的“真实”用户,每个用户都是独立与服务器进行协议通信。首先压测工具需要有网络模块的支持,目前大部分的游戏网络通信是基于TCP协议的,也有一些是基于UDP协议的。其次同时需要支持这么多用户运行,就需要考虑多线程模块。最后就是压测所需的并发控制与事务统计等功能。 1. 网络编程 压测的用户数会需要很多,少则三五千,多则上万。图1的用户与socket比例为1:1可以看出,创建socket的对象数量也会很大,而实际压测中很多情况下用户与socket比例可能会更高。
    1160 0
    【游戏】服务器性能测试(四) 简单压测工具理论篇
    |
    2月前
    |
    监控 自动驾驶 5G
    |
    5月前
    |
    Java 测试技术
    用代码模拟调用接口方式压测现网服务器的服务性能
    用代码模拟调用接口方式压测现网服务器的服务性能
    41 0
    |
    6月前
    |
    Web App开发 前端开发 网络协议
    性能工具之常见压力工具是否能模拟前端
    【6月更文挑战7天】性能工具之常见压力工具是否能模拟前端
    38 0
    |
    7月前
    |
    缓存 5G 双11
    弱网测试
    弱网测试
    459 0
    |
    5G 测试技术 UED
    【游戏专项测试】弱网测试--基础原理
    【游戏专项测试】弱网测试--基础原理
    |
    测试技术
    如何使用mitmproxy模拟弱网环境
    如何使用mitmproxy模拟弱网环境