Fiddler 模擬弱網(wǎng)環(huán)境測(cè)試

為什么要進(jìn)行弱網(wǎng)環(huán)境測(cè)試?

由于用戶自身的網(wǎng)絡(luò)環(huán)境波動(dòng),或者是本身網(wǎng)絡(luò)環(huán)境就較為惡劣,導(dǎo)致會(huì)出現(xiàn)一些意想不到的非功能性bug,影響用戶體檢。比如

利用Fiddler,Charles等具有代理服務(wù)器功能的網(wǎng)絡(luò)流量分析軟件來(lái)實(shí)現(xiàn)。

fiddler模擬限速的原理

Fiddler限速是以網(wǎng)絡(luò)延遲的方式實(shí)現(xiàn)的,網(wǎng)絡(luò)延遲時(shí)間*網(wǎng)速=傳輸字節(jié)數(shù)。

fiddler本來(lái)就是個(gè)代理,它提供了客戶端請(qǐng)求前和服務(wù)器響應(yīng)前的回調(diào)接口,我們可以在這些接口里 面自定義一些邏輯。Fiddler的模擬限速正是在客戶端請(qǐng)求前來(lái)自定義限速的邏輯,此邏輯是通過延遲發(fā)送數(shù)據(jù)或接收的數(shù)據(jù)的時(shí)間來(lái)限制網(wǎng)絡(luò)的下載速度和 上傳速度,從而達(dá)到限速的效果。

如何利用Fiddler來(lái)模擬惡劣的網(wǎng)絡(luò)環(huán)境?

1、啟用 "模擬Modem速度"?

? ? ? ? Rules – Performances – Simulate Modem Speeds? ? ? ?

? ? ? ? 默認(rèn)未勾選,網(wǎng)絡(luò)正常。勾選該選項(xiàng)后,所有通過Fiddler代理的流量都會(huì)變得和多年前的56k小貓時(shí)上網(wǎng)一般的慢。?

? ? ? ? 注意:開啟限速前后,配合測(cè)速工具speedtest(speedtest.net 國(guó)外/ speedtest.cn 國(guó)內(nèi)),能夠看到ping、download、upload都會(huì)受到影響,如下圖:

限速前
限速后

2、配置限速參數(shù)(?網(wǎng)絡(luò)環(huán)境參數(shù))

????????采用默認(rèn)的配置模擬出來(lái)的環(huán)境過于惡劣,并不一定符合需求,此時(shí)就需要對(duì)限速的參數(shù)進(jìn)行調(diào)整。?


? ? ? ? (法一)Rules – Customize Rules…??

? ? ? ? 就會(huì)用文本編輯器打開CustomRules.js文件,其默認(rèn)位于用戶目錄的文檔目錄下的\Fiddler2\Scripts 位置,后綴名是js。然后,找到一個(gè)m_SimulateModem標(biāo)志位(如下圖),并設(shè)置請(qǐng)求延遲、相應(yīng)延遲 ,單位為ms.

如上,為oSession的兩個(gè)參數(shù)。request-trickle-delay中的值代表1KB的數(shù)據(jù)被上傳時(shí)會(huì)被延時(shí)多少毫秒;response-trickle-delay則對(duì)應(yīng)下載時(shí)1KB的數(shù)據(jù)會(huì)被延時(shí)多少毫秒。比如你要模擬上傳速度500KBps的網(wǎng)絡(luò),那上傳延遲就是1KB/500KBps=0.002s=2ms,就改成2。

????(法二)或者,直接打開右側(cè)監(jiān)控面板的“FiddlerScript”選項(xiàng)卡,如下:


????????如果本身網(wǎng)速相當(dāng)快,這里設(shè)置的值就可以近似地推算出開啟模擬后的上傳和下載帶寬,比如默認(rèn)設(shè)置下上傳延時(shí)為300ms下載延時(shí)為150ms,可以推算出大致的模擬帶寬為:

? ? ? ? →?上傳帶寬=(1 * 8/1000) /0.300 ≈? 0.027Mbps

? ? ? ? → 下載帶寬=(1 * 8/1000) /0.150 ≈ 0.053Mbps

