iOS耗电测试 - 只要看这3种方法

1字数 1191阅读 1113

前言

从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获取耗电数据(我没研究过),如果这个数据够精准,如果还配合上用户操作行为记录以及行为回放,理论上是可以重现耗电问题。想想都开心😊。具体后面再研究。

3,目前所有办法都无法做到在线上统计耗电数据。

4,方法3采样频率还是低了,1个小时给出一个数据,且只能个体使用。最大的突破在于

-- 精准,排查其他干扰。

-- 可以直接测发布版本。

-- 可以对比其他App。

-- 可以获取其他周围数据。

还可以看下所有性能相关的总结iOS性能检测全家桶

推荐阅读更多精彩内容