抓包工具 Fiddler 使用:弱網絡環境模擬限速測試流程


轉自:http://www.51testing.com/html/80/n-3726980.html

抓包工具 Fiddler 使用:弱網絡環境模擬限速測試流程

發表於:2018-6-06 11:46  作者:西邊人   來源:51Testing軟件測試網采編

字體:   | 上一篇 | 下一篇 |我要投稿 | 推薦標簽: 軟件測試工具 Fiddler 抓包工具

   一:為什么要做弱網絡測試
  實際的客戶現場可能網絡不穩定或者網速低,惡劣的網絡環境會導致出現一些bug,影響用戶體驗甚至某些服務不可用。而公司內部的研發環境網絡通常比較順暢,難以復現這種bug。要解決這種問題,就需要制造弱網絡的環境進行測試、復現並修復問題。
   二:如何模擬惡劣網絡環境?
  本文僅以 fiddler為例,其他的做個了解,不具體研究。
   三:Fiddler怎樣模擬弱網?
  Fiddler 是一個 HTTP 調試代理,它能夠 記錄所有你電腦和 互聯網之間的 HTTP 通訊,Fiddler 也可以讓你檢查所有的 HTTP 通訊,設置斷點,以及修改所有的“進出”的數據(指Cookie/HTML/JS/CSS 等文件)。
  利用Fiddler來模擬惡劣的網絡環境,實現簡單,較為直觀,缺點是只能支持那些利用HTTP進行通信和交互的服務。
  打開fiddler,默認情況下Rules –> Performances –> Simulate Modem Speeds 是未勾選狀態,網絡正常。當選中此選項(模擬光貓網速)后,網速就會變很慢,打開一個網頁要加載很久。這樣就實現了弱網絡效果。
   設置
  如果想了解(上傳和下載)網速的具體數值,可以使用一個工具speedtest,測速方法很簡單,網上有大把教程。
  http://www.speedtest.net/是英文的網站,應該是國外版,訪問比較慢。而且 Windows系統只支持Windows10下載客戶端,我用的Windows7使用chrome瀏覽器要安裝Speedtest擴展程序就得翻牆,所以不推薦使用。建議訪問http://www.speedtest.cn/網站,測速生成結果很快且是中文的。支持 手機客戶端 APP下載。
   四:限速原理
  Fiddler限速是以網絡延遲的方式實現的,網絡延遲時間*網速=傳輸字節數。
  點擊Rules – Customize Rules(快捷鍵Ctrl + R)打開Fiddler ScriptEditor,或者直接點開右側主頁簽的FiddlerScript。
  image.png
  打開該文件后,Ctrl + F 查找m_SimulateModem標志位,可以看到如下代碼:
  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"; }
  注釋說明: request-trickle-delay中的值代表每KB的數據被上傳時會被延時多少毫秒;response-trickle-delay則對應下載時每KB的數據會被延時多少毫秒。比如你要模擬上傳速度100KBps的網絡,那上傳延遲就是1KB/100KBps=0.01s=100ms,就改成100。
  當勾選了Simulate Modem Speeds時,request-trickle-delay 與 response-trickle-delay就會被設置,如果本身網速已經相當快的話,這里設置的值就可以近似地推算出開啟模擬后的上傳和下載帶寬了,比如默認設置下上傳延時為300ms下載延時為150ms,可以推算出大致的模擬帶寬為:
  上傳帶寬=(1 * 8/1000) /0.300 ≈ 0.027Mbps
  下載帶寬=(1 * 8/1000) /0.150 ≈ 0.053Mbps
  實際情況下得到的帶寬可能會有誤差,受各種外因影響不會這么精確。
  由此可見下載帶寬是上傳的兩倍,也就是延時越小,帶寬越大。帶寬和這里的延時是成反比的。
   五:調整網絡環境參數
  Fiddler 默認的 Simulate Modem Speeds速度實在太慢了,而這個限速的參數是可以調整的,如果需要再快一點可以修改配置文件Fiddler2ScriptsCustomRules.js。(如若修改勿忘備份原文件)在fiddler官網http://www.fiddlerbook.com/Fiddler/dev/ScriptSamples.asp可以找到參考示例。
  下面提供了兩種簡單的修改腳本的方法,選擇一種即可。
  方法1
  查找到if (m_SimulateModem)語句,修改代碼。下面的腳本實現了一個隨機延時量設置,使得網絡帶寬不是恆定為一個低速的值,而是會在一定范圍內隨機抖動:
  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);}
   方法2
  點擊fiddlerScript 在代碼里找到onBeforeRequest,這里定義了在發送請求前做什么。加入如下代碼可以實現延遲:
  oSession["request-trickle-delay"]="3000"; //請求階段延遲3秒oSession["response-trickle-delay"]="3000"; //響應階段延遲3秒
   添加代碼
  上面兩種方法選其一,修改后保存配置文件(Ctrl+S)或者清掉緩存(Rules –> Performances –>Disable Caching),再次勾選Rules –> Performances –> Simulate Modem Speeds 進行測速。注意:每次編輯並保存配置文件后,Simulate Modem Speeds選項會被取消,請重新勾選。
  限速完畢一定要取消勾選,不然會影響上網。像第二種方法由於請求和響應都延遲3秒,會導致訪問網頁很慢。
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM