(轉(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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市本橙,隨后出現(xiàn)的幾起案子扳躬,更是在濱河造成了極大的恐慌,老刑警劉巖甚亭,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贷币,死亡現(xiàn)場離奇詭異,居然都是意外死亡亏狰,警方通過查閱死者的電腦和手機役纹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骚揍,“玉大人字管,你說我怎么就攤上這事⌒挪唬” “怎么了嘲叔?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抽活。 經(jīng)常有香客問我硫戈,道長,這世上最難降的妖魔是什么下硕? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任丁逝,我火速辦了婚禮,結(jié)果婚禮上梭姓,老公的妹妹穿的比我還像新娘霜幼。我一直安慰自己,他們只是感情好誉尖,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布罪既。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪琢感。 梳的紋絲不亂的頭發(fā)上丢间,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音驹针,去河邊找鬼烘挫。 笑死,一個胖子當著我的面吹牛柬甥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播暗甥,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼撤防,長吁一口氣:“原來是場噩夢啊……” “哼虽风!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辜膝,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤漾肮,失蹤者是張志新(化名)和其女友劉穎厂抖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忱辅,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡墙懂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年损搬,在試婚紗的時候發(fā)現(xiàn)自己被綠了柜与。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弄匕。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖签舞,靈堂內(nèi)的尸體忽然破棺而出儒搭,到底是詐尸還是另有隱情芙贫,我是刑警寧澤磺平,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布拣挪,位于F島的核電站,受9級特大地震影響赊舶,放射性物質(zhì)發(fā)生泄漏赶诊。R本人自食惡果不足惜舔痪,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一锄码、第九天 我趴在偏房一處隱蔽的房頂上張望滋捶。 院中可真熱鬧,春花似錦灸蟆、人聲如沸亲族。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓤帚。三九已至,卻和暖如春轩勘,著一層夾襖步出監(jiān)牢的瞬間绊寻,已是汗流浹背悬秉。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工和泌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留武氓,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像百姓,于是被迫代替她去往敵國和親况木。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

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