模擬弱網,和弱網工具的使用對比
針對弱網測試工具(facebook ATC,clumsy等)的部署和測試對比,實現模擬弱網測試的部署和測試實施。並對當前XXXX項目進行基礎測試,以及在弱網情況,XXXX APP的用戶體驗。弱網測試的使用以及測試點已經做過培訓,並應用在弱網的功能測試上(已產出測試文檔)。
測試點包含:弱網功能測試,用戶體驗測試,無網狀態測試,網絡切換測試。
工具的使用和對比
本次測試項目爲“XXXX”,通過手機端模擬不同網絡 帶寬/延遲/掉包 的情況進行測試。
測試軟件爲 ATC(augmented traffic control) 和 clumsy 模擬測試使用需要的各種弱網。
軟件安裝:
ATC安裝配置
1,ATC部署linux環境上。(本次測試嘗試部署ubuntu16和centOS7。涉及到數據轉發和AP硬件支持,centOS iptables轉發和官網教程部署ubuntu方式存在出入),通過部署虛機和實體機部署ubuntu16完成ATC環境搭建和使用。
2,需要設置無線AP。
3,部署ATC
第二部分無線AP需要部署:
無線AP驅動
DHCP服務器:用來設備連接上來後分配IP地址用的
hostapd :用於wifi的認證
數據轉發 : 將終端設備發送過來的數據包轉發到另一個能夠連接到外網的網卡上
部署相對比較複雜,特別是iptables轉發。經過測試和摸索,優化方法使用腳本方式。
1, 減少執行各個腳本麻煩和出錯機率。
2, 優化DHCPD和hostapd啓動方式,使用 creat_ap 方式。
3, ATC可以使用docker部署
最終Shell腳本如下,直接ubuntu下執行即可完成所有ATC使用要求。
部署在ubuntu16,虛擬機,docker,實體機都嘗試部署成功。 docker可以使用docker-compose方式,更加快捷。
#!/bin/bash
sudo bash -c "echo 1 >/proc/sys/net/ipv4/ip_forward"
####### 開啓內核IP轉發
sudo iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
####### 開啓防火牆NAT轉發
sudo nmcli radio wifi off
####### 關閉NetworkManager對無線網卡的控制
sudo ifconfig wlxe84e062b7646 10.5.5.1/24 up
####### 設置並啓動無線網卡
sudo rfkill unblock wlan
####### 解鎖無線設備,可以用rfkill list查看解鎖結果
sleep 4
sudo create_ap wlxe84e062b7646 enp1s0 apt-wifi 123456789 > /home/log/create_ap_log.file 2>&1 &
####### 啓動create_ap(dhcpd和hostapd), 後臺啓動並記錄日誌create_ap_log.file
#######nohup sudo hostapd /home/hostapd-2.6/hostapd/hostapd-minimal.conf >/home/log/hostapd.log 2>&1 &
####### 上面用create_ap 代替了hostapd 啓動方式
nohup sudo atcd --atcd-wan enp1s0 --atcd-lan wlxe84e062b7646 --atcd-dont-drop-packets >/home/log/actd.log 2>&1 &
####### 後臺啓動 atcd
python /home/atcui/manage.py runserver 0.0.0.0:8000
####### 運行ATC UI
啓動成功後,通過wifi發現 apt-wifi 密碼123456789 的無線連接,連接後就處於ATC網絡環境。
同樣,本地訪問 http://192.168.0.xxx:8000/atc_demo_ui/ 可以進去ATC的設置頁面。
常用的網絡配置已經導入,如果要切換配置,只需點擊配置旁邊的“Select”按鈕,在點擊上方的“Update Shaping”按鈕即可。
clumsy安裝配置
下載即用,不需要安裝任何東西。
不需要額外設置,不需要修改你的程序的代碼。
系統級別的網絡控制,可以適用於命令行,圖形界面等任何 Windows 應用程序。
不僅僅只支持 HTTP,任何 TCP, UDP 的網絡連接都可以被處理。
支持本地調試(服務器和客戶端都在 localhost)
“熱插拔”,你的程序可以一直運行,而 clumsy 可以隨時開啓和關閉。
實時調節各種參數,詳細控制網絡情況。
- 延遲(Lag),把數據包緩存一段時間後再發出,這樣能夠模擬網絡延遲的狀況。
- 掉包(Drop),隨機丟棄一些數據。
- 節流(Throttle),把一小段時間內的數據攔截下來後再在之後的同一時間一同發出去。
- 重發(Duplicate),隨機複製一些數據並與其本身一同發送。
- 亂序(Out of order),打亂數據包發送的順序。
- 篡改(Tamper),隨機修改小部分的包裹內容。
測試過程:
Facebook ATC經過測試後,可以實現不同網絡切換,網絡模擬不同速率,帶寬,延遲,丟包等情況。
導入常用2G,3G,4G,cable,edge,和不同延遲,丟包等網絡設置,直接選擇即可。
詳細使用操作
Clumsy通過共享網絡模擬網絡延遲情況,相對更便利。電腦端設置,監聽手機端IP,手機端代理電腦端IP+端口。
模擬請求延遲2s:
1, PC端打開Fiddler,手機連接代理
2, 打開clumsy,在Filtering輸入框中輸入:outbound and ip.DstAddr == 192.168.2.176(這是你的手機的IP地址)
3, 根據要求,勾選(Lag),設置Delay輸入框爲2000
4, 點擊start,打開你的手機app,你會發現手機請求相比與之前會慢很多。
詳細使用操作 (這個markdown不支持上傳圖片和附件,有需要的聯繫,發給你吧)