(轉(zhuǎn)載)Android性能測試初探

一、Android 性能測試初探(一)

Android 性能測試,跟 pc 性能測試一樣分為客戶端及服務(wù)器,但在客戶端上的性能測試分為 2 類:

一類為 rom 版本的性能測試
一類為應(yīng)用的性能測試
對于應(yīng)用性能測試,包括很多測試項,如啟動時間、內(nèi)存、CPU、GPU、功耗、流量等。 但針對 rom 版本的性能測試,一般關(guān)注功耗。

先說說應(yīng)用的性能測試,對于啟動時間、內(nèi)存、cpu 測試大家一般都使用外部提供的第三方工具來輔助測試,如GT、安測試等、這些工具的原理都是基于調(diào)用 android 底層的一些 api 來獲取到測試所用到的值,當然我們也可以采用其他方法,如使用 android 本身提供的一套 adb 即可完成上述測試。

對于 GPU、功耗、等測試來說,用第三方工具測試得到的數(shù)值一般都不是很準確,這個時候我們需要引入硬件來進行測試了,GPU 可以采用高速相機來進行測試,功耗可以使用萬用表或安捷倫電源儀來進行測試(ps:有硬件動手能力的可以DIY一個小板進行)

再說說 rom 版本的性能測試,rom 版本一般就關(guān)注功耗測試,不過 rom 版本的功耗測試跟應(yīng)用的功耗測試會有所差異,當然只是用例設(shè)計方面的差異,工具仍然采用安捷倫電源儀進行

看到這里,大家應(yīng)該對于移動客戶端方面的性能測試有了一個大概的印象了,后續(xù)我會繼續(xù)探討如何自己創(chuàng)建工具進行性能測試,預(yù)知下文,請聽下文分解

二、Android 性能測試初探(二)

書接前文 Android 性能測試初探(一)。上回大體介紹了下在 android 端的性能測試項,現(xiàn)在我們就細節(jié)測試項做一些闡述(包括如何自己 DIY 測試)。

首先我們來說說啟動時間。關(guān)于應(yīng)用的啟動時間的測試,分為三類:

  1. 首次啟動 --應(yīng)用首次啟動所花費的時間
  2. 非首次啟動 --應(yīng)用非首次啟動所花費的時間
  3. 應(yīng)用界面切換--應(yīng)用界面內(nèi)切換所花費的時間

那么如何來做啟動時間的測試呢,一般我們分為2類,一類為使用軟件來測試,一類為使用硬件來測試,首先我們說說軟件測試的方法,可能大部分人都比較通曉使用 android 提供的 DisplayManager 來獲取 activity 的啟動時間吧,在這里我簡單說下如何通過批處理來 DIY

通過日志過濾關(guān)鍵字 Displayed 來過濾所有 activity 所打印的,記錄日志通過 adb logcat>/address/logcat.txt 然后使用 find “Displayed” /address/logcat.txt>/newaddress/fl.txt
通過 activity 名來過濾獲取所測應(yīng)用 find “ActivityName” /newaddress/fl.txt>/newaddress/last.txt
通過計算 activity 最后剩余的時間之和即可(這里可以使用 excel 表格自動相加也可以使用算法,我就不詳細介紹了)
除了 DisplayManager 的打印時間方法后,還有通過關(guān)注 am 的啟動時間及 DisplayManager 打印的結(jié)束時間,通過兩者時間之間想減也能得到應(yīng)用的啟動時間,還有可以通過 PowerManager 來計算打印時間,在應(yīng)用啟動的時候,我們可以關(guān)注 ActivityManager-Launch 的變化來計算應(yīng)用的啟動時間,還有可以通過截圖統(tǒng)計啟動時間,對于自研應(yīng)用,最效率的莫過于直接在程序中插入打印時間的節(jié)點了

