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

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

 关于弱网

在当今移动互联网盛行的时代,网络的形态除了有线连接,还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编辑

    相关文章
    |
    测试技术 5G iOS开发
    【游戏专项测试】弱网测试-测试用例
    【游戏专项测试】弱网测试-测试用例
    |
    缓存 Java Spring
    07HandlerMapping中用到的RequestMappingInfo和RequestCondition
    RequestCondition(请求匹配条件)体系。 上面提到的RequestMapping注解申明的属性与之呼应的就是spring中RequestCondition的实现体系。 RequestMappingInfo体系 RequestMappingInfo是请求映射信息的描述,维护了一个请求所匹配的各种条件。即一个请求是有很多匹配条件的都放在了RequestMappingInfo中 RequestMappingInfo的生成、存放、和获取
    1998 0
    |
    5月前
    |
    JSON API 开发者
    通过1688开放平台API根据商品ID获取商品详情
    本文详解1688开放平台“获取商品详情”API调用方法:支持通过商品ID精准查询标题、价格、库存、图片、SKU等结构化信息,涵盖接口说明、POST请求方式、必选/可选参数(access_token、productId、fields)、JSON返回结构及Python调用示例,助开发者快速集成。(239字)
    1282 1
    |
    存储 缓存 Ubuntu
    Ubuntu 20.04修改swap交换空间教程
    记得时不时回顾和调整这些设置,来保持你的Ubuntu系统运行得像一只猎豹—迅捷无比。现在,你已经成功地为你的Ubuntu系统完成了大脑扩容手术,让它有了更多的空间去处理更复杂的思维任务。舒服地坐回到你的椅子上,享受更加流畅的电脑体验吧!
    928 12
    |
    12月前
    |
    安全 IDE 开发工具
    错误代码0xc0000001如何处理?
    错误代码0xc0000001是Windows系统启动时常见的故障,通常由系统文件损坏、硬件问题或驱动冲突引起。以下是综合解决方案:
    |
    移动开发 前端开发 安全
    【HarmonyOS next】ArkUI-X休闲益智消消乐【进阶】
    本项目基于ArkUI-X实现H5游戏与原生应用融合,通过Web组件将Vue+Canvas开发的消消乐游戏无缝嵌入ArkTS容器,支持HarmonyOS与iOS双平台运行。核心包括:跨端渲染适配、高性能动画引擎、触控事件归一化及多端性能优化,代码复用率达92%,帧率稳定≥55FPS,触控延迟<80ms。提供完整源码与开发建议,拓展方向涵盖分布式续玩与原生能力集成。
    454 0
    |
    JavaScript 前端开发
    JS如何配合input框实现模糊搜索
    JS如何配合input框实现模糊搜索
    629 2
    |
    JavaScript Java 程序员
    闲话目前游戏服务器的开发
    闲话目前游戏服务器的开发
    |
    监控 测试技术 开发工具
    移动端性能测试工具
    移动端性能测试工具
    1628 2