1. 背景、目標、目的
(1) 背景:
我們在移動開發或者測試的時候,時常遇到在正常網絡環境下的代碼運行一切正常,一旦網絡有抖動甚至網速較慢時,各種bug頻發,當然我們開發中必須要提前對異常進行設計,但是必要的測試還是很需要的。由于iOS的開發工具XCode已經具備此功能,重點在于Android設備,當然我們的解決方案適用于各種移動設備以來的移動網絡測試。
(2) 目的:
不論是Android還是iOS設備,連接到我們提供的模擬環境后,可以通過配置控制網絡條件,滿足包括下行速度、下行丟包率、下行延遲、上行速度、上行丟包率、上行延遲、DNS延遲的設置、以及可抓包。
(3) 目標:
為移動設備提供可以模擬丟包、慢速等網絡條件的穩定可復用的網絡環境。
2. 方案
通常的方案主要包括:1.Facebook網絡環境模擬工具ATC、2.包括wireshark、Fiddler、Charles等抓包工具提供代理、3.模擬器、4.以及我們使用的以“Network Link Conditioner”為核心的方案。
個人經過試驗方案1太過復雜而且還需要特定版本的的無線路由器;方案2只能針對http、https進行,對于tcp、udp無效;方案3穩定性兼容性都不高。
自然我們的方案4要優于1、2、3啦。進入正題。
3. 環境
- 必要:OSX設備:MacBook等;
- 必要:USB以太網接入HUB一臺、以及可以提供上網接入的網線;
- 必要:安裝XCode(我個人是8.3.2版本)
- 必要:Network Link Conditioner.prefPane
- 必要:移動設備一臺,用來測試網絡
4. 實現
(1) 安裝 Network Link Conditioner
由Apple官方提供:developer_apple下載:Additional_Tools_for_Xcode_11
安裝:進入Hardware文件夾,點擊Network Link Conditioner.prefPane進行安裝
Mojove版本中直接一下雙擊安裝可能存在異常提醒,可以將Network Link Conditioner.prefPane文件手動替換本地跟隨系統安裝目錄下的內容,例如查找你的路徑為:/Users/你的用戶名/Library/PreferencePanes,替換后,雙擊即可
結果:這就是設置和控制面板了
(2) MacBook切換到AP模式,提供熱點
使用USB以太網接入Hub鏈接網線和mac設備
點擊“系統偏好設置” ——》 “共享”進行如下設置
此部分內容網絡上教程較多,如果不是很熟悉可以自行搜索“Mac怎么設置wifi熱點,Mac做wifi熱點”之類的內容。
(3) 測試以及抓包
以上兩步完成之后,環境就準備好了,手機鏈接Mac提供的網絡,另外在“Network Link Conditioner”面板中使用某一個或者自定義一個網絡環境即可。
我使用wireShark進行抓包,成功,各種類型的協議一覽無余。