App效能測試之耗電量
阿新 • • 發佈:2020-09-14
手機app的主要耗電場景有:
(1)cpu:複雜的運算邏輯、死迴圈等會直接導致CPU負載過高,會導致耗電;(2)wakelock:只要有應用拿到wakelock這個鎖,系統就無法進入睡眠狀態。頻繁wakelock或者申請了wakelock沒有釋放,會導致耗電;
(3)wifiscan和wifilock:wifiscan和wifilock也會導致手機的wifi模組處於啟用狀態,頻繁的wifiscan或者wifilock不釋放,會導致耗電;
(4)sensor:感測器開啟後會導致系統持續監聽裝置外圍環境的資料變化,使用後不及時關閉,會導致耗電;
(5)network:大量的資料傳輸,或者長時間的行動網路資料傳輸導致radio長期處於活躍狀態,會導致耗電;
(6)gps:gps也是一種感測器,定位中沒有及時關閉,會導致耗電;
(7)業務層面,使用者最核心基礎的模組:
(8)新增的基礎邏輯,倘若入口明顯,潛在較大訪問,必須保證效能;
(9)活動需要,因為活動上新的邏輯,存在較大的使用者訪問,需盡力提升使用者體驗;
(10)反饋體驗不好的模組;
測試方法: (1)adb connect ip:port 無線連線裝置; (2)斷開並重啟adb服務:adb kill-server 和 adb start-server; (3)重置電池資料:
# 設定Historian在時間線上顯示關於每個單獨喚醒鎖的詳細資訊,啟用完整喚醒鎖報告
# (注意,通過啟用完全喚醒鎖定報告,電池歷史記錄將在幾個小時內溢位。使用此選項進行短時間測試(3-4小時))adb shell dumpsys batterystats --enable full-wake-history
# 採集報告前將battery統計狀態重置 adb shell dumpsys batterystats --reset
(4)若已連線資料線,則拔電資料線(且測試過程中,不應出現充電情況);
(5)在手機上對目標app執行相應場景操作;
(6)操作完成後,再次連線裝置,執行以下命令:
adb shell dumpsys batterystats > xxx.txt # 因為bugreport時間比較長,我們放到後面執行來減少與前面dumpsys的資料的偏差 # 若Android 7.0及以上:adb bugreport bugreport.zip # 若Android 6.0及以下: adb bugreport > bugreport.txt
資料分析:
1、對於xxx.txt文字,可直接開啟;
(1)開啟txt文字後,查詢目標app的包名,獲取app的程序uid:
(2)再查詢“Estimated power use (mAh)”,獲取目標uid的耗電量:
2、對於bugreport.zip檔案,可通過battery historian工具進行解析:
(1)在chrome瀏覽器開啟:https://bathist.ef.lc/
(2)開啟生成的bugreport.zip檔案,再點選Submit,即可分析資料
(該檔案放在執行adb命令的目錄處,如C:\Users\ffff>adb bugreport>bugreport.zip,則檔案生成在C:\Users\ffff 目錄裡)
參考:https://www.jianshu.com/p/2f144bf7fe51
參考:http://www.51testing.com/html/28/n-4456728.html