iOS耗電測試 - 只要看這3種方法
前言
從App使用者角度來講,他感受到的耗電問題就是,
1,為什麼裝上你們家App,手機放那裡半天就沒電了。
2,為什麼開啟你們家App,很快就感覺手機發燙。
從開發者角度來講,
1,主要關心4個耗電大戶:CPU,GPU,網路請求,定位。
2,通過工具發現究竟是誰在耗電,重點突破。
3,解決思路無非就是,能不用的就不用,不得不用的要少用。改改之前粗放式、任性的行為。
解決耗電問題的思路: WWDC17:教你開發省電的 iOS app
從測試角度來講,
一直困惑他們的就是無法給App耗電定量。直到下面介紹的第3種方法被騰訊工程師挖掘出來。原因:
方法1:Energy Impact
開發過程中,執行除錯模式就可以在Xcode裡直接檢視Energy Impact。盯著儀表盤看,有3個區域,如果經常跑到紅色區域那你就該檢討下自己程式碼了。下面的柱狀圖會告訴你耗電的組成部分:CPU,Network,Location,GPU。其中Overhead表示不是由你的App引起的耗電。
如果有問題,可以進一步通過快捷入口開啟Time Profile,Network Profile,Location Profile做進一步細緻排查問題點。
這個沒什麼複雜的,自己研究下就可以。缺點就是必須連上真機,只適合開發人員;而且對於耗電只能給出定性,沒有定量的顯示。

debug時檢視power impact
方法2:Energy Log
這個方法比較適合測試人員。步驟:
1,在手機端,設定-》開發者-》Loggin-》Start Recording。
2,然後可以隨意玩一下自己的App後,Stop Recording。
3,接上Xcode,在Profile中貸款Energy Log;然後選擇Import Logger Data From Device。

Instruments的Energy Log
這個方法的好處就是不用接上電腦,測試人員可以開心的邊走邊測;問題是,Energy裡看到依然是定性結論,而非定量資料。
方法3:sysdiagnose
大致說下這個方法原理。蘋果系統自己一直在統計各種日誌,騰訊的一個工程師找了一種方法可以獲取其中關於耗電的日誌檔案。而且這個日誌裡內容超級詳細,以下引用了其他文章裡的說法:
通過這種方式,我們可以獲取電量消耗,電壓,電流,溫度,甚至系統的 CPU、GPU 等等耗電都有詳細的資料。而且不單單是自己的 App,手機內安裝的其它的 APP 同樣可以獲取到資料,這樣大大方便了我們做出詳細的對比測試資料。由於這些都是蘋果系統的資料,可靠性還是比較有保障的。
具體步驟看這兩篇文章:
來自騰訊的解決方案(發現這個方法的鼻祖): iOS 電量測試實踐
基於騰訊方案,分析一款App耗電(具體解釋如何檢視): iOS 電量測試方案新大陸
這個方法的特點就兩個字:精準。可惜的日誌裡是每1個小時統計出一個值。我在使用過程中就遇到一個小坑,匯出的日誌是*.PLSQL不知道如何開啟,實際上下載個sqlite檢視工具就可以了。
思考
1,這3個方法建議大家全部實際操作一遍,不要用的時候又要去花時間。
2,還看到有人使用私有API獲取耗電資料(我沒研究過),如果這個資料夠精準,如果還配合上使用者操作行為記錄以及行為回放,理論上是可以重現耗電問題。想想都開心:blush:。具體後面再研究。
3,目前所有辦法都無法做到在線上統計耗電資料。
4,方法3取樣頻率還是低了,1個小時給出一個數據,且只能個體使用。最大的突破在於
-- 精準,排查其他干擾。
-- 可以直接測釋出版本。
-- 可以對比其他App。
-- 可以獲取其他周圍資料。
還可以看下所有效能相關的總結iOS效能檢測全家桶