Android性能測試 | 啟動時間篇

背景介紹

Android用戶也許會經常碰到以下的問題:

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頭的數據報文大小。

下面就介紹兩種流量的測試方法:

1、tcpdump+Wireshark抓包測試法

流量測試最直接的方法就是抓包。在App運行期間,把手機收發的所有報文度抓取下來,再計算收發報文總大小,即App消耗的流量。但是如果我們需要測試某一個App消耗的流量需要禁用其他APP的連網權限。

1)限制其他app的聯網權限,因為有些App的進程是常駐后臺的,即使不運行,也會有網絡報文。可以借助一些手機管家軟件禁用網絡。

2)手機上抓包,下載tcpdump,手機連接電腦,獲得root權限。

3)將?tcpdump?(forAndroid)上傳至Android手機上,在命令提示符窗口中輸入命令:adbpush? ?? /data/local/tcpdump

4)給?tcpdump?增加可執行權限

adb shell

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一欄。

2、使用安卓自身提供的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、幾款工具的比較

1)Charles、Fiddler這樣的軟件只支持短連接,也就是說只有走短連接的接口才生效,長連接的不能使用。

缺點:不支持長連接

2)Atc工具和蘋果自帶的ios developer (開發者選項)的使用方法是一樣的,需要在手機端操作,atc工具需要搭建一系列環境后,手機訪問一個ip地址就能看見控制頁面,然后修改相應的參數即可。

缺點:不宜操作,每次修改網絡場景需要把被測app置于后臺,切換到網絡模擬界面改參數,然后再切回被測app。影響被測app的操作連貫性。

3) clumsy、netlimite等這類軟件易安裝,安裝在電腦端,手機通過共享網絡連接電腦,實時的將系統接收和發出的網絡數據包攔截下來,人工的造成延遲,掉包和篡改操作后再進行發送。

4)購買一些儀器,在全公司范圍搭建一個弱網環境。

缺點:搭建成本高,需要有專門的技術人員支持。

綜合比較以上四類工具,第三類推薦在日常測試過程中使用。下面就拿clumsy舉例,介紹一下環境的搭建及使用。

2、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

至此手機就會搜索到電腦共享的網絡,然后連接即可。

3、clumsy參數說明及使用

界面如下:

clumsy

首先根據用戶選擇的?filter?來攔截指定的網絡數據。在 filter

中可以設定你感興趣的協議(tcp/udp),端口號,是接收還是發出的端口。你也可以通過簡單的邏輯語句來進一步縮小范圍。當 clumsy

被激活時,只有符合這些標準的網絡數據會被進行處理,而你不感興趣的數據仍然會由系統正常傳輸。

當被 filter 的網絡數據包被攔截后,你可以選擇 clumsy 提供的功能來有目的性的調整網絡情況:

1.???延遲(Lag),把數據包緩存一段時間后再發出,這樣能夠模擬網絡延遲的狀況。

2.???掉包(Drop),隨機丟棄一些數據。

3.???節流(Throttle),把一小段時間內的數據攔截下來后再在之后的同一時間一同發出去。

4.???重發(Duplicate),隨機復制一些數據并與其本身一同發送。

5.???亂序(Out of order),打亂數據包發送的順序。

6.???篡改(Tamper),隨機修改小部分的包裹內容。

類似模擬網絡環境的軟件很多,大家可以針對自己的情況選擇,不要找環境搭建過于繁瑣的工具,簡單易用就好。

定位常用軟件

在發現問題后,定位分析時,可以借助以下常用軟件。

1、traceview使用簡介

TraceView 是 Android 平臺特有的數據采集和分析工具,它主要用于分析 Android 中應用程序的 hotspot,可以方便的查看線程的執行情況,某個方法執行時間、調用次數、在總體中的占比等,從而定位性能點。

使用方法:

使用Android studio->Android Device Monitor->進入DDMS->點擊開始按鈕

Case:在微粉首頁上下滑動,滑動過程中等待圖片、視頻加載完成?。

點擊結束按鈕出現結果如下(劃分為上下兩個面板,即Timeline Panel(時間線面板)和Profile Panel(分析面板):

Timeline Panel又可細分為左右兩個部分:

(1)左邊顯示的是測試數據中所采集的線程信息。

(2)右邊所示為時間線,時間線上是每個線程測試時間段內所涉及的函數調用信息。

(3)可以在時間線中移動時間線縱軸。縱軸上邊將顯示當前時間點中某線程正在執行的函數信息。

Profile Panel(分析面板)

按調用次數由高到低排列結果如下圖

按照占用CPU時間從高到低排列結果如下圖:

2、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毫秒的時間去運算

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內容