????????然而實(shí)際情況下卻得到了兩倍于這個(gè)值的帶寬,推測(cè)可能是Fiddler的內(nèi)部實(shí)現(xiàn)上有一些和描述上的不同,為何為造成這個(gè)現(xiàn)象現(xiàn)在還不是很清楚,所以上述公式最后還需要修正一個(gè)2.0的系數(shù),即:

? ? ? ? →?上傳帶寬=((1*8/1000)/0.300)*2.0≈0.053Mbps

? ? ? ? ?→?下載帶寬=((1*8/1000)/0.150)*2.0≈0.106Mbps



科普1:用來(lái)衡量帶寬的單位,指每秒鐘傳輸?shù)亩M(jìn)制位數(shù);

? ??????????????Mbps 即 Milionbit pro second(百萬(wàn)位每秒);

? ??????????????Kbps 即 Kilobit pro second(千位每秒);

? ??????????????bps 即 bit pro second(位每秒);

? ??????????????1 Mbps?=1000? Kbps?=1000000?bps?

科普2:而通常軟件上顯示的速度則是指每秒種傳輸?shù)淖止?jié)數(shù)(Byte)通常用B(大寫)表示;

? ??????????????MB即百萬(wàn)字節(jié)也稱兆字節(jié);

? ??????????????KB即千字節(jié);

? ??????????????B即字節(jié);

? ??????????????之間關(guān)系為1MB=1024KB=1024*1024B;

? ??????????????1B=8b;

? ? ? ? ? ? ? ? →??所以1M帶寬即指1Mbps=1000Kbps=1000/8KBps=125KBps;



3、編寫自定義腳本

? ? ? ? 即擴(kuò)展或新增CustomRules.js里的邏輯。比如實(shí)現(xiàn)新增一個(gè)隨機(jī)延時(shí)量,使得網(wǎng)絡(luò)帶寬不是如上一步般恒定為一個(gè)低速的值,而是會(huì)在一定范圍內(nèi)隨機(jī)抖動(dòng),如下,將代碼段1,改為 代碼段1 :?


? 代碼段1:

if (m_SimulateModem) {

// Delay sends by 300ms per KB uploaded.

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

// Delay receives by 150ms per KB downloaded.

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

}


代碼段2:

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,500);

// Delay receives by 150ms per KB downloaded.

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

}

PS:修改后保存配置文件(Ctrl+S)或者清掉緩存(Rules –> Performances –>Disable Caching),再次勾選Rules –> Performances –> Simulate Modem Speeds 進(jìn)行測(cè)速。注意:每次編輯并保存配置文件后,Simulate Modem Speeds選項(xiàng)會(huì)被取消,請(qǐng)重新勾選。

遇到的問題:如上修訂后Rules –> Performances 菜單可能會(huì)消失,回滾即可,或重啟下。


Fiddler模擬惡劣網(wǎng)絡(luò)環(huán)境的局限性

利用Fiddler來(lái)模擬惡劣的網(wǎng)絡(luò)環(huán)境,實(shí)現(xiàn)簡(jiǎn)單,較為直觀,缺點(diǎn)是只能支持那些利用HTTP進(jìn)行通信和交互的服務(wù),對(duì)于其他協(xié)議的應(yīng)用不支持

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 現(xiàn)在是智能化時(shí)代,每個(gè)孩子或多或少都會(huì)接觸到電子產(chǎn)品:電視、Ipad、手機(jī)等等,我個(gè)人認(rèn)為不能完全剝奪孩子探索...
    俐姐奮斗記閱讀 370評(píng)論 0 5
  • 很早,在認(rèn)識(shí)我的時(shí)候你說很想跟我住在一起。 你會(huì)不忍想象靠近我,在一起,住在一起的生活。 前前后后兩個(gè)多月的時(shí)候,...
    Ermao閱讀 148評(píng)論 0 1
  • 人與人之間怎樣的建立了關(guān)系,為什么的相識(shí),你不去想,她卻來(lái)了。 推進(jìn)的明天,還是未來(lái),你不敢想,怕...
    志津閱讀 287評(píng)論 0 1

友情鏈接更多精彩內(nèi)容