說完了軟件測試的方法,接下來我們聊聊硬件測試,這里我們可以使用高速相機或者手機,采用錄像的方法把應(yīng)用啟動過程給錄制下來,然后通過人工數(shù)幀或者程序數(shù)幀的方式計算啟動時間

好了,今天就說到這里,下回繼續(xù)說其他測試項

三、Android 性能測試初探(三)

書接上文 Android 性能測試初探(二) 本文接著往下聊,今天主聊 CPU 及 內(nèi)存

看到這兩個名詞,做過PC性能測試的就比較熟悉了,同樣的性能測試關(guān)注點 :)

首先說說內(nèi)存,移動端關(guān)注的是內(nèi)存消耗,這個測試節(jié)點的設(shè)計目標是為了讓應(yīng)用不占用過多的系統(tǒng)資源,且及時釋放內(nèi)存,保障整個系統(tǒng)的穩(wěn)定性,當然關(guān)于內(nèi)存測試,在這里我們需要引入幾個概念,

空閑狀態(tài)
中等規(guī)格
滿規(guī)格,
空閑狀態(tài):指打開應(yīng)用后,點擊home鍵讓應(yīng)用后臺運行,此時應(yīng)用處于的狀態(tài)叫做空閑。 中等規(guī)格和滿規(guī)格指的是對應(yīng)用的操作時間的間隔長短不一,中等規(guī)格時間較長,滿規(guī)格時間較短。

接下來我們說說在內(nèi)存測試中,存在很多測試子項,如下清單所示

1.空閑狀態(tài)下的應(yīng)用內(nèi)存消耗情況
2.中等規(guī)格狀態(tài)下的應(yīng)用內(nèi)存消耗情況
3.滿規(guī)格狀態(tài)下的應(yīng)用內(nèi)存消耗情況
4.應(yīng)用內(nèi)存峰值情況
5.應(yīng)用內(nèi)存泄露情況
6.應(yīng)用是否常駐內(nèi)存
7.壓力測試后的內(nèi)存使用情況

說了一些關(guān)于內(nèi)存測試方面的設(shè)定,接下來我們聊聊測試方法DIY,現(xiàn)在關(guān)于android內(nèi)存測試的方法基本分為幾類,

1.使用 android 本身提供的 ActivityManager.MemoryInfo() 方法獲得(此方法請百度或google)此類第三方工具有如網(wǎng)易的Emmagee、安測試、騰訊的GT等
2.使用 android 提供的 adb shell dumpsys meminfo |grep packagename >/address/mem.txt 來獲取
3.使用 android 提供的 procrank

這里我們詳解一下 procrank 方法(批處理)

首先去google獲取procrank、procmem、libpagemap.so 三個文件 .

然后push文件,執(zhí)行 adb push procrank /system/xbin adb push procmem /system/xbin adb push libpagemap.so /system/lib

賦權(quán) adb shell chmod 6755 /system/xbin/procrank adb shell chmod 6755 /system/xbin/procmem adb shell chmod 6755 /system/lib/libpagemap.so ,

在開啟工具記錄 adb shell procrank |grep packagename >/address/procrank.txt

剩下的就是整理測試數(shù)據(jù)了

關(guān)于內(nèi)存泄露方面的測試,可以通過幾個方面來測試

1.通過monkey壓力測試記錄內(nèi)存使用情況,分析數(shù)據(jù)曲線圖及日志情況
2.通過eclipse上的mat+heap來分析存在內(nèi)存泄露方面的節(jié)點

說了這么多內(nèi)存的,我們再來說說CPU方面的,CPU跟內(nèi)存一樣,存在一些測試子項,如下清單所示

1.空閑狀態(tài)下的應(yīng)用CPU消耗情況
2.中等規(guī)格狀態(tài)下的應(yīng)用CPU消耗情況
3.滿規(guī)格狀態(tài)下的應(yīng)用CPU消耗情況
4.應(yīng)用CPU峰值情況

