• 使用Fiddler模拟网络


    Fiddler已经预置提供了模拟Modem速度的选项,其位置位于: 
    Rules->Performances->Simulate Modem Speeds 

    勾选该选项后,所有通过Fiddler代理的流量都会变得用56k modem上网一般。
    要直观观察限速后的效果,最好使用运行在浏览器中的测速工具,这里推荐用“http://www.speedtest.cn/”在线测速工具进行测试。
    调整模拟恶劣网络环境的参数
    直接模拟Modem速度实在是慢爆了,事实上就算是在很差信号的情况下,手机移动网络的速度都已经超过了56k 的Modem速度,所以采用默认的配置模拟出来的环境,并不一定符合需求,此时就需要对限速的参数进行调整。
    Fiddler本身就提供了一个配置文件供调整这些参数,点击:
    Rules – Customize Rules…
    打开CustomRules.js文件(默认位于用户目录的文档目录下的Fiddler2Scripts),后缀名是js。在编辑内容中找到“m_SimulateModem”标志位:

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

    该标志位控制着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
    编写自定义脚本
    进一步地扩展CustomRules.js里的逻辑,参照Jscript的文档可以在模拟恶劣环境中加入更多自定义的逻辑,这里实现了一个随机延时量设置,使得网络带宽不恒定为一个低速的值,而是会在一定范围内随机抖动:

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

    通过进一步扩展CustionRules.js可以实现很多需要的恶劣环境模拟场景,如果场景较为复杂的话,也可以通过编写Fiddler的插件的方式,编写C#插件代码来进一步控制Fiddler的行为,在这里就不多做赘述了。
    Fiddler模拟恶劣网络环境的局限性
    Fiddler进行限速较为简单和灵活,配置也较为方便,但是由于它是一个应用层的HTTP的代理,只能模拟该层上的行为,对于一些复杂的网络层的丢包、重传等恶劣情况就不能很好的模拟出来,而且对于其他协议的应用也不支持。

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    在这里插入图片描述

    软件测试面试小程序

    被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

    涵盖以下这些面试题板块:

    1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

    6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 相关阅读:
    【Matplotlib绘制图像大全】(十五):Matplotlib绘制误差曲线
    Python自动生成小学生口算试卷源代码,可设置各算数项和取值范围、可以生成求结果、求算数项、带括号的算式
    PyTorch实现PPO代码
    LeetCode 17 Java 实现
    快鲸智慧楼宇系统:助力商办楼宇快速实现智慧化、数字化运营
    2022-07-26
    StringTable详解 串池 性能调优 字符串拼接
    【k8s-1】基于docker Desktop一键式搭建k8s环境
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java散酒营销系统w5at6
    二维数组练习
  • 原文地址:https://blog.csdn.net/NHB456789/article/details/132603150