一個讓你開掛的Android 性能測試方法

Android性能測試,跟pc性能測試同樣分爲客戶端及服務器,但在客戶端上的性能測試分爲2類,對於應用性能測試,包括不少測試項,如啓動時間、內存、CPU、GPU、功耗、流量等。但針對rom版本的性能測試,通常關注功耗。html

1、不一樣版本的性能測試

一、rom版本的性能測試

rom版本通常就關注功耗測試,不過rom版本的功耗測試跟應用的功耗測試會有所差別,固然只是用例設計方面的差別,工具仍然採用安捷倫電源儀進行。linux

二、應用的性能測試

應用的性能測試,對於啓動時間、內存、CPU測試你們通常都使用外部提供的第三方工具來輔助測試,如GT、安測試等、這些工具的原理都是基於調用Android底層的一些api來獲取到測試所用到的值,固然咱們也能夠採用其餘方法,如使用Android自己提供的一套adb便可完成上述測試。算法

對於GPU、功耗、等測試來講,用第三方工具測試獲得的數值通常都不是很準確,這個時候咱們須要引入硬件來進行測試了,GPU能夠採用高速相機來進行測試,功耗可使用萬用表或安捷倫電源儀來進行測試(ps:有硬件動手能力的能夠DIY一個小板進行)。shell

三、Android的性能測試

該本份內容爲今天主要詳述的內容,具體分析見下文。api

2、關於Android的性能測試

一、啓動時間

首先,咱們來講說啓動時間。關於應用的啓動時間的測試,分爲三類:服務器

①首次啓動--應用首次啓動所花費的時間eclipse

②非首次啓動--應用非首次啓動所花費的時間工具

③應用界面切換--應用界面內切換所花費的時間那麼如何來作啓動時間的測試呢,通常咱們分爲2類,一類爲使用軟件來測試,一類爲使用硬件來測試,首先咱們說說軟件測試的方法,可能大部分人都比較通曉使用Android提供的DisplayManager來獲取activity的啓動時間。性能

步驟:學習

經過計算activity最後剩餘的時間之和便可(這裏可使用excel表格自動相加也可使用算法,我就不詳細介紹了)。

除了Display Manager的打印時間方法後,還有經過關注am的啓動時間及Display Manager打印的結束時間,經過二者時間之間想減也能獲得應用的啓動時間,還有能夠經過Power Manager來計算打印時間,在應用啓動的時候,咱們能夠關注Activity Manager-Launch的變化來計算應用的啓動時間,還有能夠經過截圖統計啓動時間,對於自研應用,最效率的莫過於直接在程序中插入打印時間的節點了。

除了軟件測試的方法,還有硬件測試,咱們可使用高速相機或者手機,採用錄像的方法把應用啓動過程給錄製下來,而後經過人工數幀或者程序數幀的方式計算啓動時間。

二、內存消耗

1)內存消耗概念

這個測試節點的設計目標是爲了讓應用不佔用過多的系統資源,且及時釋放內存,保障整個系統的穩定性,固然關於內存測試,在這裏咱們須要引入幾個概念:空閒狀態、中等規格、滿規格。

空閒狀態:指打開應用後,點擊home鍵讓應用後臺運行,此時應用處於的狀態叫作空閒。

中等規格和滿規格:指的是對應用的操做時間的間隔長短不一,中等規格時間較長,滿規格時間較短。

接下來咱們說說在內存測試中,存在不少測試子項,以下清單所示:

①空閒狀態下的應用內存消耗狀況

②中等規格狀態下的應用內存消耗狀況

③滿規格狀態下的應用內存消耗狀況

④應用內存峯值狀況

⑤應用內存泄露狀況

⑥應用是否常駐內存

⑦壓力測試後的內存使用狀況

2)關於Android內存測試方法分類

①使用Android自己提供的ActivityManager.MemoryInfo()方法得到(此方法請百度或google)此類第三方工具備如網易的Emmagee、安測試、騰訊的GT等。

②使用Android提供的對應內容,來獲取。

③使用Android提供的procrank。這裏咱們詳解一下procrank方法(批處理)。

首先,去google獲取procrank、procmem、libpagemap.so三個文件;而後push文件,執行;最後,剩下的就是整理測試數據了。

3)關於內存泄露方面的測試

能夠經過幾個方面來測試:

①經過monkey壓力測試記錄內存使用狀況,分析數據曲線圖及日誌狀況;

②經過eclipse上的mat+heap來分析存在內存泄露方面的節點。

三、CPU方面的測試

