背景介紹
目前對(duì)于移動(dòng)設(shè)備而言愚战,電量是很重要的一個(gè)方面】犊澹現(xiàn)在大家使用手機(jī)基本每天都需要充電瞻颂,所以用戶(hù)也非常關(guān)注耗電的問(wèn)題,如果應(yīng)用設(shè)計(jì)不合理導(dǎo)致電量大量消耗,那么對(duì)于關(guān)注耗電的用戶(hù)而言,這款應(yīng)用將會(huì)是首要卸載目標(biāo)议泵。因此,作為測(cè)試人員桃熄,我們也應(yīng)該對(duì)應(yīng)用的耗電做一些針對(duì)性測(cè)試先口。
Android電量測(cè)試
1、使用硬件測(cè)試儀
如安捷倫N6705B瞳收,這種的硬件功耗測(cè)試儀可以比較精確的測(cè)試手機(jī)的電量消耗碉京。
使用方法:
這個(gè)方法需要拆卸手機(jī),將手機(jī)電池拿掉螟深,將電量表串接在手機(jī)和外部電源之間谐宙,這樣手機(jī)的供電就會(huì)經(jīng)過(guò)電量表,可以獲取比較準(zhǔn)確的電量數(shù)據(jù)界弧。
優(yōu)點(diǎn):獲取的電流數(shù)據(jù)比較精確
缺點(diǎn):需要硬件投入凡蜻,需要拆卸手機(jī),只能獲得手機(jī)整體的電流值垢箕,無(wú)法判斷某一個(gè)app在哪些方面消耗電流多少划栓。-
2、基于Battery Historian查看電量消耗
Battery-Historian是谷歌推出的一款專(zhuān)門(mén)分析Bugreport的工具条获,是谷歌2015年I/O大會(huì)上推出的一款檢測(cè)運(yùn)行在android5.0(Lollipop)及以后版本的設(shè)備上電池的相關(guān)信息和事件的工具忠荞,是一款對(duì)于分析手機(jī)狀態(tài),歷史運(yùn)行情況很好的可視化分析工具帅掘,當(dāng)設(shè)備在使用電池的時(shí)候委煤,它可以使開(kāi)發(fā)者們看到系統(tǒng)級(jí)和應(yīng)用級(jí)事件圖表,在圖表時(shí)間軸上可以縮放和平移锄开,能夠直觀的看到自上一次充滿(mǎn)電到現(xiàn)在設(shè)備電池的統(tǒng)計(jì)匯總信息素标,它可以選中一個(gè)應(yīng)用程序來(lái)檢查該應(yīng)用影響電池電量的一些參數(shù)称诗。
目前Battery historian有兩個(gè)版本萍悴,Battery Historian 1.0 通過(guò)python腳本轉(zhuǎn)換成html文件,而新版本 Battery Historian 2.0 發(fā)布了,新版本帶來(lái)了很多的改進(jìn):更清晰的報(bào)告癣诱,每個(gè)應(yīng)用程序的摘要计维,更快的執(zhí)行等等。
一撕予、安裝
因?yàn)?.0版本的一些優(yōu)勢(shì)鲫惶,建議大家安裝2.0版本,安裝上可能需要花費(fèi)一些時(shí)間实抡。目前網(wǎng)上安裝教程較多欠母,這里不做詳細(xì)介紹。
二吆寨、使用方法
1赏淌、先使用adb kill-server斷開(kāi)服務(wù),再使用adb start-server開(kāi)啟adb服務(wù)啄清。這一步很重要六水,因?yàn)槲覀冮_(kāi)發(fā)時(shí)做電量記錄會(huì)打開(kāi)很多可能造成沖突的東西。
2辣卒、重置電池?cái)?shù)據(jù)收集數(shù)據(jù)掷贾,我們?cè)陂_(kāi)始的時(shí)候需要通過(guò)以下命令來(lái)打開(kāi)電池?cái)?shù)據(jù)的獲取以及重置:
adb shell dumpsys batterystats --enable full-wake-history
adb shell dumpsys batterystats --reset
執(zhí)行的效果如下:
以上即為一些初始化操作,避免了干擾數(shù)據(jù)荣茫,之后拔掉數(shù)據(jù)線(xiàn)想帅。
1)執(zhí)行一些想要測(cè)試的場(chǎng)景。
2)重新連接手機(jī)啡莉,導(dǎo)出bugreport文件(adb bugreport > bugreport.txt)
3)打開(kāi)battery historian(localhost:9999),將bugreport導(dǎo)入
4)結(jié)果如下
各參數(shù)意義
battery_level: 電量博脑,可以看出電量的變化
plugged: 充電狀態(tài),這一欄顯示是否進(jìn)行了充電票罐,以及充電的時(shí)間范圍叉趣。
Screen: 屏幕是否點(diǎn)亮,這一點(diǎn)可以考慮到睡眠狀態(tài)和點(diǎn)亮狀態(tài)下電量的使用信息该押。
Top: 該欄顯示當(dāng)前時(shí)刻哪個(gè)app處于最上層疗杉,就是當(dāng)前手機(jī)運(yùn)行的app,用來(lái)判斷某個(gè)app對(duì)手機(jī)電量的影響蚕礼,這樣也能判斷出該app的耗電量信息烟具。該欄記錄了應(yīng)用在某一個(gè)時(shí)刻啟動(dòng),以及運(yùn)行的時(shí)間奠蹬,這對(duì)我們比對(duì)不同應(yīng)用對(duì)性能的影響有很大的幫助朝聋。
wake_lock*: wake_lock該屬性是記錄wake_lock模塊的工作時(shí)間。是否有停止的時(shí)候等囤躁。
running: 界面的狀態(tài)冀痕,主要判斷是否處于idle的狀態(tài)荔睹。用來(lái)判斷無(wú)操作狀態(tài)下電量的消耗。
wake_lock_in: wake_lock有不同的組件言蛇,這個(gè)地方記錄在某一個(gè)時(shí)刻僻他,有哪些部件開(kāi)始工作,以及工作的時(shí)間腊尚。
Gps: gps是否開(kāi)啟吨拗。
phone_in_call: 是否進(jìn)行通話(huà)。
Sync: 是否跟后臺(tái)同步婿斥∪芭瘢可以把鼠標(biāo)停在某一項(xiàng)上面∶袼蓿可以看到何時(shí)sync同步啟動(dòng)的携龟,持續(xù)時(shí)間Duration多久。電池容量不會(huì)顯示單一行為消耗的具體電量勘高,這里只能顯示使用電池的頻率和時(shí)長(zhǎng)峡蟋,你可以看分時(shí)段的剩余電量來(lái)了解具體消耗了多少電量。
Job: 后臺(tái)的工作华望,比如服務(wù)service的運(yùn)行蕊蝗。
data_conn: 數(shù)據(jù)連接方式的改變,上面的edge是說(shuō)明采用的gprs的方式連接網(wǎng)絡(luò)的赖舟。此數(shù)據(jù)可以看出手機(jī)是使用2g蓬戚,3g,4g還是wifi進(jìn)行數(shù)據(jù)交換的宾抓。這一欄可以看出不同的連接方式對(duì)電量使用的影響子漩。
Status: 電池狀態(tài)信息,有充電石洗,放電幢泼,未充電,已充滿(mǎn)讲衫,未知等不同狀態(tài)缕棵。這一欄記錄了電池狀態(tài)的改變信息。
phone_signal_strength: 手機(jī)信號(hào)狀態(tài)的改變涉兽。這一欄記錄手機(jī)信號(hào)的強(qiáng)弱變化圖招驴,依次來(lái)判斷手機(jī)信號(hào)對(duì)電量的影響。
Health: 電池健康狀態(tài)的信息枷畏,這個(gè)信息一定程度上反映了這塊電池使用了多長(zhǎng)時(shí)間别厘。這一欄記錄電池狀態(tài)在何時(shí)發(fā)生改變,上面的圖中電池狀態(tài)一直處于good狀態(tài)拥诡。
Plug: 充電方式触趴,usb或者插座氮发,以及顯示連接的時(shí)間。這一欄顯示了不同的充電方式對(duì)電量使用的影響雕蔽。
優(yōu)點(diǎn):結(jié)果直觀,有詳細(xì)的耗電數(shù)據(jù)
缺點(diǎn):不支持5.0以下的android系統(tǒng)
獲取數(shù)據(jù)注意事項(xiàng):
獲取測(cè)試結(jié)果時(shí)我們也要注意數(shù)據(jù)的有效性宾娜,避免數(shù)據(jù)誤差批狐,讓數(shù)據(jù)更有效的說(shuō)明問(wèn)題,下面提供兩種方法前塔,來(lái)提高獲取數(shù)據(jù)的有效性嚣艇。
一、橫向?qū)Ρ确ǎ悍謨刹綔y(cè)試华弓,第一步測(cè)量手機(jī)硬件運(yùn)行消耗的電量食零;第二步測(cè)試手機(jī)硬件和軟件運(yùn)行綜合的耗電量。最后將兩次的耗電進(jìn)行對(duì)比寂屏,得出軟件消耗的電量大蟹∫ァ;
二迁霎、縱向?qū)Ρ确ǎ和瑫r(shí)進(jìn)行兩臺(tái)手機(jī)吱抚,其中一臺(tái)手機(jī)不運(yùn)行軟件,另一臺(tái)手機(jī)運(yùn)行軟件考廉;分別獲得兩臺(tái)手機(jī)的耗電量秘豹,對(duì)比兩臺(tái)手機(jī)耗電量差異,得出軟件消耗的電量大小昌粤。
這兩種方法在測(cè)試上有一定的差異既绕,很多應(yīng)用軟件都是需要移動(dòng)網(wǎng)絡(luò)的支持,而手機(jī)接收的網(wǎng)絡(luò)信號(hào)是會(huì)隨時(shí)間變化的涮坐。
因此凄贩,第一種方法的誤差主要來(lái)源于手機(jī)在不同的基站網(wǎng)絡(luò)下工作狀態(tài)的變化。
第二種方法的差異則體現(xiàn)在兩臺(tái)手機(jī)本身硬件消耗的電量可能存在差異袱讹,所以需要盡可能使用同一型號(hào)怎炊,同一批次的手機(jī)。
吃水不忘挖井人廓译,轉(zhuǎn)載來(lái)源:https://mp.weixin.qq.com/s/tB84Bdmf9msoKHia35O0bg