一、为什么进行电量测试?
1、为用户省电
2、提升用户体验
二、安卓耗电测试方法
安卓测试耗电有多种方法:
1、在手机查看应用耗电量(方便,但没有详细耗电信息)
2、使用性能测试APP查看应用耗电量,如GT、emmagee等(适合测试一段时间内的应用耗电量)
3、使用adb 命令,查看应用耗电量(有详细耗电信息,具体到cpu, 网络,传感器等)
4、使用测试工具,如Google提供的Battery Historian(操作简单,结果直观)
本文主要介绍Battery Historian工具
三、Battery Historian环境搭建
搭建Battery Historian环境有两种方法:
1、用go语言搭建,需要配置环境变量,参考文档:https://www.cnblogs.com/yinrw/p/9621109.html
根据文档安装并配置环境,在cmd运行启动Battery Historian
2、用docker运行,不需要配置环境,简单高效,docker下载 ,参考文档:https://www.jianshu.com/p/d83f6a2fd702
双击安装完成后桌面新建的快捷方式Docker QuickStart Terminal按提示安装完成即可,如果出现问题可参考文档处理。
四、测试
4.1 数据准备
adb shell dumpsys batterystats --enable full-wake-history
通过启用完全唤醒锁定报告,电池历史记录将在几个小时内溢出。使用此选项进行短时间测试(3-4小时)。
adb shell dumpsys batterystats --reset
采集报告前将battery统计状态重置,重置命令结束后断开usb,测试结束后用获取报告命令导出统计文件包。
执行效果如下:
执行上面两条命令后,相当于清理了battery记录的日志,断开数据线,开启手机上的需要测试的APP,手动或自动跑一些用例。
4.2 导出数据
完成测试之后,连接数据线,导出数据:
Android7.0之前导出为.txt文件如bugreport.txt ,7.0之后的系统导出文件为.zip文件如bugreport.zip
adb bugreport> bugreport.txt
或者加上包名可以限制输出的数据是我们要检测的:
adb bugreport>com.Tantumap>
bugreport.zip
如下:
4.3 数据分析
启动Battery Historian,导入bugreport.txt或bugreport.zip
以下为用docker启动battery historian的示例
4.3.1 启动命令:
docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
如:
docker run -p 9998:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999 ,即设置了端口9999,映射到本地9998端口
然后打开localhost:9998,如果用localhost打不开,用启动docker时默认的IP即可。
4.3.2 上传bugreport.zip,点击提交,自动分析
4.3.3 查看分析结果
当然也可以做两次报告对比
附. Battery Historian部分参数说明
- battery_level
电量,可以看出电量的变化。
- plugged
充电状态,这一栏显示是否进行了充电,以及充电的时间范围。
- screen
屏幕是否点亮,这一点可以考虑到睡眠状态和点亮状态下电量的使用信息。
- top
该栏显示当前时刻哪个app处于最上层,就是当前手机运行的app,用来判断某个app对手机电量的影响,这样也能判断出该app的耗电量信息。该栏记录了应用在某一个时刻启动,以及运行的时间,这对我们比对不同应用对性能的影响有很大的帮助。
- wake_lock*
wake_lock 该属性是记录wake_lock模块的工作时间。是否有停止的时候等。
- running
界面的状态,主要判断是否处于idle的状态。用来判断无操作状态下电量的消耗。
- wake_lock_in
wake_lock有不同的组件,这个地方记录在某一个时刻,有哪些部件开始工作以及工作的时间。
- data_conn
数据连接方式的改变,上面的edge是说明采用的gprs的方式连接网络的。此数据可以看出手机是使用2g,3g,4g还是wifi进行数据交换的。这一栏可以看出不同的连接方式对电量使用的影响。
- status
电池状态信息,有充电,放电,未充电,已充满,未知等不同状态。 这一栏记录了电池状态的改变信息。
- phone_signal_strength
手机信号状态的改变。 这一栏记录手机信号的强弱变化图,依次来判断手机信号对电量的影响。
- health
电池健康状态的信息,这个信息一定程度上反映了这块电池使用了多长时间。 这一栏记录电池状态在何时发生改变,上面的图中电池状态一直处于good状态。
- plug
充电方式,usb或者插座,以及显示连接的时间。 这一栏显示了不同的充电方式对电量使用的影响。