《爆肝整理》保姆級系列教學-玩轉Charles抓包神器教學(11)-Charles如何模擬弱網環境

2023-03-15 12:01:15

1.前言

張三:「我寫的軟體好奇怪啊,在網路好的時候一點問題也沒有,但是訊號差的時候明顯示卡頓,看來我只能一直蹲在衛生間、電梯或者地鐵(訊號差)調bug了」。

Charles:「哈哈哈,傻孩子,我就自帶弱網工具呀,在Proxy-->Throttle Setting下,使用前要記得勾選Enable Throttling 。」

Charles眨眨眼:「如果你想指定網站,可以勾選Only forselected hosts,然後在對話方塊的下半部分設定增加指定的hosts項。」

2.簡介

線上上環境通常有些因為網速慢導致的bug,在本機無法重現,那時候就很抓瞎,如果嫌遠端麻煩,推薦使用throttle。支援對Bandwidth(頻寬)、Utilistation(利用百分比)、Round-trip(往返延遲)、MTU(位元組)進行設定,並且支援3G/4G或者其他網路模式。

如果我們只想模擬指定網站的慢速網路,Charles就可以幫你排憂解難,這就今天重點分享和介紹的。

APP的應用場景根據人的使用情況密切相關,所處的網路環境多變,APP的弱網測試變得很重要;所以在我們做APP測試的時候需要對不同的網路格式、無網的情況進行測試,模擬多變的APP應用場景。在做移動開發的時候,我們常常需要模擬慢速網路或者高延遲的網路,以測試在行動網路下,應用的表現是否正常(如模擬應用在網路較慢時的響應時間等情景)。Charles 對此需求提供了很好的支援。

3.網路測試用例

我們首先來簡單的瞭解一下,網路測試用例,如下圖所示:

4.弱網測試關注點

根據網路測試用例,我們來看看我們需要重點關注的幾點如下:

APP反應慢的時候是否有友好的提示資訊

APP弱網情況下,提交資料不會產生重複資料

APP 不會出現Crash、ANR 的情況

好了通過前邊的理論知識,我們大致知道網路測試是怎麼回事了,下面宏哥講解一下,如何用Charles模擬弱網環境。

5.Charles設定弱網環境

1.開啟Charles,點選【Proxy】-->【Throttle Settings】 。如下圖所示:

2.勾選【 Enable Throttling】,開啟了限速模式。如下圖所示:

Throttle Setting設定引數欄位說明:

Only for selected hosts :表示僅選擇的域名做弱網限制,如上圖所示,只限制localhost:9999域名的請求,其他的請求不做限制;若不勾選,那麼對所有的請求都進行限制;

Throttle preset :可以選擇要模擬的網速,是Charles預設的網路設定 ,下拉選項由上到下,網速越來越好。

  ADSL:屬於DSL技術的一種,全稱Asymmetric Digital Subscriber Line( 非對稱數位使用者線路),亦可稱作非對稱數位使用者環路。是一種新的資料傳輸方式。

  VDSL:是一種非對稱DSL技術,全稱Very High Speed Digital Subscriber Line (超高速數位使用者線路)。和ADSL技術一樣,VDSL也使用雙絞線進行語音和資料的傳輸。VDSL是利用現有電話線上安裝VDSL,只需在使用者側安裝一臺VDSL modem。最重要的是,無須為寬頻上網而重新佈設或變動線路。

  ISDN:綜合業務數位網(Integrated Services Digital Network,ISDN)是一個數位電話網路國際標準,是一種典型的電路交換網路系統。在ITU的建議中,ISDN是一種在數位電話網IDN的基礎上發展起來的通訊網路,ISDN能夠支援多種業務,包括電話業務和非電話業務。

Bandwidth —— 頻寬,即上行、下行資料傳輸速度

utilisation —— 頻寬利用率,利用率是總頻寬的百分比,大部分modern是100%。

round-trip latency ——請求往返延遲,單位是ms。往返延遲測量使用者端和遠端伺服器之間第一次往返通訊的毫秒延遲。它用於使用者端向伺服器 和 伺服器向用戶端的每一次請求 。

MTU —— 最大傳輸單元,即TCP包的最大size,可以更真實模擬TCP層,每次傳輸的分包情況。

Releability —— 指連線的可靠性,常說的丟包。這裡指的是10kb的可靠率。用於模擬網路不穩定。
可靠性是衡量連線完全失敗的可能性。這是非常有用的模擬不可靠的網路條件。
可靠性是指定為成功發射10kib訊息的可能性。如何值為50%,意味著所有10kib傳輸一半會成功。較大的郵件或更小的訊息或多或少都有可能失敗,所以20kib傳輸將只有25%(1/2 * 1/2)的成功率和5kib傳輸成功率約70% (0.5開平方)。

Stability —— 連線穩定性常說的網路抖動。也會影響頻寬可用性。用於模擬行動網路,行動網路連線一般不可靠。
穩定性是衡量一個連線的可能性是不穩定的,因此降低了質量。
這是非常有用的模擬網路,如行動網路,定期連線質量差。如果連線不穩定,則連線的質量會在不穩定的質量範圍內隨機下降。此質量值,然後應用作為另一個縮放因子的可用頻寬。

unstable quality range(不穩定質量範圍)
此處設定主要針對於Stability中設定中的範圍。例如stability穩定性設定了70%,那不穩定性則可以設定20~30之間。

3.設定【Thottle preset】,選擇不同的網路環境。如下圖所示:

4.如果要對個別域名進行限速,則勾選【Only for selecte hosts】, 然後新增相應的域名即可。

5.最後點選【OK】就行了。

6.設定好後,此時,Charles上的小烏龜圖示被點亮了,表示弱網模擬開啟,可以使用弱網進行測試了。使用完畢再次點選小烏龜即可解除弱網。如下圖所示:

6.自定義網路預設

1.設定好各項數值,點選 Add Preset ,如下圖所示:

2.填寫 Preset 的名稱,點選OK ,即可儲存成功,之後就可以在Throttle preset 的下拉選項中找到自定義的網路設定,如下圖所示:

3.可以將自己常用的網路設定進行自定義儲存,不用每次都重新設定。如下圖所示:

7.弱網測試實踐

網際網路的產品,規則就是請求響應時間應小於3秒,認為是優秀;如果是3-5秒,認為是可以接受的。介面測試的請求響應時間其實就是 一個HTTP完整的請求時間之和。

1.未開啟弱環境模擬一個請求,先看下正常的網路請求時間,Duration是請求響應時間是2ms,如下圖所示:

2.開啟弱網環境-設定56kbps Modem 網路環境,檢視響應時間,如下圖所示,響應時間為13ms,介面明顯慢了很多,如下圖所示:

8.小結

當前APP網路環境比較複雜,網路制式有2G、3G、4G、5G網路,還有越來越多的公共Wi-Fi。不同的網路環境和網路制式的差異,都會對使用者使用app造成一定影響。另外,當前app使用場景多變,如進地鐵、上公交、進電梯等,使得弱網測試顯得尤為重要。如果app沒有對各種網路異常進行相容處理,那麼使用者可能在日常生活中遇到APP閃退、ANR(Android Not Response)、資料丟失等問題。因此,app網路測試,特別是弱網測試尤為重要。本文梳理了網路測試要點(主要針對APP)和使用Charles做弱網測試的方法,讓大家對網路測試有一個初步的認識。好了,今天時間也不早了,宏哥就講解和分享到這裡,感謝您耐心的閱讀,希望對您有所幫助。