Android測試流量的幾種方法

1. tcpdump + wireshark

1.1 tcpdump抓包

注意:Android設備使用tcpdump須要root權限android

tcpdump是一個在Unix-like系統中通用的網絡抓包工具,固然,這個工具在Android系統中也是可使用的。shell

先去下載Android系統使用的tcpdump工具服務器

下載地址:http://www.androidtcpdump.com/網絡

下載後,push到手機設備上,如:tcp

abd push tcpdump /data/local/tmp/tcpdump

tcpdump命令支持許多參數,常見的有:工具

-i指定網卡(interface),any表示不限網卡;
-c指定接收的packets數量,接收完成後自動中止抓包;
-w指定輸出文件,輸出文件的格式爲pcap;
-s(--snapshot-length)指定在每一個packet中最多截取的字節數,設置爲0時表示截取上限取默認值262144;
-v/-vv/-vvv,指定輸出的詳細程度,針對流量測試,咱們不須要很是詳盡的輸出數據,取-v便可。

看完上面的參數,咱們在terminal執行如下命令:測試

adb shell su -c /data/local/tmp/tcpdump -v -i any -s 0 -w /sdcard/dedao.pcap

tcpdump開始採集後,在手機執行測試場景,執行完畢後,control + c 結束採集。ui

而後運行下面命令把.pcap文件down下來:spa

adb pull /sdcard/dedao.pcap ./

1.2 wireshark分析

打開已安裝的wireshark,文件——打開本地的dedao.pcap。調試

 

 能夠看到列表內有很是多的通信信息,不過能夠用wireshark的篩選功能只顯示咱們想要的數據。

在篩選器中輸入http.host contains "dedao.com",回車,便可符合條件的數據。

接下來查看流量大小。

計算總流量

右鍵一個請求,選擇追蹤流—— TCP流,會彈出一個「追蹤TCP流」的窗體。

紅框圈中的位置,會有三個選項,依次是總流量,總上行流量,總下載流量。

因此這裏能夠看到本次抓包的所有流量,(前提是隻有一個服務器,若是多個服務器,相加計算)

計算單個請求的流量

在選擇追蹤流—— TCP流後,列表已經自動改變查詢條件,顯示是你選擇請求所在tcp流的全部數據。

選擇統計——端點

勾選顯示過濾器的限制,切換到TCP和UDP標籤,分別查看流量大小,相加

2. 騰訊GT

下載GT for Android

很簡單,不詳細描述了。

2.1 選擇被調試的應用,並勾選Net指標。

2.2 在參數tab,拖動NET參數到已關注,並勾選。

2.3 啓動被測App,操做前,點擊GT的懸浮窗的開始錄製按鈕。開始操做測試場景。

2.4 操做完後,暫停GT的懸浮窗,回到GT參數頁面,保存數據到手機。

2.5 pull數據文件到本地,打開.csv文件。最下面的一行即爲這次的總流量。

 

3. 查看手機系統文件

先拿到被測App的UID,以下,10084就是com.UCMobile.trunk應用的UID

root@hammerhead:/ # cat /data/system/packages.list | grep com.UCMobile.trunk                   
com.UCMobile.trunk 10084 0 /data/data/com.UCMobile.trunk default 3003,1028,1015

而後,具體獲取流量有兩個位置。

第一種:

流量數據分爲接收流量(tcp_rcv)和發送流量(tcp_snd)兩部分,這兩個狀態數值咱們能夠經過讀取/proc/uid_stat/<UID>目錄下的兩個文件獲得。

shell@hammerhead:/ $ cat /proc/uid_stat/10084/tcp_rcv                          
3446837
shell@hammerhead:/ $ cat /proc/uid_stat/10084/tcp_snd                          
134366

單位bytes,這個數據是累加的,除非卸載應用纔會被刪除。不然會一直增長。

因此測試前記錄下數字,測試完後減去記錄的數字就是流量大小。

還有,這種方式只能獲取TCP協議的流量,UDP的沒有計算。。

 

第二種:

adb shell cat /proc/net/xt_qtaguid/stats | grep 10084
48 wlan0 0x0 10127 0 316574 2279 472562 3651 316574 2279 0 0 0 0 472562 3651 0 0 0 0
49 wlan0 0x0 10127 1 6172960 4936 415951 5215 6172960 4936 0 0 0 0 415951 5215 0 0 0 0
50 wlan0 0x3792d5b400000000 10127 0 29678 208 32168 296 29678 208 0 0 0 0 32168 296 0 0 0 0
51 wlan0 0x3792d5b400000000 10127 1 226170 222 25745 265 226170 222 0 0 0 0 25745 265 0 0 0 0
56 wlan0 0xfa1dcc4b00000000 10127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
57 wlan0 0xfa1dcc4b00000000 10127 1 3014885 2127 139857 2117 3014885 2127 0 0 0 0 139857 2117 0 0 0 0

其中第6和8列爲 rx_bytes(接收數據)和tx_bytes(傳輸數據)包含tcp,udp等全部網絡流量傳輸的統計。

可是個人手機這種方式不行,,無論怎麼操做被測應用,一直不會變化。。

相關文章
相關標籤/搜索