背景
电量测试在日常测试较为困难,本文介绍基于Battery Historian的Android 电量采集,从数据采集,环境搭建,数据分析三个方面进行介绍,希望对测试和开发有帮助。
本文介绍的方法优势是
1.不需要源码,无需打桩
2.数据功能丰富,包含电量,流量,温度,进程等信息
3.适用游戏,阅读,通讯,音乐等多种类型产品
4.可对竞品分析
耗电数据采集
Android系统提供dumsys工具用于数据采集,该采集行为是机器单方面的行为,不需要依赖第三方的辅助。
采集步骤如下:
Setup1.
打开开发者模式,手机通过usb接入电脑,并在终端执行如下命令
adb shell dumpsys batterystats --enable full-wake-history
该命令行的作用是打开全量采集wakelock(唤醒锁)数据开关,有利于全面观测分析数据;默认情况下该开关为关闭,不采集wakelock数据。
Setup2.
清空历史采集数据,在终端输入如下命令
adb shell dumpsys batterystats --reset
Setup3.
拔出USB。主要有如下两个原因:
1.手机连接USB接口处于充电状态,不能真实反应app耗电量
2.batterystats是系统级别指令,会一直记录数据,且只记录最后一次充满电后的记录,因此一直连接USB采集的数据可能被覆盖
Setup4.
执行电量测试用例,业务强相关。建议测试过程中关闭其他手机app,测试时间为30分钟,时间过长导出的日志文件过大(20M以上)
Setup5.
导出电量采集数据,在终端输入如下命令:
adb bugreport > filename.txt
Setup6.
关闭全量记录wakelock数据,终端输入如下命令:
adb shell dumpsys batterystats --disable full-wake-history
保持全量记录wakelock数据,会影响手机性能,建议关闭。
至此完成了电量数据采集。
耗电数据展示
耗电数据展示采用Battery Historian,及处理导出的 filename.txt电量采集数据。
git地址如下:https://github.com/google/battery-historian
Battery Historian是由Google提供的查看电量相关信息及事件的工具,适用与android5.0(API level 21)及以上系统。该工具能够让程序开发者在时间轴上可视化系统和app级别事件,具体包括查看设备上次充满电后的各种统计信息,选择应用程序并检查影响电池的指标等。
在第一代Battery Historian中,Google使用的python作为解析工具,将日志文件转化为可视化的html文件。由于是第一代产品不论是在功能性,还是使用便捷度都存在一定的问题。因此在第二代Battery Historian,google 选择了使用 docker 容器。本文使用第二代的Battery Historian。
下文将介绍如何搭建第二代的Battery Historian环境。
Setup1.
下载安装docker,Mac环境下载地址如下
https://store.docker.com/editions/community/docker-ce-desktop-mac
下载并启动docker。
Setup2.
终端输入下列命令:
docker run -p 9998:9999 gcr.io/android-battery-historian:2.1 --port 9999
第一次安装需要花一定时间安装相关的依赖,如果成功,将输出如下信息:
2017/06/20 02:51:46 Listening on port: 9999
Setup3.
访问127.0.0.1:9998,如下图
1.jpgSetup4.
倒入耗电采集文件,展示如下:
2.jpg耗电采集分析
使用Battery Historian展示耗电数据日志,接下来就是如何分析数据。
1.选择目标app及相关数据展示,在App Selection中通过name选择测试app
2.选择测试app,可以过滤掉其他app的相关数据,如下图:
1.jpg
我们能得到那些有用的数据呢?
1.app的耗电基本信息,如下图:
Device estimated power use:app的在测试时间内耗电量
Foreground:app在前台的运行时间
2.app的流量信息,如下图:
1.jpgWifi data transferred:Wi-Fi的流量
Mobile packets transferred:手机流量
Wifi packets transferred:Wi-Fi的数据包个数
Mobile active time:手机的数据包个数
3.wakelock唤醒锁信息
1.jpg
这块和业务强相关,一般指的是后台运行的任务。如阅读屏幕常亮,后台下载等场景。
4.服务信息
1.jpg服务信息,可以查看app开启的services信息。
5.进程信息
1.jpg
经常信息,如图app有三个进程,分别是应用本身的进程,私信进程,push进程
6.网络信息
1.jpg如图红色区域,反应了测试过程中的网络变化,绿色表示网络优,橘黄色表示网络弱
7.手机温度
1.jpg反应测试阶段手机的温度,颜色约深温度越高
8.电量变化趋势
1.jpg如红色区域,蓝色点越密集,表明该时间阶段耗电较大
网友评论