鵝廠揭秘 高階大氣的App電量測試

2021-07-03 17:40:01 字數 2578 閱讀 9077

如何評價我們開發出來的應用是耗電還是不耗電,如何測試?這就是我們今天討論的主題——電量測試,乙個在移動應用中新出現的測試型別。

作者簡介

移動裝置從之前的諾基亞、摩托羅拉等功能機到現在android、ios等智慧型機,手機已經越來越普及,功能越來越豐富,但電池技術基本上卻停滯不前,逐漸顯現出功能機時代沒有出現的續航短板,續航待機時間短一直是使用者吐槽的焦點,而許多廠商也坦承電池成了制約手機發展的最大障礙之一。手機的其他模組越來越小,而電池的體積越來越大,已經成為了乙個不爭的事實。早前的功能機電池容量基本都小於1000mah,而現在手機電池容量3000mah已經是標配了,但反而待機時間都不及之前功能機的三分之一。

從上表可以得知(因ios可測性不高,上面資料都是在android平台下測試的資料,下同),待機下平均電流和非待機平均電流差別是非常大的,最少乙個數量級。所以在我們實際應用開發過程中由於api的錯誤使用導致cpu一直工作無法休眠,將消耗大量的電量,電量測試的目的就是要測試出這種可能出現的場景,解決因錯誤使用api、網路操作處理不合理或者**編寫不規範等導致異常耗電的情況。

上面了解電量測試的一些基本知識概念後,可能有同學要問,怎麼測試電量呢?目前有2種方法可以測試電量,硬體測試法和軟體測試法。硬體測試法就是利用硬體裝置測試被測裝置(例如可拆卸電池的android手機)的電流,統計一段時間內的平均電流值。硬體測試儀器包括穩壓電源,可以實時讀取電流的電流儀器以及個人pc電腦(也有穩壓電源和電流儀器為一體的電流儀裝置,這種裝置較貴),如下圖所示:

目前我們採取的電流儀為自己製作的儀器「電量寶」(考慮成本低的因素,且實時處理資料可控),邏輯電路接線圖如下所示:

「電量寶」主要功能實現被測物件電流實時讀取,並輸出實時曲線圖,記錄原始電流和電壓資料。如下實物圖所示(實物圖比較醜陋,晶元、電池處理等比較原始,但比較實用,各位看官不要嘲笑哈,我們不是富二代):

實物圖說明:

1)電源:電源是通過原始的電池作為電源供電,也可以選擇穩壓電源(原始電池省錢,更接近使用者場景,缺陷是不穩定,沒有穩壓電源穩定);

2)電量寶晶元:usb線5v電壓作為晶元工作的電壓,同時通過串列埠通訊來讀取資料;

3)被測物件手機:手機需要取下電池,通過導線正負極和「電量寶」相連。

各個硬體模組功能了解清楚後,在硬體測試過程中還有一些事項需要特別注意,第乙個就是電壓的問題,如果使用電池供電,盡量保證電池滿電下開始測試(因有外部接線干擾,會分壓,導致手機實際電壓不足);如果使用穩壓電源,因不同手機對電壓敏感程度不同,所以會導致手機開機需要的電壓不同(,可以根據實際調整,一般在4.0v~4.5v左右,電壓值選擇不正確,會導致手機無法開機或者開機後不穩定,迴圈重啟等問題,嚴重情況會損壞手機),第二個就是連線的導線問題,純銅導線和劣質的非純銅導線或者鋁導線,電阻有明顯差異(電流波動較大),這樣會對被測手機有較大影響,因手機對電流是非常敏感的,電流忽大忽小將導致手機不穩定,非常影響測試效率,第三個就是接線正負極的問題,手機端正負極和電源端正負極一定要對應上,接反有可能損壞手機。手機端正負極觸片較小,需要購買特殊夾子才能使用,圖下圖所示:

準備工作搞定了之後,就可以通過串列埠實時讀取電流資料了,記錄原始資料,就可以計算平均電流值了。如下圖就是實時採集手機(gt-i9500)開機過程中實時電流曲線圖,平均電流值為480ma:

也可以通過android系統本身自帶的adb除錯命令來獲取電量資訊,命令如下:

adb shell dumpsys batterystats/batteryinfo

android4.4及以上為電池統計服務為batterystats,4.4以下為batteryinfo。命令獲取的結果分2部分,一部分是系統整體耗電資訊,如下圖所示:

另外一部分是各個程序的耗電資訊,如下圖所示:

鵝廠後台開發工程師的工作日常

在很久很久以前,鵝廠開發類工程師職級分為 助理工程師 工程師 高階工程師和專家工程師四大類。小特特從北京某學校畢業後,據傳因為其性別比較突出,所以很幸運地拿到了工程師的職級,並在畢業後順利成為了乙隻新鵝。1.班車風雲 這天,小特特頂著亂糟糟的頭髮,穿著拖鞋和短褲,斜挎著塑料編織袋,抓上工卡和手機就擠...

揭秘Pure Storage即將推出的高階陣列

目前,對於pure即將推出的高階陣列,我們得到了一些相關資訊,猜測solidfire將會進行產品容量的更新。據悉,這個新的高階陣列可用容量最高可以達到1.5pb,採用4tb和8tb 3d nand模組 ssd 有持續不斷的qos,支援數千個虛擬機器,定價不高於每1gb可用容量1美元。我們得到了這款新...

高階,大氣,上檔次的JS驗證

對於正則的判斷,都是通過正規表示式進行判斷,如果判斷為false,則返回提示框,讓使用者正確的輸入資料。1.判斷陣列內是否有重複的元素 var ary new array 111 alert mm ary 直接傳入乙個陣列即可。驗證重複元素,有重複返回true 否則返回false function ...