fiddler之弱网设置(模拟限速)

背景

我们的产品在弱网环境下经常出现加载问题,影响用户体验甚至服务不可用。所以在测试过程中就需要模拟弱网络环境进行测试、问题复现,让开发调优

fiddler模拟弱网环境

设置

打开fiddler,默认情况下Rules->Performance->Simulate Modem Speeds是未勾选状态,此时网络正常。当选中此选项后,网速就会变慢,打开网页就会加载很久,这样就实现了弱网效果。


设置.png

备注:如果想了解(上传/下载)网速具体数值,可以访问http://www.speedtest.cn/网站,进行测试

限速原理

Fiddler限速是以网络延迟的方式实现的,网络延迟时间*网速=传输字节数

点击Rules – Customize Rules(快捷键Ctrl + R)打开Fiddler ScriptEditor,或者直接点开右侧主页签的FiddlerScript。


打开Script方式1.png

打开Scrip方式2.png

打开该文件后,Ctrl + F 查找m_SimulateModem标志位,可以看到如下代码

 if (m_SimulateModem) {
            // Delay sends by 300ms per KB uploaded.
            oSession["request-trickle-delay"] = "300"; 
            // Delay receives by 150ms per KB downloaded.
            oSession["response-trickle-delay"] = "150"; 
        }

注释说明:
request-trickle-delay中的值代表每KB的数据被上传时会被延时多少毫秒;
response-trickle-delay则对应下载时每KB的数据会被延时多少毫秒。
比如你要模拟上传速度100KBps的网络,那上传延迟就是1KB/100KBps=0.01s=10ms,就改成10
默认设置下上传延时为300ms下载延时为150ms,大致模拟出来的宽带如下:

上传带宽 = 1KB/300ms = (1 * 8/1000) /0.300 ≈  0.027Mbps
下载带宽 = 1KB/150ms = (1 * 8/1000) /0.150 ≈ 0.053Mbps
(1MB = 1024 KB ≈ 1000 KB 为了运算简便就用了1000的倍数,忽略误差)

实际带宽是在计算所得的基础上乘2,至于原因,没有深究

上传带宽=((1*8/1000)/0.300)*2.0≈0.106Mbps 
下载带宽=((1*8/1000)/0.150)*2.0≈0.053Mbps

假如我们要模拟2M左右的宽带((1* 8/1000)/ x )*2.0=2

if (m_SimulateModem) {
   // Delay sends by 300ms per KB uploaded.
   oSession["request-trickle-delay"] = "8";
   // Delay receives by 150ms per KB downloaded.
   oSession["response-trickle-delay"] = "8";

设置网络环境参数
1、查找到if (m_SimulateModem)语句,修改代码。模拟网络带宽不是恒定的一个低速的值,而是一定范围内随机抖动,下面的脚本实现了一个随机延时量设置,使得网络带宽不是恒定为一个低速的值。

static function randInt(min, max) {
    return Math.round(Math.random()*(max-min)+min);
}
if (m_SimulateModem) {
    // Delay sends by 300ms per KB uploaded.
    oSession["request-trickle-delay"] = ""+randInt(100,200);
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = ""+randInt(1,50);
}

2、在代码里找到onBeforeRequest,这里定义了在发送请求前做什么。加入如下代码可以实现延迟:

oSession["request-trickle-delay"]="3000";  //请求阶段延迟3秒
oSession["response-trickle-delay"]="3000";  //响应阶段延迟3秒
添加代码.png

备注:每次编辑并保存配置文件后,Simulate Modem Speeds选项会被取消,需要重新勾选。

学习来源:
https://www.jianshu.com/p/b9e349b8f411

其它两种设置弱网手段可参考https://www.cnblogs.com/jinjiangongzuoshi/p/5272787.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一:为什么要做弱网络测试? 实际的客户现场可能网络不稳定或者网速低,恶劣的网络环境会导致出现一些bug,影响用户体...
    Yvanna_15阅读 42,170评论 4 26
  • 为什么要进行弱网环境测试? 由于用户自身的网络环境波动,或者是本身网络环境就较为恶劣,导致会出现一些意想不到的非功...
    云层_阅读 10,113评论 11 63
  • 前言 目前市面上的APP功能越来越丰富,移动端测试也越显为重要。因为用户在网速慢的情况下,你的网站(软件)总能出现...
    keitwo阅读 11,445评论 0 11
  • 原理: 我们可以通过fiddler来模拟限速,因为fiddler本来就是个代理,它提供了客户端请求前和服务器响应前...
    小奋斗_3fbb阅读 7,890评论 0 1
  • Distribute Candies思路:糖果数量是偶数,均分给弟弟和妹妹,要使妹妹分的糖果种类数最多。那就是当糖...
    wendy_要努力努力再努力阅读 832评论 0 0