看完 kasi 大哥 写的,我也写一点点儿我知道的~

为什么要测功耗?测功耗的实际意义有哪些?
ROM 级别的,测功耗(包括其自带的应用)是必然的(毕竟 rom 的耗电决定待机时间长短,这是手机的很重要卖点之一,也是用户比较关心的一个指标)。一般官方宣传的手机资料时,里面写的待机时间多少分钟、2G/3G 通话/上网多少分钟、wifi 上网/听音乐/播放视频的最大时长,就是测耗电量再经过计算得来的。
单个 App 级别的,大家都知道,耗电量的增加,也就意味着内存/CPU 占用的增加。正所谓,透过现象看本质,如果增幅较之前版本过大,那很有可能是代码出问题了(即便不影响功能使用,这种问题即便不修正不优化,但最好能做到知道哪有问题);比之前版本过小,时间精力够的话最好去找找导致差异过大的原因。
(PS:像 ROM 级别的功耗测试这肯定是各个厂商都会做的,咱们普通小老百姓基本无需操心这些。非系统自带的 App,尤其是安卓平台,在海量的 ROM 下,用户量比较大的应用,可以去着重在各种 ROM 上看看耗电量还可以;一般的应用,我个人愚见,测耗电量的意义和回报不太大,还不如多关注 UI 设计、优化内存 CPU 的占用、优化各功能的响应时间的更有意义,因此测 App 的功耗视需求而定。)

测功耗大致过程是怎样?
测功耗,一般是选取(经过细致评估的 App 或 ROM 的功能性能)比较稳定的版本来做一轮功耗测试,测时用两三个硬件没什么问题的手机、刷个干净稳定的系统,让手机、假电池、电流表串联(即假电池连接到电流表的电流输出口,然后再安到手机上模拟日常用的电池来给手机供电,这样保证三者电流一致),和然后放上 SIM 卡(一般是移动的),然后去测各种功能下的耗电量。
比如,测理论上的手机 2G 通话的最大时长,打几个十分钟的电话,采集并计算这段时间系统的电流的平均值,然后再用该手机配备的电池的容量除以这个电流值即得出理论上的 2G 最大通话时间。测单个功能的功耗,只要减掉手机待机时的电流值即得到单个功能的功耗。
(PS:因为是在偏绝对的环境下测出的,所以是理论值。等到实际使用环境肯定比测试时复杂,so 我们的手机平日里能使用的时长肯定比理论值要小。)

一些杂项(上面写的其实测的思路,基本上是固定的好多年没变过,但是测的过程中意外时有发生):
1、硬件的检查:手机的硬件最好靠谱些。反之,硬件有问题,测出的电流值完全没意义。
2、系统设置的检查:要刷的 ROM 版本不要看错,蓝牙、wifi、移动数据之类的没让开之前千万不要开,反之,测出的数据偏差太大,只能设置好之后重跑。(之前同事有干过~后果略严重~)
3、其他的检查:假电池、手机、电流表的连接处触点是否生锈(生锈即影响电阻,进而影响电流值);SIM 卡保持话费充足,服务类电话、短信能取消的取消,一旦测通话时电话没费导致通话时长不足、测的过程中来了其他的电话短信,这些都会严重影响电流值,一旦碰到,起码这条用例得重新来过;手机信号不能太弱,信号不稳势必会导致发射接受频率的提升,进而导致系统电流值不稳定,故尽可能保持手机信号满格和稳定,同理 wifi 信号、网速亦是如此;测的时候冒出 Bug,没好办法,抓 Log 报 Bug,然后重跑用例。。。
4、关于假电池,一般是一块电路板,大小与手机电池近似但不绝对,绝对的是整体的电阻、触点都是仿照真实的电池来做的,目的也是为了尽可能的模拟真实电池给手机供电时的情况,进而得出较为靠谱的电流值。
5、测偏绝对环境下理论的理论值的原因,是因为用户的使用环境场景千差万别无法进行模仿,只能从最基础最单一最简单情景下进行电流值的测量,然后采用以小见大(或是以偏概全)的方法来计算出那些所谓的理论值。
6、电流表的选取,主要在于构造(当然是越贵的测的越精准~几百到几十万不等~)对电流会造成一定的硬性影响,视具体需求而定。

总结:标准的测功耗,环境就是要尽可能的干净不受干扰,以上是小弟做过的一点总结~欢迎各路英雄多多指点斧正拍砖~


↙↙↙阅读原文可查看相关链接,并与作者交流