APP弱網測試
App弱網測試方法,常用工具有使用fiddler進行網絡模擬,也可以使用Network Emulator Toolkit控制模擬網絡,相對來說Network Emulator Toolkit功能比較強大一些。
測試原理:利用軟件對wifi進行網絡控制,手機連接到該wifi,就可以測試app弱網絡下的功能表現。
一、測試關注點:
1、卡死,崩潰,無響應,閃退。
2、業務交互數據傳輸正確性。
二、測試工具:
1.Network Emulator Toolkit
2.WiFi共享工具
三、測試步驟:
1.設置Network Emulator Toolkit模擬測試網絡;
2.設置wifi共享網絡;
3.手機連接該wifi,打開App進行測試。
四、測試方案:
寬帶限制:
上行網絡寬帶:5KB/S 8KB/S 15KB/S 50KB/S 100KB/S
下行網絡寬帶:10KB/S 15KB/S 50KB/S 100KB/S 150KB/S
丟包率:5% 10% 20% 50% 80%
五、操作流程:
1、打開Network Emulator Toolkit,新建Channel(通道)
菜單欄 Configuration -> New Filter 或工具欄的快捷按鈕。
2、新建Filter
菜單欄 Configuration -> New Filter 或工具欄的快捷按鈕。
可選擇所有網絡(ALL NetWork),選好過濾條件后,點擊添加(ADD)按鈕,添加過濾條件;選中已添加的記錄,點擊刪除(Delete)按鈕,可刪除記錄;選中已添加的記錄,重新修改過濾條件,點擊修改按鈕(Modify),可修改記錄。
3、新建連接
菜單欄 Configuration -> New Link 或工具欄的快捷按鈕。
選中link,右鍵Set UpStream/Set UpStream設置上行下行網絡模擬情況。
4、點擊觸發跟蹤按鈕[可選]
點擊“黃色小腳丫”按鈕,確保按鈕為“點選”狀態。
5、開啟控制
點擊Start開始按鈕,開始模擬網絡。
6、打開WiFi共享工具,手機連接WiFi,操作App進行測試。
7、點擊Stop停止網絡模擬。
六、Network Emulator Toolkit 工具Link功能詳解:
1、Loss
說明:
No Loss:默認,不模擬丟包。
Periodic loss: 模擬周期性的丟包。按填寫數量(設為x個),每x個包,就丟一個包。
Random loss: 模擬隨機丟包,按給定丟包的概率,隨機丟包。(設置1,代表丟包率是100%,設置0.5,代表丟包率是50%)。
Burst loss: 模擬根據給定的可能性進行丟包。
G-E loss: 模擬發生數據包丟失遵循Gilbert-Elliot模型,由兩個狀態組成:好的狀態和壞的狀態。可分別為這2個狀態指定數據包丟失率,同時可設置網絡傳輸在這兩種狀態的概率
2、Error
說明:
真實世界中,當數據包經過網絡傳輸時,包中的一到多個字節(bit)數據可能發生錯誤。
No Error:不模擬傳輸錯誤。
Random error:根據給定的比例,模擬隨機發生傳輸錯誤。
G-E error:發生傳輸錯誤遵循Gilbert-Elliot Model, 模型,由兩個狀態組成:好的狀態和壞的狀態。可分別為這2個狀態指定數據包丟失率,同時可設置網絡傳輸在這兩種狀態的概率
錯誤概率單元(Error Rate Unit):
Bit error: 設置出錯概率為每個字節出錯的概率。
Packet error: 設置出錯概率為每個包出錯的概率。
出錯和丟包的關系
大多數情況下,包出錯導致包丟失,特殊情況下,包中的數據被編碼,協議棧可恢復被損壞的包,經過修正后,包為可接受的包,即包不丟失。此外,除了包出錯會導致包丟失,其它因素也會影響包丟失,如連接失敗(Link failure),緩沖區溢出(buffer overflow),隊列管理和傳輸超時(transmission timeout)等。
3、Latency
說明:延遲來自某應用發送的數據包被另一個應用程序接收到的時間。
Fixed delay: 按給定值,延遲固定時間(單位:毫秒)packets are delayed for a fixed amount of time.
Uniform delay: 按統一分布,延遲一定量的時間(時間控制在最大最小值之間)
Normal delay: 按正態分布.延遲一定量的時間(average:平均值,Devation:偏差)
Linear delay: 延遲一定量的時間(在給定時間周期(Period)內,延遲的時間大小從最小值線性增加到最大值,當達到最大值時,又從最小值開始。
Burst delay: 根據給定概率(Probability),延遲一定量的時間(Latency), 丟包數控制最大值和最小值之間 。
4、BW&Queue
如果不指定帶寬(bandwith),則不修改傳輸速率。
如果不設置隊列,則不對接到的包做任何隊列操作
隊列:
Normal queue:所有接收到的包都被放入一個指定隊列大小的先進先出(First In, First Out)隊列。
Randomly Early Detection (RED) queue:所有接收到的包都被放入一個RED隊列。如果隊列大小小於給定的最低閾值(Minimum Threshold),隊列被評估為不擁擠的,什么都不做;如果隊列大小大於給定最大閾值(Maximum Threshold),則隊列被評估為擁擠的,根據丟包規則,丟棄一些包。
丟包規則:
Drop front: 必要時,丟棄位於隊列頭部的包。.
Drop tail: 必要時,丟棄位於隊列尾部的包。
Drop random:必要時,根據統一分布,隨機丟個包。
Queue Mode:設置隊列大小的單位,以包(Packet Mode)為單位或者以字節為單位Byte Mode
5、BgTraffic
一些網絡數據包交換和模擬的兩端沒有任何關系,被指為背景流(background traffic)。這些背景流會帶來延時效果。
Constant-bit rate (CBR) traffic: 根據給定的固定比例生成背景流(每XX kbps、mbps數據包,xx字節背景流)
Exponential traffic:根據指數On/Off時間分布生成背景流。個人理解,Burst則為生成背景流時間,Idle則不生成背景流時間(時間單位:秒
Pareto traffic: 同上,不過是排列圖分布(Pareto)
6、Recorder
模擬收到的包不是按發送順序排序的。
No Recoder:不模擬
7、Disconnection
模擬周期性斷開連接的行為。
Connection time: 一段時間周期內,link保持連接狀態的持續時間。
Disconnection time: 一段時間周期那日,link保持斷開狀態的持續時間
Disconnection rates: link發生斷開連接的比率。