場景:
iOS中我們可能經常用到監聽網絡,不過大部分是監聽網絡的類型,即2G/3G/4G WIFI,是否連接網絡,然而測試人員對APP進行測試時候經常會有一個弱網測試,即在弱網環境下對APP進行測試,這個時候APP會出現各種問題,比如接口請求不到數據等問題,那么我們有沒有辦法像監聽網絡一樣去監聽弱網呢?
弱網測試:我們的經常用的抓包工具Charles就可以簡易的模擬弱網環境,而我們的真機也可以在調試時候模擬弱網
設置-->開發者-->Status-->Enable打開,然后選擇下面的每個選項,就可以模擬弱網了
思考1:
網上查了資料並沒有直接監聽弱網的資料,那么有什么其他辦法可以做到這一點呢?
這個時候我想到了終端的ping命令,對一個baidu.com的ping結果如下:
那么能不能在iPhone上去ping我們的服務器,通過ping的結果去判斷我們的網絡環境呢?不多說,嘗試一下。
Apple提供了一個系統的ping庫,有興趣的可以去看
https://developer.apple.com/library/content/samplecode/SimplePing/Listings/Common_SimplePing_m.html#//apple_ref/doc/uid/DTS10000716-Common_SimplePing_m-DontLinkElementID_4
我偷懶網上找了一個封裝好的三方庫STSimplePing,加入工程后進行測試結果如下:
正常網絡情況下:
將弱網模擬調至100% lose結果如下:
結果都能收集到,若通過Ping判斷網絡方案合理的話,那么我們可以通過時間和丟包率來判斷網絡情況
思考2:
參考文檔:http://www.cocoachina.com/ios/20160224/15407.html
分析了ReallyReachaAbility監控的原理,ReachaAbility監控網絡狀態的變化,ping判斷網絡是否真實連接及狀態,通過定時器時時判斷網絡狀態及真實的網絡連接情況