《吐血整理》進階系列教程-拿捏Fiddler抓包教程(15)-Fiddler弱網測試,知否知否,應是必知必會

1.簡介

  現在這個時代已經屬於流量時代,用戶對於App或者小程序之類的操作界面的數據和交互的要求也越來越高。對於測試人員弱網測試也是需要考驗自己專業技術能力的一種技能。一個合格的測試人員,需要額外關注的場景就遠不止斷網、網絡故障等情況了。還要對於弱網的數據定義,不同的應用所界定的含義是不一樣且不清晰的,不僅要考慮各類型網絡最低速率,還要結合業務場景和應用類型去劃分。按照移動的特性來說,一般應用低於2G速率的都屬於弱網,也可以將3G劃分爲弱網。除此之外, 弱信號的Wifi通常也會被納入到弱網測試場景中。無論是做web端還是app端的測試,我們都需要對弱網進行測試,對於弱網方法有很多種,如:Fiddler模擬弱網,控制電腦的網速等,今天介紹下Fiddler如何進行測試弱網。

2.什麼是弱網?

弱網看字面意思就是網絡比較弱,我們通稱爲信號差,網速慢、卡。通常低於3G網絡速率和弱信號的Wifi都屬於弱網。現在這個科技時代大量的用戶會在地鐵、隧道、電梯和車庫等場景下使用APP 。這種場景下,網絡會出現延時、中斷和超時等情況。

3.什麼是弱網測試?

弱網測試主要是對網絡帶寬、丟包、延時等進行模擬弱網環境去測試不同應用軟件,屬於健壯性測試。

根據大部分用戶使用移動端軟件模擬弱網測試,調研而得出來的網絡數據情況, 弱網環境控制上行速率爲10 下行速率爲30這個範圍內都算弱網測試。

4.爲何要進行弱網測試?

國內移動智能設備迅速普及,大大增加了用戶碎片化使用智能設備的概率,用戶可能會在車站、地鐵、高鐵、公交、電梯間、樓梯間、隧道、地下車庫等弱網環境下使用互聯網應用。我們需要針對這些弱網環境,驗證應用軟件的健壯性和容錯性,提高用戶體驗,避免因用戶體驗不友好造成核心用戶的流失。

5.如何做弱網測試?

對於測試人員來說,要高效的進行弱網測試,就需要藉助第三方工具搭建出各種弱網的環境,模擬一個弱網環境即可。宏哥這裏主要講解和分享第三方工具Fiddler。

通過工具對數據鏈路層進行干擾,設置不同的網絡帶寬、丟包、延時參數來模擬弱網環境,進行測試。

首先,只要搭建出來弱網環境, 模擬一個弱網環境即可。可以通過軟硬件方式兩種。軟件方式利用 模擬網絡參數來配置弱網環境,就可以達到目的。

你也可以選擇第三方,比如:Charles , Network link Conditioner 。在各類網絡軟件中,主要就是對帶寬、丟包、延時等進行模擬弱網環境。但是方式是由一定的弊端的,不是非常接近弱網絡環境,想要更接近弱網環境。在windows環境下我們通常可以使用fiddler和network emulator for windows toolkit來模擬,在mac環境下則可以使用Charles和Xcode自帶的開發環境網絡異常模擬工具進行測試。

例如大多數專項測試,會更傾向於通過 硬件方式來協助測試,但這種方式又會變得很麻煩,都是通過「樹莓派」網維協助搭建!如果出現有些無法模擬的情況,只能靠人工移動到電梯、地鐵等信號比較弱的地方。補充一點, 軟件方式的成本低且實施起來容易操作。

6.弱網測試工具

常用的弱網測試工具有:Fiddler、Charles、Clumsy、弱網儀等。

7.Fiddler模擬限速的原理

我們可以通過Fiddler來模擬限速,因爲Fiddler本來就是個代理,它提供了客戶端請求前和服務器響應前的回調接口,我們可以在這些接口裏面自定義一些邏輯。Fiddler的模擬限速正是在客戶端請求前來自定義限速的邏輯,此邏輯是通過延遲發送數據或接收的數據的時間來限制網絡的下載速度和上傳速度,從而達到限速的效果。

那麼我們的算法就是:

1000/下載速度 = 需要delay的時間(毫秒) //比如50kb/s 需要delay200毫秒來接收數據。

8.參考常見網絡制式的上行、下載速度表

參考常見網絡制式的上行、下載速度表,如下圖所示:

 9.弱網測試思路

9.1弱網測試思路簡單歸納

1.網絡正常情況下功能正常使用。

2.無網絡情況下功能是否可用。

3.弱網網絡情況下功能是否可用:

(1)後端服務器是否做了超時處理、提示是否友好;

(2)APP 是否會發生 Crash 或者 ANR 情況;

(3)數據是否會丟失;

(4)前端頁面展示是否完整.....

4.網絡轉變:由 4g 到 3g 、由強 WiFi 到弱WiFi、斷網情況下功能是否可用。

9.2思維導圖

弱網測試思維導圖,如下圖所示:

10.弱網測試點

根據測試思路我們可以羅列測試要點,如下圖所示:

11.弱網測試用例

根據測試要點我們可以編寫弱網測試用例,如下圖所示:

