坑:在項目后期對短視頻APP某版本的做流量測試時發現流量消耗特別大。
一、Android App流量測試方法
1、讀取Android系統上的兩個文件內容
proc/uid_stat/{UID}/tcp_snd
proc/uid_stat/{UID}/tcp_rcv
參數釋義:
{UID}是每個Android App在安裝時分配的唯一編號,用於識別該App。獲取UID的方法有:
1) 方法一
①獲取當前App進程的PID
ps | grep 包名
②通過PID查找該App對應的UID
cat /proc/{PID}/status
2)方法二
cat /data/system/packages.list | grep 包名,注:需要root權限
tcp_snd文件中的數據表示發送的數據累計大小,單位是字節(Byte);
tcp_rcv文件中的數據表示接收的數據累計大小,單位是字節(Byte)。
舉例說明如何獲取這個數據:
1)get App UID
2)獲取流量數據
2、Fiddler代理工具
1)在手機上設置代理
2)通過Fiddler代理工具可以看到手機上發出的請求和收到的響應,其中包含了每個請求和響應的流量大小
3、Wireshark工具分析
1)手機上抓包,具體操作詳見《Android移動網絡如何抓取數據包》
2)使用Wireshark工具分析,下圖是查看單個請求和響應的數據量
4、自動化流量統計之哆啦A夢
1)打開哆啦A夢→性能監控→開始監控(若沒有設置被測App,則可以通過哆啦A夢中的應用管理進行設置);
2)設計動作對App進行相應的操作;
3)操作完成后停止監控,文件保存至/sdcard/DoraemonBox/PerformanceTest下。
哆啦A夢之流量監控原理是直接讀取Android系統上的兩個文件內容,如圖
二、流量測試注意事項
作為測試人員,越早發現問題越好,所以在產品需求、開發實現上就應該關注流量問題,以下是常見的節省流量方法。
產品需求上:
1)針對移動網絡給出相應的提示
比如在搜狗輸入法泛靈犀最新需求中,點擊詳情時會判斷當前用戶的網絡類型,若為移動網絡,則給出提示;點擊詳情跳轉后,當前頁面中的內容是視頻,若為移動網絡,點擊播放按鈕不直接播放,而是先給出提示;
2)不同的網絡類型給出相應的策略
比如搜狗輸入法熱詞接口,wifi下一天下發一次,移動網絡下7天下發一次,該接口包含統計數據的上傳、熱詞和擴展詞的下發、數據流通知等。通過判斷當前的網絡狀況,控制數據訪問的頻率。
開發實現上:
1)數據壓縮
減少傳輸的數據量是一個最基本的節省流量的方法,比如在搜狗輸入法emoji后下載中,下發給用戶的emoji就是經過壓縮后的。
2)數據緩存
比如在搜狗輸入法中觸發泛靈犀圖片后 ,會將這些圖片暫時緩存至sdcard的某個目錄下,等以后再使用相同關鍵詞觸發泛靈犀圖片時,就不再去拉取相關的數據,直接使用緩存中的數據。
3)不同數據格式的采用
作為接口數據返回,JSON格式通常比XML格式要小,在大數據傳輸上,protobuf格式比JSON格式要小。