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

宏哥發表於2023-03-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做弱網測試的方法,讓大家對網路測試有一個初步的認識。好了,今天時間也不早了,宏哥就講解和分享到這裡,感謝您耐心的閱讀,希望對您有所幫助。

相關文章