CPU的測試方法分為幾類
1.使用android提供的adb shell dumpsys cpuinfo |grep packagename >/address/cpu.txt來獲取
2.使用top命令 adb shell top |grep packagename>/address/cpu.txt 來獲取
恩,說了大半章了,cpu及內(nèi)存的測試相信各位應(yīng)該有所了解了,下回繼續(xù)聊其他測試項

root之后裝個管理器,設(shè)置權(quán)限
adb push文件的時候,我遇到的問題:
1、Read-only file system。
2、Operation not permitted
解決辦法:
adb shell
$ su

mount -o rw,remount /system

chmod 777 /system

cd system

chmod 777 xbin

cd xbin

exit

$ exit
然后再執(zhí)行adb push 就可以了
以上供參考~

四、Android 性能測試初探(四)

書接上文 Android 性能測試初探(三)

自從 cpu及內(nèi)存后,GPU 這個詞對于 PC 性能測試者也不陌生了,什么 3Dmax,安兔兔之類的第三方軟件讓 GPU 在移動端性能測試領(lǐng)域都知曉,但對于應(yīng)用的 GPU 該如何來測試呢,我們先引入幾個名詞:

過度繪制
幀率
幀方差
過度繪制是指界面顯示的 activity 套接了多層而導(dǎo)致。幀率是指屏幕刷新率。幀方差是指屏幕刷新幀間隔方差。

對于 GPU 的測試主要包括以下幾個測試子項

界面過度繪制
屏幕滑動幀速率
屏幕滑動平滑度
對于過度繪制的測試主要通過人工進行測試,通過打開開發(fā)者選項中的 顯示GPU過度繪制 來進行測試(PS:只有android4.2及以上的版本才具備此功能),驗收的標準為:

不允許出現(xiàn)黑色像素
不允許存在4x過度繪制
不允許存在面積超過屏幕1/4區(qū)域的3x過度繪制(淡紅色區(qū)域)
對于屏幕滑動幀速率主要有 2 種方法。

先說說軟件測試的方法:

1.手機端需打開開發(fā)者選項中的 啟用跟蹤 后勾選 Graphics 和 View
2.啟動 SDK 工具 Systrace 插件,勾選被測應(yīng)用,點擊 Systrace 插件,在彈出的對話框中設(shè)置持續(xù)抓取時間,在trace taps下面勾選 gfx 及 view 選項,
3.人滑動界面可以通過節(jié)拍來進行滑動或者掃動,幀率數(shù)據(jù)會保存到默認路徑下,默認名稱為 trace.html

4.將trace.html文件拷貝到linux系統(tǒng)下 通過命令進行轉(zhuǎn)換,生成trace.csv文件

grep 'postFramebuffer' trace.html | sed -e 's/.]\W//g' -e 's/:.*$//g' -e 's/.//g' > trace.csv
5.用excel打開文件計算得到幀率

接下來我們說說硬件的方法,這里需要引入高速相機,打開高速相機,開啟攝像模式,錄制人滑動或者掃動被測應(yīng)用的視頻,再通過人工或者程序數(shù)幀的方法對結(jié)果進行計算得到幀率

對于屏幕滑動平滑度的測試,方法如同幀率測試,唯一的差異就是最后的結(jié)果計算公式的差異

GPU的測試目前業(yè)界使用的均為硬件來進行,軟件測試的數(shù)據(jù)相較硬件差異較大,對于幀率及幀方差的測試標準而言,需對待不同機型設(shè)定不同的標準

好了,對于GPU方面的測試介紹到此,相信大家對于這塊不會陌生了:)

預(yù)知下文,請聽下回分解

五、Android 性能測試初探(五)

書接上文 Android 性能測試初探之 GPU(四)

前文說了的一些性能測試項大家可能都聽說,接下來我們聊聊大家不常關(guān)注的測試項- 功耗 。

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

