工具網絡
正文socket
其實想知道一款應用費不費流量,大部分Android4.x版本系統已經能夠簡單的查看了:tcp
關注流量比較粗的話,看一下上面這裏也就夠了,但從測試的需求看,這裏只能觀察到宏觀的流量狀況,到1天的流量消耗就無法再細化了,若是想知道具體一個業務操做或一段時間內的流量消耗呢?若是想知道應用一次啓動的流量消耗呢?這時就該使用前面介紹的工具了。工具
比前面稍微深刻一些,咱們可能須要知道一個業務操做過程內,消耗的流量,及發出請求的流量、收到響應結果的流量各有多少,而且流量的消耗曲線是怎樣一個走勢。這時就該使用GT,關於GT的基本使用和爲何用GT,GT網站有詳細的說明,這裏只介紹和流量相關的部分。GT提供了一種簡單的測試方式,也提供了一個嚴謹但麻煩的測試方式。測試
1. 先將應用運行起來,而後啓動GT並在GT上選中被測應用及被測項NET(流量)。優化
2. 業務操做前,啓動數據採集,將會記錄選中應用的流量的變化,爲了方便統計,能夠先把業務操做前發生的流量記錄歸零。網站
3. 退到應用界面,執行需測試的業務操做。spa
4. 業務操做後,回到GT界面,中止流量數據的採集,查看本次業務操做流量的變化。3d
到這裏,從前面一張圖咱們已經能夠知道一個業務操做過程當中消耗的流量,包括髮出請求的流量、收到響應結果的流量、流量消耗曲線是怎樣一個走勢了。調試
5. 咱們能夠保存本次測試結果到文件,以備後面更深刻的分析。
來圍觀一下這個文件:
用強大的Excel把GT應用裏顯示的趨勢圖還原出來不是難事。
若是隻是純粹測測流量,上面的方式也足夠了,那咱們爲何須要麻煩而嚴謹的方式呢?這裏有兩個緣由,一個是僅僅知道流量的大小和趨勢,還不足以對後續的流量優化進行明確的指導,即知道流量可能有點多,但不知道該如何着手優化。另外一個是緣由是彌補上面方式的一個不足:有的應用,使用了本地socket和手機裏其餘進程產生交互,有時Android系統會把這種手機內部的socket傳輸的數據量也計算到應用消耗的流量裏(好比常見的視頻應用很多都有這個問題),此時上面的方式就顯得不夠準確了,要得到真是網卡上發生的流量,就須要抓包這種終極方法了。注意掌握這種方法的前提是您得先掌握基礎的TCP和HTTP網絡知識。
手機抓包是針對手機的網卡,因此這種方式沒法單獨抓一個應用的包,須要後續將歸屬於應用的包分析出來,而爲了後續分析減小工做量,測試時候應儘可能把其餘能消耗流量的應用都關了。Android手機的抓包是Wireshark提供的實現,GT上面作了封裝,使手機能夠沒必要連着PC便可抓包,方便在室外測試的場景。
1. 先從GT啓動抓包。
2. 以後仍是執行測試的業務操做。
3. 被測業務操做結束後,點擊stop,即中止抓包,並把抓包文件保存在對應的目錄中。
將抓到包文件導入到PC,用Wireshark便可分析抓包文件。關於Wireshark的使用,和PC上的使用沒有區別,請你們自行在網上搜索,這裏僅對使用Wireshark的要點提示下:
(1)咱們最早須要知道咱們的應用發出了哪些請求,對應了上行流量,能夠在Wireshark左上角【過濾】框輸入"http"或"tcp"(若是確認過被測應用都是http請求,就只須要按http過濾),確認測試場景GET和POST的請求類型和個數(過濾結果可按【Info】分類更方便統計)。
(2)在具體請求上能夠右鍵「follow tcp stream」,等同於過濾條件tcp.stream eq xx,這樣能夠過濾出和它在同一個TCP流的消息。
(3)過濾條件出來後再點擊【統計】->【概要】,對應Bytes欄【顯示】列的數據即爲流量。
(4)經過對包的過濾分析,咱們天然就能夠獲得流量的大小,產生流量的類型和緣由,請求的頻率,這樣就可以對後續的流量優化進行指導了。
(5)更謹慎的,抓包和GT採集流量數據能夠相互對照,避免分析時有所遺漏。