12.弱網模擬常用工具

12.1 360免費WiFi

12.1.1前提準備

1.電腦插入無線網卡(臺式需要一般需要插入網卡,筆記本一般不需要)

2.電腦安裝360免費WiFi軟件

12.1.2部署環境

1.在360免費WiFi 設置中配置WiFi名稱和WiFi密碼,如下圖所示:

2.手機連接此無線WiFi。

3.在360免費WiFi 中打開已連接的手機,點擊圖標,就能清楚的看到下載和上傳的網速。

4.在360免費WiFi 中打開已連接的手機,點擊限速管理圖標,開始設置下載速度和上傳速度,下載速度2KB/s,上傳速度10KB/s,那麼表示下載的最大速度爲每秒2KB/s,上傳的最大速度爲每秒10KB/s。如下圖所示:

以上方法通過限制下載上傳的網絡請求,來達到測試弱網的目的。

12.2瀏覽器限速,打開F12控制檯

宏哥這裏就簡單地介紹兩種瀏覽器,其他瀏覽器類似

12.2.1Edge

1.Edge的設置如下,如果要自己設置網速,就點擊自定義設置,如下圖所示:

12.2.1Chrome

1.Chrome網絡設置,如下圖所示:

12.3Fiddler

12.3.1Fiddler中啓動弱網

1.打開Fiddler,Rules->Performance->勾選 Simulate Modem Speeds。如下圖所示:

2.勾選之後訪問網站會發現網絡慢了很多。

12.3.2設置弱網的參數

1.打開Fiddler,Rules—>Cutomize Rules。如下圖所示:

首先來和宏哥分析一下這幾行代碼:

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

首先來判斷m_SimulateModem是否爲true(是否開啓),也就是是否設置了弱網模式。在前邊我們可以找到這樣的代碼默認沒有開啓, 當勾選了Simulate Modem Speeds時, var m_SimulateModem: boolean = false;會變成 var m_SimulateModem: boolean = true;有興趣的小夥伴或者童鞋們可以自己驗證一下,宏哥說的正確不。

    // Cause Fiddler Classic to delay HTTP traffic to simulate typical 56k modem conditions
    public static RulesOption("Simulate &Modem Speeds", "Per&formance")
    var m_SimulateModem: boolean = false;

Delay sends by 300ms per KB uploaded:上傳1KB內容需要300ms,轉化一下上傳速度:1Kb/0.3s = 3.3KB/s,也就是說網絡上行速度只有3.3KB。

oSession[“request-trickle-delay”] = “300”;

Delay receives by 150ms per KB downloaded:下載1KB內容需要150ms,轉化後的下載速度:1KB/0.15s=6.6KB/s,也就是說網絡下載速度只有6.6KB。

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

如果你想設置下載的速度爲50KB/s,你則需要設置Delay 時間爲 20ms。也可以限制上傳的速度,調整oSession[“response-trickle-delay”]的值即可。

12.3.3編寫自定義腳本

1.我們可以擴展CustomRules.js裏的邏輯,參照Jscript的文檔可以在模擬弱網環境中加入更多自定義的邏輯,這裏實現了一個隨機延時量設置,使得網絡帶寬不是恆定爲一個低速的值,而是會在一定範圍內隨機抖動,這裏的randInt(1,50)應該很好理解,代表1-50中的一個隨機整數,這樣就會出現偶爾有延遲偶爾網絡又良好的情況。參考代碼如下:

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);
}

此外,(1)路由器修改上行和下行速度,(2)Charles弱網模擬(後期關於這個工具宏哥也可能出一個系列的文章),(3)iOS手機自帶Network Link Conditioner 弱網模擬。

13.驗證效果

爲了更清楚地查看效果,宏哥就單獨抓取百度網址的包,就把訪問百度,然後搜索“北京-宏哥”的請求和響應抓取,看一下效果,具體操作步驟如下:

1.打開fiddler–選擇過濾器,如下圖所示:

2.勾選“Use Filters”,選擇“Show only the following Hosts(僅顯示以下主機)”,在下邊的編輯框中輸入百度網址,如下圖所示:

3.點擊“Action(動作)”,選擇“Run Filterset now(現在運行篩選器)”,如下圖所示:

4.沒有啓動Fiddler弱網,開始抓包,訪問百度,搜索“北京-宏哥”,如下圖所示:

5.Ctrl+A全選所有的會話,查看Statistics和Timeline,如下圖所示:

6.啓動Fiddler弱網,再次重複第4步和第5步,是不是感覺比剛纔很卡了,一直在加載轉圈。如下圖所示:

7.查看Statistics和Timeline,如下圖所示:

14.恢復設置

完成測試之後,需要再次執行:打開Fiddler,Rules->Performance->勾選 Simulate Modem Speeds,關閉弱網模擬。否則上網的速度在一啓動Fiddler就會有影響,切記切記!!!

15.小結

Fiddler模擬弱網環境的侷限性

Fiddler進行限速較爲簡單和靈活,配置也較爲方便,但是由於它是一個應用層的HTTP的代理,只能模擬該層上的行爲,對於一些複雜的網絡層的丟包、重傳等惡劣情況就不能很好的模擬出來,而且對於其他協議的應用也不支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章