【轉載】原文地址:http://www.51testing.com/html/93/n-3724593.htmlphp
背景介紹
1)應用後臺開着,
手機很快沒電了——應用耗電大;
2)首次/非首次啓動應用,進入應用特別慢——應用啓動慢;
3)應用使用過程當中,愈來愈卡——CPU能力不足/內存泄露;
4)應用頁面卡頓——幀率較低、頁面卡頓。
所以,對開發的Android應用,必須對其進行
性能測試,否則將會直接影響用戶體驗。
Android應用性能測試一般包括:啓動時間、內存、CPU、耗電量、流量、流暢度等。咱們將在這個月陸續爲你們簡單介紹一下每一個測試點的常見測試方法及簡單的定位思路,僅供參考。以前兩週內,咱們爲你們介紹了啓動時間、內存&CPU、內存泄漏&卡頓"測試方法,本期咱們介紹Android性能測試白皮書的最後一章——流量、電量、弱網環境的測試方法。
耗電
耗電操做主要包含CPU、WIFI、流量、傳感器(GPS NFC),以及應用屏幕wakelock等操做。咱們更多的是關注應用自己是否劫持了系統的屏幕wakelock操做,沒有及時釋放屏幕wakelock,致使耗電。
電量測試監控方法能夠簡單的從設置->電池->使用狀況中查看,手機中的每一個部件運行時對應的能耗值都放在power_profile.xml文件中,而系統的設置->電池->使用狀況中,統計的能耗使用狀況也是以power_profile.xml的value做爲基礎參數的。經過命令監控
app個部件的使用時長,而後結合設備耗電的基礎參數進行加權計算,便可獲得app使用的耗電量。至於更詳細的耗電量測試,能夠專門把耗電這一性能指標拿出來,專項測試。
流量
針對流量測試,首先要搞明白什麼是流量?咱們的收集經過運營商的網絡訪問Internet,運營商替咱們的手機轉發數據報文,數據報文的總大小(字節數)即流量,這裏的數據報文包含手機上下行的報文。因爲數據報文采用IP協議傳輸,運營商計算的流量通常是包含IP頭的數據報文大小。
下面就介紹兩種流量的測試方法:
一、tcpdump+Wireshark抓包測試法
流量測試最直接的方法就是抓包。在App運行期間,把手機收發的全部報文度抓取下來,再計算收發報文總大小,即App消耗的流量。可是若是咱們須要測試某一個App消耗的流量須要禁用其餘APP的連網權限。
1)限制其餘app的聯網權限,由於有些App的進程是常駐後臺的,即便不運行,也會有網絡報文。能夠藉助一些手機管家軟件禁用網絡。
2)手機上抓包,下載tcpdump,手機鏈接電腦,得到root權限。
3)將tcpdump(forAndroid)上傳至Android手機上,在命令提示符窗口中輸入命令:adbpush /data/local/tcpdump
4)給tcpdump增長可執行權限
su
chmod 6755 /data/local/tcpdump
5)啓動抓包,使用命令/data/local/tcpdump-v -i any -s 0 -w /sdcard/zhangyu.pcap
Got後面的數字表示當前抓到的包的數量。若是有變化,表示有網絡流量。
6)導出抓包結果adb pull /sdcard/zhangyu.pcap
7)用Wireshark打開剛纔的抓包結果,點擊StatisticsàSummary,流量的數值爲Bytes一行的Displayed一欄。
二、使用安卓自身提供的TCP收發長度統計功能
通常APP和後臺服務器之間的通訊都是基於TCP的,因此咱們能夠利用此統計來測試咱們APP的流量,並且安卓提供的該統計功能是按照APP緯度來統計的,不須要禁止其餘app的連網權限。
操做步驟以下:
1)使用ps命令查看所測app的uid,例如貼吧的uid爲10000+191=10191
adbshell
su
ps |grep com.baidu.tieba
2)進入/proc/uid_stat/1191目錄,cat獲取當前tcp_snd和tcp_tcv的初始值
3)此時能夠開始測試了,測試完成後再次獲取tcp_snd和tcp_tcv的值
4)所測時間內的流量計算
發送流量:tcp_snd_new-tcp_snd_old=2032150-893233=1128917bytes
接收流量:tcp_rcv_new-tcp_rcv_old=18648825-1350829=17297996bytes
弱網環境
在進行手機應用測試時,常常須要模擬網絡不穩定的狀態下對測試執行的影響。調研了幾款工具,能夠經過手動設置數據丟包率,以及網絡時延等參數,模擬弱網環境。如Charles、clumsy、netlimite、atc等。
一、幾款工具的比較
1)Charles、Fiddler這樣的軟件只支持短鏈接,也就是說只有走短鏈接的接口才生效,長鏈接的不能使用。
缺點:不支持長鏈接
2)Atc工具和
蘋果自帶的ios developer (開發者選項)的使用方法是同樣的,須要在手機端操做,atc工具須要搭建一系列環境後,手機訪問一個ip地址就能看見控制頁面,而後修改相應的參數便可。
缺點:不宜操做,每次修改網絡場景須要把被測app置於後臺,切換到網絡模擬界面改參數,而後再切回被測app。影響被測app的操做連貫性。
3) clumsy、netlimite等這類軟件易安裝,安裝在電腦端,手機經過共享網絡鏈接電腦,實時的將系統接收和發出的網絡數據包攔截下來,人工的形成延遲,掉包和篡改操做後再進行發送。
4)購買一些儀器,在全公司範圍搭建一個弱網環境。
綜合比較以上四類工具,第三類推薦在平常測試過程當中使用。下面就拿clumsy舉例,介紹一下環境的搭建及使用。
二、clumsy環境搭建及使用
1)環境準備
windows筆記本,clumsy安裝文件,共享網絡
2)安裝clumsy
clumsy免安裝程序,下載完成後,直接點擊exe可執行文件便可。
下載地址:https://pan.baidu.com/s/1pLAjm2J密碼: mk8i
3)建立共享網絡
a、電腦鏈接網線,打開網絡和共享中心
b、點擊本地鏈接---屬性---共享---勾選第一個,並選擇一個家庭網絡鏈接(此時本地鏈接會顯示共享的字樣)
c、cmd--輸入命令(啓動cmd,最好用管理者身份啓動)
netshwlan set hostednetwork mode=allow ssid=zhangyu1 key=123456789(ssid和key對應共享網絡的名稱和密碼,key不能低於8位)
netshwlan start hostednetwork
至此手機就會搜索到電腦共享的網絡,而後鏈接便可。
三、clumsy參數說明及使用
界面以下:
clumsy
首先根據用戶選擇的?filter?來攔截指定的網絡數據。在 filter
中能夠設定你感興趣的協議(tcp/udp),端口號,是接收仍是發出的端口。你也能夠經過簡單的邏輯語句來進一步縮小範圍。當 clumsy
被激活時,只有符合這些標準的網絡數據會被進行處理,而你不感興趣的數據仍然會由系統正常傳輸。
當被 filter 的網絡數據包被攔截後,你能夠選擇 clumsy 提供的功能來有目的性的調整網絡狀況:
1.延遲(Lag),把數據包緩存一段時間後再發出,這樣可以模擬網絡延遲的情況。
2.掉包(Drop),隨機丟棄一些數據。
3.節流(Throttle),把一小段時間內的數據攔截下來後再在以後的同一時間一同發出去。
4.重發(Duplicate),隨機複製一些數據並與其自己一同發送。
5.亂序(Out of order),打亂數據包發送的順序。
6.篡改(Tamper),隨機修改小部分的包裹內容。
相似模擬網絡環境的軟件不少,你們能夠針對本身的狀況選擇,不要找環境搭建過於繁瑣的工具,簡單易用就好。
定位經常使用軟件
在發現問題後,定位分析時,能夠藉助如下經常使用軟件。
一、traceview使用簡介
TraceView 是 Android 平臺特有的數據採集和分析工具,它主要用於分析 Android 中應用程序的 hotspot,能夠方便的查看線程的執行狀況,某個方法執行時間、調用次數、在整體中的佔比等,從而定位性能點。
使用方法:
使用Android studio->Android Device Monitor->進入DDMS->點擊開始按鈕
Case:在微粉首頁上下滑動,滑動過程當中等待圖片、視頻加載完成?。
點擊結束按鈕出現結果以下(劃分爲上下兩個面板,即Timeline Panel(時間線面板)和Profile Panel(分析面板):
Timeline Panel又可細分爲左右兩個部分:
(1)左邊顯示的是測試數據中所採集的線程信息。
(2)右邊所示爲時間線,時間線上是每一個線程測試時間段內所涉及的函數調用信息。
(3)能夠在時間線中移動時間線縱軸。縱軸上邊將顯示當前時間點中某線程正在執行的函數信息。
Profile Panel(分析面板)
按調用次數由高到低排列結果以下圖
按照佔用CPU時間從高到低排列結果以下圖:
二、Systrace使用簡介
Systrace是Android4.1中新增的性能數據採樣和分析工具。它可幫助開發者收集Android關鍵子系統(如surfaceflinger、WindowManagerService等Framework部分關鍵模塊、服務,View系統等)的運行信息,從而幫助開發者更直觀的分析系統瓶頸,改進性能。Systrace的功能包括跟蹤系統的I/O操做、內核工做隊列、CPU負載以及Android各個子系統的運行情況等。
使用方法:
使用Android studio->Android Device Monitor
進入DDMS->打開微粉APP->點擊開始systrace
設置參數->點擊OK
case:在微粉首頁滑動列表,滑動過程當中需等待圖片視頻加載完成
在chrome地址欄中輸入chrome://tracing 點擊load打開trace.html文件
經過工具抓取的數據用瀏覽器打開後顯示以下:
查看Frames這一行,能夠看到這裏展現了被繪製出來的每一幀,而且用綠、黃、紅三顏色來區分它們在繪製時的性能
選一個紅色幀在底部給出Alter信息:
展開「Inflation during ListViewrecycling」這條警告(警告部分的總耗時155毫秒,遠高於了咱們對保障60fps所需的16毫秒繪製時間):
選擇這一幀中最長的一塊,對其進行進一步分析整個區塊耗時98毫秒,而在這之中CPU只消耗了65毫秒的時間去運算。