1. 程式人生 > >Android使用Fiddler模擬弱網路環境測試(轉)

Android使用Fiddler模擬弱網路環境測試(轉)

前言 現在的Android軟體,基本上都會有網路請求,有些APP需要頻繁的傳輸資料時對於網路請求的穩定性和在特殊網路條件下的相容性有要求,但是我們在測試的時候又很難模擬那種弱網路差網路的情況,今天就給大家分享一篇乾貨來模擬弱網路情況。

正文 第一步:下載抓包軟體fiddler 官網:http://www.telerik.com/fiddler

這是PC端的軟體,我們模擬弱網路環境的流程大概是:手機APP使用網路代理代理到我們的pc上,然後所有的網路請求都會經過pc,這個時候我們就可以通過fiddler來限制網路,從而達到模擬弱網路環境的目的。

這就是Fiddler的主介面了:

è¿éåå¾çæè¿°

第二步:設定fiddler fiddler還需要設定一下需要設定一下,找到頭部的Tools功能,然後點選第一個功能Options,會彈出一個介面:

è¿éåå¾çæè¿°

找到Connections,把port改為8888,這個時候就可以使用我們的手機代理到電腦上了。

è¿éåå¾çæè¿°

第三步:設定安卓裝置代理 開啟我們的手機,進入wifi設定,這裡要注意的是安卓裝置連線的wifi必須和我們的PC是同一個網路才能設定成功。大部分的安卓裝置都可以在wifi設定裡面設定代理,但是不排除有少部分裝置是系統有限制的。在設定代理之前我們需要知道PC的ip地址,可以通過系統cmd命令,然後ipconfig獲取,如下:

è¿éåå¾çæè¿°

然後就可以再手機裡面設定代理了,這是我的手機的wifi設定代理的介面:

è¿éåå¾çæè¿°

設定後之後,手機上所有的網路請求都會代理到Fiddler然後可以查看了:

è¿éåå¾çæè¿°

第四步:設定網路限制 回到我們的fiddler中來,在工具欄中找到Rules,從名字很顯而易見這個功能是用來幹嘛的了。再到Rules列表中找到Customize Rules,這個時候會彈出一個類似於文字編輯器的東西:

è¿éåå¾çæè¿°

在這個文字編輯器中使用Ctrl+F使用搜索功能搜尋關鍵字:simulate,可以找到如下程式碼段:

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代表的是你網路請求的延遲時間,response-trickle-delay代表的是網路響應的延遲時間,單位都是毫秒,這裡預設給的是300毫秒和150毫秒,所以,只需要修改這2個值即可模擬網路延遲和弱網路環境了,比如可以修改上述2個值為:2000和2000,代表網路請求延遲2秒,網路響應延遲2秒:

if (m_SimulateModem) {     // Delay sends by 300ms per KB uploaded.     oSession["request-trickle-delay"] = "2000";      // Delay receives by 150ms per KB downloaded.     oSession["response-trickle-delay"] = "2000";  } 改完之後記得按Ctrl+S儲存。

第五步:開啟網路延遲 接下來就可以開啟網路延遲了,還是我們的Rules功能中,找到Performance,然後在子選項中可以看到一個Simulate Modems Speeds,選中它,大功告成,網路延遲已經開啟,如果需要關閉網路延遲,再次點選即可。

第六步:擴充套件弱網路規則 可能我們在測試中不會想要一個一直虛弱的網路環境,而是隨機強弱的網路,這樣比較貼切我們的真是情況,那麼我們可以修改上述程式碼為:

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,2000);     // Delay receives by 150ms per KB downloaded.     oSession["response-trickle-delay"] = ""+randInt(1,2000); } 這裡的randInt(1,2000)應該很好理解,代表1-2000中的一個隨機整數,這樣就會出現偶爾有延遲偶爾網路又良好的情況