使用Fiddler模拟网络

发布于:2024-04-01 ⋅ 阅读:(72) ⋅ 点赞:(0)

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. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

本文含有隐藏内容,请 开通VIP 后查看