安卓效能測試(五) 耗流量

2021-10-04 18:17:16 字數 3028 閱讀 4707

流量測試,我們可以在低、中、高三種負荷情況下進行測試:

低負荷:應用切到後台或鎖屏狀態;

中負荷:應用正常操作;

那麼針對三種負荷,我們可以選擇如下場景進行測試:

流量測試的方法一般有3類:

讀取手機的檔案來獲取流量,需要自己寫指令碼

使用tcpdump +wireshark相結合的方法

使用第三方工具(各種工具原理不明,下文會做比較分析)

方法一:

通過tcp_rcv (接收的資料資訊)和 tcp_snd(傳送的資料資訊)來獲取流量; 

我們還可以通過一下命令來獲取uid:

2 然後進入資料夾就能看到tcp_rcv和tcp_snd檔案了

注:只針對tcp協議網路的消耗統計,且在某些機型上不存在該路徑。

通過 /proc/net/xt_qtaguid/stats 來獲取上行和下行的流量

2 然後通過以下命令來取得資料。有時候會取得幾行資料,是因為乙個uid可能對應多個程序,所以有幾行,就求和幾行。流量是累加的。

其中第6和8列為 rx_bytes(接收資料)和tx_bytes(傳輸資料)包含tcp,udp等所有網路流量傳輸的統計。

每列的含義:

idx iface acct_tag_hex uid_tag_int cnt_set rx_bytes rx_packets tx_bytes tx_packets rx_tcp_bytes rx_tcp_packets rx_udp_bytes rx_udp_packets rx_other_bytes rx_other_packets tx_tcp_bytes tx_tcp_packets tx_udp_bytes tx_udp_packets tx_other_bytes tx_other_packets

方法三:(網上也有此方法的介紹,但經測試,非常不准)

通過 /proc//net/dev

2 然後通過以下命令來獲取資料

然後取第一列和第九列的資料。

那麼,這三種方法哪個更準確些呢?

我們執行相同的用例,分別對比3個方法和市面上的第三方工具採集的資料,看下準確性。

在測試中,我們發現方法一(通過tcp_rcv 和 tcp_rcv來計算流量並不適合所有的機型,因為有的手機沒有這兩個檔案)

1 在tcp_rcv 和 tcp_rcv存在的情況下,執行完用例,各項資料分別為:

方法一: 5551kb

方法二: 6482.31kb

方法三:  6528.29kb

安測試: 5550.00kb

2 在tcp_rcv 和 tcp_snd不存在的情況下,執行完用例,各項資料分別為:

方法二: 4336.93kb

方法三:  4457.34kb

安測試: 4336.00kb

由此可以看出安測試優先以tcp_rcv 和 tcp_snd的值來計算流量,如果這兩個檔案不存在,那麼取 /proc/net/xt_qtaguid/stats 中的值。

那麼其他第三方工具是怎麼做的呢?我們先看一下網易的emmagee,因為是開源的,所以直接看原始碼就可以了(

但網易似乎發現了這個問題(上說,準備在後續的版本使用方法二來實現:

**片段如下:

public long gettrafficinfo() 

}} catch (filenotfoundexception e)  catch (numberformatexception e)  catch (ioexception e)  finally  catch (ioexception e) 

}log.d(log_tag, "traffic===" + traffic);

return traffic;

}

在android的原始碼中,發現在 4.3.1 及之後的版本,android不在統計傳輸層的流量,而統計網路層測流量,流量的統計都放到了/proc/net/xt_qtaguid/stats這個檔案下,流量需要通過讀取這個檔案獲取(

因此,方法二的相容性更高,而且準確性更高(包含tcp,udp等所有網路流量傳輸的統計)。

注:關於uid:

安卓效能測試(六) 溫度

獲取手機溫度的命令如下 temperature 的單位是0.1度,所以當前的手機溫度是44.4度 其中每行的定義如下 ac powered false 交流電供電 usb powered true usb供電 wireless powered false 無線供電 status 2 狀態 int型別...

效能測試 流量測試

原文資料 流量篇最近在研究ios 的效能測試,時間太緊沒來得及發帖,加通宵擠出時間給大家分享一點東西,希望對大家有所幫助!android 2.2之前 對於android2.2 的流量 版本以前的系統的流量資訊都存放在 proc net dev 或者 proc self net dev 檔案下,讀取檔...

安卓 Recycleview效能優化

原帖 link.更改tablayout選中的背景色 原理是利用selector 第一步在drawable資料夾下建立檔案 tab background.xml android drawable drawable tab background selected android state select...