fiddler做弱网测试的步骤
参考
1、这里有详细的算法:https://blog.csdn.net/qq_41714308/article/details/82894686
她有说后面的结果分析
2、这里介绍比较全面:https://blog.csdn.net/qq_28351609/article/details/84568422
他这里说fiddler只能做网络延时,不能模拟丢包 ,模拟丢包要用NEWT (Network Emulator for Windows Toolkit)
3、https://blog.csdn.net/baidu_zhongce/article/details/46683323 它也说了fiddler只能模拟应用层HTTP协议的,不能模拟丢包
面试题:
如何用fiddler做弱网测试?
答:在fiddler脚本编辑器中修改上行下行的延迟时间,然后开启模拟器,就可以开始测试了。
步骤:
1、ctrl+R打开fiddle的脚本编辑窗口,ctrl+F查找response-trickle-delay,找到如下图中的
解释:request-trickle-delay:网络请求的延迟时间,response-trickle-delay:网络响应的延迟时间,单位都是ms
网络取值的算法就是 1000/下载速度 = 需要delay的时间(毫秒),比如50kb/s 需要delay200毫秒来接收数据。
我认为的模拟2G设置request延时=3000ms,response延时=1000ms
3G上行100ms,下行40ms
2、修改好代码后,启用模拟器
在fiddler中Rules → Performances → Simulate Modem Speeds
3、分析
手机点击登录,抓到了登录的包,fiddler中选择这条登录请求,查看右边的statistics面板
5、【编写自定义脚本:设置一定范围内随机抖动】
进一步地,我们可以扩展CustomRules.js里的逻辑,参照Jscript的文档可以在模拟恶劣环境中加入更多自定义的逻辑,这里实现了一个随机延时量设置,使得网络带宽不是恒定为一个低速的值,而是会在一定范围内随机抖动:
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,50);
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = ""+randInt(1,50);
}
【Fiddler模拟恶劣网络环境的局限性】
Fiddler进行限速较为简单和灵活,配置也较为方便,但是由于它是一个应用层的HTTP的代理,只能模拟该层上的行为,对于一些复杂的网络层的丢包、重传等恶劣情况就不能很好的模拟出来,而且对于其他协议的应用也不支持,后续会介绍一些其他的模拟恶劣环境的方法和软件来弥补这些缺失。