APP性能测试之功耗测试
功耗,通俗的理解即電流通過導(dǎo)體使設(shè)備運行,導(dǎo)體本身的電阻將電能轉(zhuǎn)換為熱能的過程,因此,通常功耗測試也叫電量測試。
耗電量測試是指測試App在運行過程中消耗的能量。設(shè)備運行期間消耗能量公式:W = w * t = U * I * t
- w表示單位時間耗電量
- U為電池供電電壓
- I為電流值
- t為測試時間 通常來說U可以認為不變,對于平穩(wěn)的測試過程,耗電量與測試時間成正比。
移動設(shè)備功耗
由于移動設(shè)備的電池容量限制,所以對于App的功耗也是需要考慮的一個方面。Android的很多特性都比較耗電(如屏幕、GPS、sensor傳感器、喚醒機制wakelock、CPU、連網(wǎng)等等),我們必須要慎重檢查APP的電量使用,以免導(dǎo)致用戶手機過度耗電發(fā)熱,帶來不良體驗。
主要的耗電場景有:
- screen:屏幕顯示畫面會耗電。
- cpu:復(fù)雜的運算邏輯、死循環(huán)等會直接導(dǎo)致CPU負載過高,會導(dǎo)致耗電;
- wakelock:喚醒鎖,只要有應(yīng)用拿到wakelock這個鎖,系統(tǒng)就無法進入睡眠狀態(tài)。頻繁wakelock或者申請了wakelock沒有釋放,會導(dǎo)致耗電;
- wifiscan和wifilock:wifiscan和wifilock也會導(dǎo)致手機的wifi模塊處于激活狀態(tài),頻繁的wifiscan或者wifilock不釋放,會導(dǎo)致耗電;
- sensor:傳感器打開后會導(dǎo)致系統(tǒng)持續(xù)監(jiān)聽設(shè)備外圍環(huán)境的數(shù)據(jù)變化,使用后不及時關(guān)閉,會導(dǎo)致耗電;
- network:大量的數(shù)據(jù)傳輸,或者長時間的移動網(wǎng)絡(luò)數(shù)據(jù)傳輸會導(dǎo)致耗電;
- gps:gps也是一種傳感器,定位中完成后沒有及時關(guān)閉,會導(dǎo)致耗電。
Android功耗
目前很多定制Android 系統(tǒng)支持查看App耗電量查看,如下圖所示是魅族Flyme系統(tǒng)的應(yīng)用電量消耗圖。
Android 電量測試
API
按照Android 系統(tǒng)規(guī)則,設(shè)備制造商必須在/frameworks/base/core/res/res/xml/power_profile.xml中提供組件的電源配置文件,該配置文件定義了每個耗電項的具體計算單位,內(nèi)容樣例可以點擊查看 power_profile.xml
但是從Android 4.4開始系統(tǒng)電量權(quán)限做了嚴格的限制,隨著現(xiàn)在系統(tǒng)版本越來越高,使用API獲取電量不太現(xiàn)實。
硬件工具
基于基于硬件的測試方案,使用用電量表來測試手機耗電量。該方法優(yōu)點是測試比較精準,同樣缺點也很明顯缺點:采購成本高,測試的是整個手機,不是被測APP,測試時要減少系統(tǒng)本身和其他app的干擾。得到數(shù)值無法直接參考,不知道合理還是偏高。不能給出進一步參考,比如具體哪個app方面消耗電量比較多。
batterystats
使用dumpsys batterystats 命令可用來生成關(guān)于設(shè)備電池使用情況的統(tǒng)計數(shù)據(jù),這些數(shù)據(jù)按唯一用戶 ID (UID) 進行整理。統(tǒng)計信息包括以下內(nèi)容:
- 電池相關(guān)事件的歷史記錄
- 設(shè)備的全局統(tǒng)計信息
- 每個UID 和系統(tǒng)組件的大致用電量
- 單個應(yīng)用的每個數(shù)據(jù)包占用的移動網(wǎng)絡(luò)毫秒數(shù)
- 系統(tǒng) UID匯總統(tǒng)計信息
- 應(yīng)用 UID 匯總統(tǒng)計信息
bugreport
Android為了方便開發(fā)人員分析整個系統(tǒng)平臺和某個App在運行一段時間之內(nèi)的所有信息,專門開發(fā)了bugreport工具。輸入命令adb bugreport [filepath]/即可執(zhí)行信息采集,并生成zip或者txt文件格式的數(shù)據(jù)文件。
Battery Historian
Batterystats 是包含在 Android 框架中的一種工具,用于收集設(shè)備上的電池數(shù)據(jù)。您可以使用 adb 將收集的電池數(shù)據(jù)轉(zhuǎn)儲到PC,并創(chuàng)建一份可使用分析的報告。Battery Historian 會將報告從 Batterystats 轉(zhuǎn)換為可在瀏覽器中查看的 HTML報告。
注意:要使用 Batterystats 和 Battery Historian,您需要一臺搭載 Android 5.0 或更高版本且啟用了 USB 調(diào)試功能的移動設(shè)備。
電量數(shù)據(jù)收集
1、收集電池的歷史數(shù)據(jù)
adb shell dumpsys batterystats --enable full-wake-history2、重置電池數(shù)據(jù)
adb shell dumpsys batterystats --reset3、斷開設(shè)備與電腦的連接,以便只從設(shè)備的電池中消耗電流,然后執(zhí)行指定的App進行相關(guān)操作。
4、使用命令adb bugreport導(dǎo)出電量信息結(jié)果,這里需要注意的是Android 7.0以上系統(tǒng)版本和Android 7.0以下命令不同。
Android 7.0以上系統(tǒng)版本:
adb bugreport C:\Users\Shuqing\Desktop\bugreport.zipAndroid 7.0以下系統(tǒng)版本
獲取bugreport信息(記錄了從開機之后詳細的dumpsys,dumpstate和logcat信息)
adb bugreport > [path]bugreport.txt??獲取dumpsys信息(獲取系統(tǒng)信息:比如內(nèi)存CPU,accounts,activities,wifi等信息)
adb shell dumpsys batterystats > 存放的電腦地址/batterystats.txt或者獲取指定的應(yīng)用程序的dumpsys信息:
adb shell dumpsys batterystats > 包名 > 存放的電腦地址/batterystats.txt電量數(shù)據(jù)解析
Battery Historian 一款由Google提供的Android系統(tǒng)電量分析工具,從手機中導(dǎo)出bugreport文件上傳至頁面,在網(wǎng)頁中生成詳細的圖表數(shù)據(jù)來展示手機上各模塊電量消耗過程,最后通過App數(shù)據(jù)的分析制定出相關(guān)的電量優(yōu)化的方法。
1、使用Battery Historian需要在本地安裝,最簡單的方法使用docker安裝,然后執(zhí)行如下命令。
docker run -d -p 9999:9999 bhaavan/battery-historian執(zhí)行完成后使用瀏覽器打開鏈接:http://localhost(IP):9999 即可看到Battery Historian界面。
?http://點擊鏈接加入群聊【軟件測試交流群】:https://jq.qq.com/?_wv=1027&k=Ts5N8qumhttp://點擊鏈接加入群聊【軟件測試交流群】:https://jq.qq.com/?_wv=1027&k=Ts5N8qum?_wv=1027&k=Ts5N8qum
注意
上傳生成的報告文件然后點擊submit提交即可,如果上傳后沒有顯示submit按鈕,則需要科學(xué)上網(wǎng)。原因是因為web某些資源沒有加載出來,其中的一些資源需要訪問Google服務(wù)器,但是這些資源被墻了,無法訪問。只要解決了墻的問題,submit的問題也就迎刃而解了。
如果不想在本地搭建環(huán)境,那么可以訪問在線的解析平臺:https://bathist.ef.lc/ (網(wǎng)站可能打不開,原因你懂的)
查看整體電量數(shù)據(jù)
上傳數(shù)據(jù)解析之后如下圖所示,可以查看到詳細數(shù)據(jù)展示。
- 橫坐標是一個時間范圍。以重置為起點,獲取bugreport內(nèi)容時刻為終點。坐標的間隔,會隨著時間的長度發(fā)生改變。
- 縱坐標是消耗電量的具體內(nèi)屬性。
- 黑色曲線是測試過程中整體的電量信息。將Show bars的勾選去掉可以只展示該曲線。
重點參數(shù)說明:
- battery_level:剩余電量,可以看出電量的變化。
- plugged:充電狀態(tài),這一欄顯示是否進行充電,以及充電的時間范圍。
- Longwakelock:該屬性記錄了長時間使設(shè)備保持喚醒的進程。
- screen:屏幕是否點亮。可以用于考慮睡眠狀態(tài)和點亮狀態(tài)下電量的使用信息。
- top app:該欄顯示當(dāng)前時刻哪個app處于最上層,就是當(dāng)前手機運行的app。用來判斷某個app對手機電量的影響。
- Coulomb charge電量消耗值,單位毫安時mAh。
- Temperature 電池溫度。
- discharge rate 放電率,是表示電池放電快慢的一種度量。
查看單個進程電量消耗數(shù)據(jù)
在App Selection中選擇指定的App進程,即可查看該進程的耗電數(shù)據(jù)。
iOS功耗測試
Energy Log
啟動Instruments,選擇你的設(shè)備和要檢測的app,打開Energy Log,如下圖所示:(充電然后進行電量測試不合理)
選擇設(shè)備和應(yīng)用進行執(zhí)行之后可以查看到電量消耗情況
iOS電量測試
1、打開設(shè)置-開發(fā)者-Logging
2、打開Energy,然后點擊開始錄制。
3、執(zhí)行應(yīng)用操作
4、完成后,返回“設(shè)置”>“開發(fā)者”>“Logging”,然后點擊“stop recording”。
5、連接設(shè)備,打開instrument,啟動Energy Log,從設(shè)備導(dǎo)入數(shù)據(jù)。
6、導(dǎo)入完成后即可查看數(shù)據(jù)信息。?
?http://點擊鏈接加入群聊【軟件測試交流群】:https://jq.qq.com/?_wv=1027&k=Ts5N8qum?_wv=1027&k=Ts5N8qum
總結(jié)
以上是生活随笔為你收集整理的APP性能测试之功耗测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。