當前APP網絡環境比較複雜,網絡制式有2G、3G、4G網絡,還有愈來愈多的公共Wi-Fi。不一樣的網絡環境和網絡制式的差別,都會對用戶使用app形成必定影響。另外,當前app使用場景多變,如進地鐵、上公交、進電梯等,使得弱網測試顯得尤其重要。若是app沒有對各類網絡異常進行兼容處理,那麼用戶可能在平常生活中遇到APP閃退、ANR、數據丟失等問題。所以,app網絡測試,特別是弱網測試尤其重要。本文梳理了app網絡測試要點和弱網測試經常使用模擬方法,讓你們對網絡測試有一個全面的認識。html
APP網絡測試要點
ios
一、各個網絡下功能測試web
- 不一樣網絡下,檢查基本功能點
- 運營商移動、聯通、電信接入點測試(須要使用實際SIM卡)
- 如有智能DNS功能,還須要關注運營商判斷/歸類
- 高延時、高丟包、無網、假熱點也可納入弱網測試範疇
二、網絡切換測試
部分APP有智能DNS功能,網絡切換涉及DNS切換。
網絡切換檢測機制:Android能夠監聽系統廣播
三、弱網測試
用戶體驗和異常處理是各個網絡場景都須要關注的,只是弱網場景下,須要重點關注。chrome
弱網測試模擬
什麼樣的網絡屬於弱網
低於2G速率的時候都屬於弱網,3G也可劃分爲弱網,通常Wi-Fi不劃入弱網測試範疇。網絡
如何進行弱網測試
一、SIM卡的網絡切換
手機-設置-移動網絡設置-網絡類型選擇
3G、4G卡均可以設置關閉3G/4G,只走2G網絡。
二、具體弱網場景測試,常見場景包括:地鐵/巴士、電梯、樓梯間、停車場
三、使用虛擬機模擬網絡速度,如用樹莓派搭建的弱網測試儀
四、使用軟件進行網絡代理,模擬不一樣的網絡帶寬、延時率、丟包率app
弱網模擬經常使用工具
方法一:charles弱網模擬

配置參數解析:
bandwidth —— 帶寬,即上行、下行數據傳輸速度
utilisation —— 帶寬可用率,大部分modern是100%
round-trip latency —— 第一個請求的時延,單位是ms。
MTU —— 最大傳輸單元,即TCP包的最大size,能夠更真實模擬TCP層,每次傳輸的分包狀況。
Releability —— 指鏈接的可靠性。這裏指的是10kb的可靠率。用於模擬網絡不穩定。
Stability —— 鏈接穩定性,也會影響帶寬可用性。用於模擬移動網絡,移動網絡鏈接通常不可靠。工具
具體網絡設置參考:
post
Fiddler也能夠進行弱網環境模擬,具體參考:Fiddler弱網模擬測試
方法二:chrome的webview調試工具弱網模擬
使用chrome的webview調試工具,缺點是隻適用於web頁面的弱網模擬。
具體步驟:
(1)應用打開webview調試功能,具體以下:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
(2)手機連接電腦,運行APP,進入具體H5頁面;
(3)chrome的DevTools中打開Webview:進入chrome://inspect/#devices,會顯示已經鏈接設備,選中待調試webview的inspect
network頁面,No throttling下拉框,能夠進行網絡模擬。
ui
方法三:iOS手機自帶Network Link Conditioner 弱網模擬
iPhone手機打開開發者選項,具體參考:參考
設置-開發者選項 > Network Link Conditioner 入口。
系統已經內置常見網絡配置,也能夠增長自定義配置。
具體配置參數:
in Bandwidth 下行帶寬,即下行網絡速度
In packet loss 下行丟包率
in delay 下行延遲,單位ms
out bandwidth 上行帶寬
out packet loss 上行丟包率
out delay 上行延遲
DNS delay DNS解析延遲
protocol 支持Any,IPV四、IPV6
interface 支持Any,WI-Fi,cellular(蜂窩網)
具體步驟參考:

網絡測試經典問題分享
場景一:弱網下,頁面加載過程,程序閃退。
緣由:webview超時處理未在UI線程。toast、關閉頁面等操做須要在UI線程。
場景二:302跳轉頁面,達到內置超時閥值後,webview自動關閉。 緣由:業務有頁面加載超時自動關閉的邏輯,超時機制未考慮302場景。