1)子項清單

CPU跟內存同樣,存在一些測試子項,以下清單所示:

①空閒狀態下的應用CPU消耗狀況

②中等規格狀態下的應用CPU消耗狀況

③滿規格狀態下的應用CPU消耗狀況

④應用CPU峯值狀況

2)CPU的測試方法

1.使用Android提供的

2.使用top命令

3.第三方軟件

例如:3Dmax、安兔兔等。

3)GPU的測試方法

自從CPU及內存後,GPU這個詞對於PC性能測試者也不陌生了。3Dmax、安兔兔等之類的第三方軟件,讓GPU在移動端性能測試領域都知曉。但對於應用的GPU該如何來測試呢?咱們先引入幾個名詞:過分繪製、幀率、幀方差。

 

過分繪製:是指界面顯示的activity套接了多層而致使;

幀率:是指屏幕刷新率;

幀方差:是指屏幕刷新幀間隔方差。

對於GPU的測試主要包括如下幾個測試子項:界面過分繪製、屏幕滑動幀速率、屏幕滑動平滑度。

①過分測繪

它主要經過人工進行測試。打開開發者選項中的顯示GPU過分繪製來進行測試(PS:只有Android4.2及以上的版本才具有此功能)。驗收的標準爲:

a、不容許出現黑色像素

b、不容許存在4x過分繪製

c、不容許存在面積超過屏幕1/4區域的3x過分繪製(淡紅色區域)

②屏幕滑動幀速率的2種主要方法

→ 軟件測試方法

a、手機端需打開開發者選項中的啓用跟蹤後勾選Graphics和View

b、啓動SDK工具Systrace插件,勾選被測應用,點擊Systrace插件,在彈出的對話框中設置持續抓取時間,在tracetaps下面勾選gfx及view選項,

c、人滑動界面能夠經過節拍來進行滑動或者掃動,幀率數據會保存到默認路徑下,默認名稱爲trace.html

d、將trace.html文件拷貝到linux系統下經過命令進行轉換,生成trace.csv文件:

e、用excel打開文件計算獲得幀率

→ 硬件方法

這裏須要引入高速相機,打開高速相機,開啓攝像模式,錄製人滑動或者掃動被測應用的視頻,再經過人工或者程序數幀的方法對結果進行計算獲得幀率。

③屏幕滑動平滑度測試

方法如同幀率測試,惟一的差別就是最後的結果計算公式的差別。GPU的測試目前業界使用的均爲硬件來進行,軟件測試的數據相較硬件差別較大,對於幀率及幀方差的測試標準而言,需對待不一樣機型設定不一樣的標準。

四、功耗測試

1)功耗測試類別

功耗測試主要從如下幾個方面入手進行測試:

a、測試手機安裝目標APK先後待機功耗無明顯差別。

b、常見使用場景中可以正常進入待機,待機電流在正常範圍內。

c、長時間連續使用應用無異常耗電現象。

2)測試方法

①軟件測試

A、第三方工具:如金山電池管家之類的;

B、自寫工具:這裏通常會使用3種方法:

第一種,基於Android提供的PowerManager.WakeLock來進行;

第二種,比較複雜一點,功耗的計算=CPU消耗+Wakelock消耗+數據傳輸消耗+GPS消耗+Wi-Fi鏈接消耗;

第三種,經過adbshelldumpsysbattery來獲取。

②硬件測試

在這裏,咱們通常使用萬用表或者功耗儀進行測試。使用功耗儀測試的時候,須要製做假電池來進行的,有些不能拔插電池的手機,還須要焊接才能進行功耗測試。

五、流量測試

性能測試的——流量,固然我所指的性能測試是針對大部分應用而言的,可能還有部分應用會關注網速、弱網之類的測試。

1)流量測試,一樣須要引入幾個名詞:中等負荷、高負荷。

中等負荷:應用正常操做

高負荷:應用極限操做

2)測試項包括:

a、應用首次啓動流量提示;

b、應用後臺連續運行2小時的流量值;

c、應用高負荷運行的流量峯值;

d、應用中等負荷運行時的流量均值;

3)流量測試通常都是用軟件來進行的,這裏咱們通常分爲2類:

a、採用市場提供的第三方工具來進行測試,如流量寶之類的;

b、自研工具進行測試。
今年金九銀十我花一個月的時間收錄整理了一套知識體系,若是有想法深刻的系統化的去學習的,能夠點擊傳送門,我會把我收錄整理的資料都送給你們,幫助你們更快的進階。

相關文章
相關標籤/搜索