面試題:
如何用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的代理,只能模擬該層上的行為,對於一些復雜的網絡層的丟包、重傳等惡劣情況就不能很好的模擬出來,而且對於其他協議的應用也不支持,后續會介紹一些其他的模擬惡劣環境的方法和軟件來彌補這些缺失。