一奄抽、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)用的啟動時間的測試,分為三類:
- 首次啟動 --應(yīng)用首次啟動所花費的時間
- 非首次啟動 --應(yīng)用非首次啟動所花費的時間
- 應(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ù)知下文聚至,敬請期待