zoukankan      html  css  js  c++  java
  • Fiddler进行弱网测试

    一、弱网测试点:

    二、Fiddler模拟限速的原理:
    我们可以通过fiddler来模拟限速,因为fiddler本来就是个代理,它提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里 面自定义一些逻辑。Fiddler的模拟限速正是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和 上传速度,从而达到限速的效果。
    他提供了一个功能,让我们模拟低速网路环境…启用方法如下:

    Rules → Performances → Simulate Modem Speeds :模拟调制解调器的速度

    三、Fiddler配置:

    1、找到头部的Tools功能,然后点击第一个功能Options,会弹出一个界面:

     2、找到Connections,把port改为8888,为了可以使用我们的手机代理到电脑上了。

     四、手机设备配置:

    打开我们的手机,进入wifi设置,这里要注意的是安卓设备连接的wifi必须和我们的PC是同一个网络才能设置成功。在设置代理之前我们需要知道PC的ip地址,可以通过系统cmd命令,然后ipconfig获取,如下:

     然后就可以再手机里面设置代理了,这是手机的wifi设置代理的界面:

     设置后之后,手机上所有的网络请求都会代理到Fiddler然后可以查看了:

     五、设置网络限制:

    1、手动设置设置上行,下行速率,模拟网路速度的原理,每上传/下载1KB 要delay 多久…

    网络取值的算法就是 1000/下载速度 = 需要delay的时间(毫秒),比如50kb/s  需要delay200毫秒来接收数据。

     

    只需要知道request-trickle-delay代表的是你网络请求的延迟时间response-trickle-delay代表的是网络响应的延迟时间单位都是毫秒,这里默认给的是300毫秒和150毫秒,所以,只需要修改这2个值即可模拟网络延迟和弱网络环境了,比如可以修改上述2个值为:2000和2000,代表网络请求延迟2秒,网络响应延迟2秒:

    if (m_SimulateModem) {

        // Delay sends by 300ms per KB uploaded.

        oSession["request-trickle-delay"] = "2000"; 

        // Delay receives by 150ms per KB downloaded.

        oSession["response-trickle-delay"] = "2000"; 

    }

    该标志位控制着oSession的两个参数值的设置,当勾选了Simulate Modem Speeds时,request-trickle-delay与response-trickle-delay就会被设置,其中request-trickle-delay中的值代表每KB的数据被上传时会被延时多少毫秒,response-trickle-delay则对应下载时每KB的数据会被延时多少毫秒,如果本身网速已经相当快的话,这里设置的值就可以近似地推算出开启模拟后的上传和下载带宽了,比如默认设置下下载延时为150ms,上传延时为300ms,对应可以推算出大致的模拟带宽为:

    上传带宽=(1*8/1000)/0.300≈0.053Mbps

    下载带宽=(1*8/1000)/0.150≈0.027Mbps

      然而实际情况下却得到了两倍于这个值的带宽,推测可能是Fiddler的内部实现上有一些和描述上的不同,为何为造成这个现象现在还不是很清楚,所以上述公式最后还需要修正一个2.0的系数,即:

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

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

    改完之后记得按Ctrl+S保存。

    六:开启网络延迟:

    记得再到Rules → Performances → Simulate Modem Speeds 勾选

     七、扩展弱网规则:

    可能我们在测试中不会想要一个一直虚弱的网络环境,而是随机强弱的网络,这样比较贴切我们的真是情况,那么我们可以修改上述代码为:

    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(1,2000);

        // Delay receives by 150ms per KB downloaded.

        oSession["response-trickle-delay"] = ""+randInt(1,2000);

    }

    这里的randInt(1,2000)应该很好理解,代表1-2000中的一个随机整数,这样就会出现偶尔有延迟偶尔网络又良好的情况。

     

    备注:

    1、注意停掉PC与手机上面上网的应用,把PC与手机上面上网的进程杀掉,如果上网的应用太多了,那网速肯定也会受到影响,这样出来的报告,就会不准确。

    进行抓包。

    2、点击抓包数据中的一条记录,在右侧的statistics中就会显示当前界面相应数据。bytes Sent 是指发送的请求数,Bytes Received:返回的数据量,Overall Elapsed:总耗时。

  • 相关阅读:
    为什么Java不支持多重继承
    thymeleaf生成页面时报错:An error happened during template parsing (template: "class path resource [templates/index.html]")的解决办法
    MySQL操作数据时区分大小写
    java.lang.NoClassDefFoundError: com/jhlabs/image/RippleFilter
    多线程学习系列:(六)线程池基础下
    多线程学习系列:(四)线程同步基础下
    多线程学习系列:(八)Winform中多线程编程基础上
    多线程学习系列:(五)线程池基础上
    多线程学习系列:(七)基于多线程的基本组件
    HTTP头部
  • 原文地址:https://www.cnblogs.com/51QA/p/13381769.html
Copyright © 2011-2022 走看看