弱网测试探索

在使用手机程序、游戏过程中是否会经常出现聊天内容不出现或者延迟出现、图片、视频、游戏中的模型没有渲染出来,点击没有反应等?我们在玩王者的时候,是否有遇到过自己开局进场的时间比其他队友迟?在团战中技能的释放出现延迟的现象?当在其他条件是正常的前提下,出现这些状况就表明极有可能是网络状态不好的表现。

那么针对这种情况的测试,

一、关注点在于:

        1、卡死、崩溃、无响应、闪退、断网。

        2、业务交互数据传输正确性。

二、使用的工具:

        能模拟弱网的工具有许多,不再累赘。这里我使用Network Emulator Toolkit

三、步骤:

        1.设置Network Emulator Toolkit模拟测试网络;

        2.设置wifi共享网络;

        3.手机连接该wifi,打开App进行测试。

四、Network Emulator Toolkit使用简介

        1:为什么选择Network Emulator Toolkit

        a)Fiddler进行限速较为简单和灵活,配置也较为方便,但是由于它是一个应用层的HTTP的代理,只能模拟该层上的行为,对于一些复杂的网络层的丢包、重传等恶劣情况就不能很好的模拟出来,而且对于其他协议的应用也不支持。主要还是用来抓包的。

        ps:这里为什么说应用层的代理就不能做到丢包、重传等模拟呢?这个就要贴出下面这个著名的TCP\IP的7层协议栈了。因为重传、丢包都是在在网络层发生的。所以只有在网络层的工具才能模拟出这个效果。但是Fiddler是处在应用层的,所以就模拟不了这个了。

        b)在Mac上自带了Network Link Conditioner,Windows上可以使用Network Emulator for Windows Toolkit。Linux的话可以用TC。

        2:基本使用方法

        a)打开NetworkEmulator Toolkit,新建Channel(通道)。菜单栏 Configuration -> New Filter 或工具栏的快捷按钮。

        b)新建Filter。菜单栏 Configuration -> New Filter 或工具栏的快捷按钮。可选择所有网络(ALL NetWork),选好过滤条件后,点击添加(ADD)按钮,添加过滤条件;选中已添加的记录,点击删除(Delete)按钮,可删除记录;选中已添加的记录,重新修改过滤条件,点击修改按钮(Modify),可修改记录。这里需要主要的是,如果勾选上了,是代表这个过滤条件没有启用。

        c)新建连接。菜单栏 Configuration -> New Link 或工具栏的快捷按钮。选中link,右键Set UpStream/Set UpStream设置上行下行网络模拟情况。

        d)开启控制

        点击Start开始按钮,开始模拟网络。

        e)打开WiFi共享工具,手机连接WiFi,操作App进行测试。

        f)点击Stop停止网络模拟。

五、测试方案

        1:测试点

        正常游戏的主要流程,例如:登录、进入游戏、游戏中操作、游戏结算等;

        游戏中涉及支付购买的地方,例如购买钻石、购买道具、游戏复活等;

        游戏中涉及领取奖励的地方,例如每日奖励、任务奖励、抽奖等;

        游戏中对网络敏感的交互功能,例如实时对战;

        2:测试方法

        第一种方法:

        单独针对上述的每一个测试点,分别进行:发包、收包断网测试。这种方式只适用于客户端单个请求上行对应服务器单个响应回包,收发消息是一对一同步进行的一般手游场景,比如购买,升级,开局,结算等。

        这里的发包、回包断网测试可能比较模糊,解释下:

        发包、回包断网测试的过程如下:

        1:在断网的情况下,进行事情触发,比如点击按钮等。

        2:网络恢复后手动或者自动再次请求

        一般预期的结果是:

        1:不会无限重试(有些游戏会不断的重复发包),

        2:有合理提示,比如超时转菊花,

        3:网络恢复后可以正常执行该逻辑

        4:转菊花期间网络恢复,无异常

        5:多次请求后网络恢复,逻辑正常,不会导致消耗和收益不一致(这个bug在网易某款游戏中出现过,当网络卡的情况下,多次点击按钮后,会导致多次获得家族声望)

        第二种方法:

        设置一种网络模式,执行玩家经常遇到的游戏场景。同时配合在测试点上,采用断网或切换网络等操作,观察是否符合有效(能完成逻辑)或无效预期(不能完成逻辑)。

        第三种方法:

        利用Network Emulator Toolkit给网络加上延迟、丢包等属性。然后在这种网络情况下,查看游戏的表象(特别是pvp战斗情况)是否正常。

        3:本次测试说明

        目前我所在的项目还处在demo阶段,所以支付、登入等模块没有完成,也就没有进行相关的弱网测试。本次的弱网测试主要观察战斗过程是否正常(技能是否能正常释放),即采用第三种方法。

        具体的方法是:手机wifi链接用360随身wifi工具导出的wifi,然后在该台电脑用Network Emulator Toolkit对网络加延迟、丢包等属性。那么此时相当于游戏客户端的网络有了延迟、丢包等情况。游戏服务器放在另外一台电脑上,不受Network Emulator Toolkit的影响。

           4:结果展示