測試手機安裝目標APK前后待機功耗無明顯差異
常見使用場景中能夠正常進入待機,待機電流在正常范圍內(nèi).
長時間連續(xù)使用應(yīng)用無異常耗電現(xiàn)象
功耗測試的方法分為兩類,一類為軟件測試,一類為硬件測試

我們先說說軟件測試,這里我們會聊聊一些DIY的思路,軟件測試一般分為2類,

第一種采用市場上提供的第三方工具,如金山電池管家之類的。
第二種就是自寫工具進行,這里一般會使用3種方法

第一種基于android提供的PowerManager.WakeLock來進行,
第二種比較復(fù)雜一點,功耗的計算=CPU消耗+Wake lock消耗+數(shù)據(jù)傳輸消耗+GPS消耗+Wi-Fi連接消耗,
第三種通過 adb shell dumpsys battery來獲取
接著說硬件測試,在這里我們一般使用萬用表或者功耗儀進行測試,使用功耗儀測試的時候,需要制作假電池來進行的,有些不能拔插電池的手機還需要焊接才能進行功耗測試

功耗測試大體就說到這里,大家應(yīng)該對功耗測試有一些了解了,下文將講解流量,盡請期待

六、Android 性能測試初探(六)

書接前文 Android 性能測試初探之功耗(五)

本節(jié)聊聊性能測試的最后一項- 流量,當然我所指的性能測試是針對大部分應(yīng)用而言的,可能還有部分應(yīng)用會關(guān)注網(wǎng)速、弱網(wǎng)之類的測試,但本系列文章都不去一一探討了

流量測試,同樣需要引入幾個名詞

中等負荷:應(yīng)用正常操作
高負荷:應(yīng)用極限操作
流量測試包括以下測試項:

應(yīng)用首次啟動流量提示
應(yīng)用后臺連續(xù)運行 2 小時的流量值
應(yīng)用高負荷運行的流量峰值
應(yīng)用中等負荷運行時的流量均值
流量測試一般都是用軟件來進行的,這里我們一般分為2類:

采用市場提供的第三方工具來進行測試,如流量寶之類的
自研工具進行測試
自研工具進行測試一般包含 2 類方法,

通過 tcpdump 抓包,再通過 wireshake 直接讀取包信息來獲得流量
首先獲得被測應(yīng)用的 uid 信息,可以通過 adb shell dumpsys package 來獲取 然后在未操作應(yīng)用之前,我們可以通過查看 adb shell cat /proc/uid_stat/uid/tcp_rcv adb shell cat /proc/uid_stat/uid/tcp_snd 獲取到應(yīng)用的起始的接收及發(fā)送的流量,然后我們再操作應(yīng)用,再次通過上述 2 條命令可以獲取到應(yīng)用的結(jié)束的接收及發(fā)送的流量,通過相減及得到應(yīng)用的整體流量消耗
好了,流量測試就說到這里,android 性能測試初探之旅就到此結(jié)束了,下回我們將探討 android 安全測試,預(yù)知下文,敬請期待

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,777評論 25 709
  • 【轉(zhuǎn)】Android 性能測試Android 性能測試,跟 pc 性能測試一樣分為客戶端及服務(wù)器,但在客戶端上的性...
    步履不停的Suunny閱讀 584評論 0 2
  • 那些年我們用過的顯示性能指標Android客戶端性能優(yōu)化(魅族資深工程師毫無保留奉獻)這一次,我優(yōu)化了37%的內(nèi)存...
    Art_Collector閱讀 10,635評論 2 22
  • 移動APP測試講義 本篇講義主要闡述APP的手工測試要點,并概括介紹主流的APP測試框架。 1. APP測試的準備...
    厲鉚兄閱讀 10,060評論 6 109
  • 手上青春,還剩多少 時光悠悠,青春漸老 是的,這是一篇寫青春的文章,我很喜歡寫青春,因為這兩個字,即使放在最灰暗的...
    萬萬11閱讀 499評論 0 2

友情鏈接更多精彩內(nèi)容