网络情况

请求响应时间(ms)

操作是否正常

100ms,100kb/s,0%

100ms,100kb/s,2%

100ms,100kb/s,5%

200ms,50kb/s,5%

400ms,50kb/s,5%

400ms,20kb/s,8%

1000ms,20kb/s,8%

1000ms,10kb/s,10%

2000ms,10kb/s,20%

六、改进方向和进一步研究

       1:统计响应时间

              现在是人肉直觉看下反馈,后期可以研究下采用在代码中插入统计时间的相关函数,具体的得到在弱网条件下的游戏响应时间,并且进行数据可视化。

              当然比如技能特效,UI显示是否正常,还是需要人肉去观察的。

       2:考虑到自己项目还处于demo阶段。本次弱网测试只是简单了进行了战斗技能释放,其他的用例并没有执行。等后期还需要进一步实践和研究,这里只是抛砖引玉,并且做个简单的理论总结。有好的意见和补充,请告知我,不甚感激。

       3:网络切换测试。

        补充材料:

        Network EmulatorToolkit常用参数说明

        1、Loss

        No Loss:默认,不模拟丢包。

        Periodic loss: 模拟周期性的丢包。按填写数量(设为x个),每x个包,就丢一个包。

        Random loss: 模拟随机丢包,按给定丢包的概率,随机丢包。(设置1,代表丢包率是100%,设置0.5,代表丢包率是50%)。

        2、Error

        真实世界中,当数据包经过网络传输时,包中的一到多个字节(bit)数据可能发生错误。

        No Error:不模拟传输错误。

        Random error:根据给定的比例,模拟随机发生传输错误。

        错误概率单元(Error Rate Unit):

        Bit error: 设置出错概率为每个字节出错的概率。

        Packet error: 设置出错概率为每个包出错的概率。

        出错和丢包的关系

        大多数情况下,包出错导致包丢失,特殊情况下,包中的数据被编码,协议栈可恢复被损坏的包,经过修正后,包为可接受的包,即包不丢失。此外,除了包出错会导致包丢失,其它因素也会影响包丢失,如连接失败(Link failure),缓冲区溢出(buffer overflow),队列管理和传输超时(transmission timeout)等。

        3、Latency

        延迟来自某应用发送的数据包被另一个应用程序接收到的时间。

        Fixed delay: 按给定值,延迟固定时间(单位:毫秒)packets are delayed for a fixed amount of time.

        Uniform delay: 按统一分布,延迟一定量的时间(时间控制在最大最小值之间)

        Normal delay: 按正态分布.延迟一定量的时间(average:平均值,Devation:偏差)

        Linear delay: 延迟一定量的时间(在给定时间周期(Period)内,延迟的时间大小从最小值线性增加到最大值,当达到最大值时,又从最小值开始。

        Burst delay: 根据给定概率(Probability),延迟一定量的时间(Latency),丢包数控制最大值和最小值之间。

        4、BW&Queue

        如果不指定带宽(bandwith),则不修改传输速率。

        5、Disconnection

        模拟周期性断开连接的行为。

        Connection time: 一段时间周期内,link保持连接状态的持续时间。

        Disconnectiontime: 一段时间周期那日,link保持断开状态的持续时间

        Disconnectionrates: link发生断开连接的比率。

 

目录

一、关注点在于:

二、使用的工具:

三、步骤:

四、Network Emulator Toolkit使用简介

五、测试方案

六、改进方向和进一步研究


主要参考文献:

【1】http://ks.netease.com/blog?id=2795

【2】http://wetest.qq.com/lab/view/?id=20?from=content_zhihu

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值