目录
目录
1. 引言
2. 测试方法
2.1. 直接观察
2.2. 使用adb命令进行统计
3. 典型的耗电场景
3.1. 定位
3.2. 网络传输
3.3. 音视频播放
4. app电量分析工具
4.1. Batterystats
4.2. Battery Historian
5. 环境安装
5.1. adb命令
5.2. 安装go
5.3. 安装git
5.4. 安装python2.7
5.5. 安装java
5.6. 下载battery-historian代码及其依赖
5.7. 修改Closure compiler版本号
5.8. 编译battery-historian
5.9. 运行battery-historian
5.10. 连接设备
6. 使用Batterystats收集数据
6.1. 重置电池数据收集
6.2. 断开连接
6.3. 执行测试场景
6.4. 重新连接手机
6.5. 转储所有电池数据
6.6. 使用原始数据生成报告
6.7. 打开battery-historian
6.8. 上传报告文件
6.9. 提交
7. 使用Battery Historian图表查看数据
8. 其他 Batterystats 输出
9. 使用 Battery Historian 分析耗电情况
10. 常见问题
10.1. 使用go get下载battery-historian项目依赖失败
10.2. 使用go run编译battery-historian时失败
10.3. 上传文件后不出现submit按钮
10.4. tab页historian无法加载
10.5. js文件加载失败
电量测试就是测试app程序在移动设备上消耗的电量,正常情况下app的耗电是比较平稳的。
现在许多手机都有电量百分比显示的功能,我们可以通过在固定时间内只操作某个app,计算出电池百分比的差值。
然后卸载app,在同样的时间内不做任何操作,计算出电池百分比的差值。
两者差值进行对比,判断电量的消耗。
本文主要描述此种方式,使用Batterystats进行数据收集,然后使用Battery Historian进行数据展示。
定位,尤其是调用GPS定位
尤其是非Wifi环境
-
- 音视频播放
- app电量分析工具
batterystats 是Android SDK自带的一个工具,用于收集设备上的电池数据。
battery Historian会把收集到的电池数据以html文件的形式展示出来。
这里我们使用编译源码的方式来安装battery Historian。
adb命令包含在Android SDK中,这里通过安装 Android Studio,来安装Android SDK。
安装后,启动 Android Studio,下载 SDK(需要一定的时间)。
SDK下载完成后,在环境变量Path中添加adb命令路径。C:\Users\***\AppData\Local\Android\Sdk\platform-tools
在命令行界面输入adb version出现如下界面,说明adb配置成功
battery-historian使用go语言进行编译,所以这里要安装go。
下载地址:Downloads - go.dev
在命令行界面输入go version出现如下界面,说明go安装成功
根据向导按步安装即可,安装完以后,在桌面鼠标右键,选择Git Bash Here,出现如下页面
注意,不是python3。
安装完成后,在环境变量Path中添加python安装路径
在命令行界面输入python -V出现如下界面,说明python安装成功(注意:-V,V大写)
在命令行界面输入java -version,出现如下界面,说明安装成功
使用命令go get -d -u github.com/google/battery-historian/
下载完后,会在环境变量GOPATH的路径下看到下载的pkg,GOPATH是在安装go的时候自动配置的,默认配置地址是C:\Users\***\go,可以自定义
在编译的时候使用的工具是第三方的工具Closure compiler,我们一定要注意版本,建议修改成最稳定的20190513版本
修改setup.go文件如下:
进入上面步骤下载的battery-historian目录:
cd F:\workspace\go\pkg\mod\github.com\google\battery-historian@v0.0.0-20170519220231-d2356ba4fd5f
执行命令go run setup.go进行编译
在路径F:\workspace\go\pkg\mod\github.com\google\battery-historian@v0.0.0-20170519220231-d2356ba4fd5f下,使用命令go run cmd/battery-historian/battery-historian.go运行battery-historian,默认端口号是9999
运行完以后,在浏览器输入地址http://localhost:9999,可以看到如下界面
进行耗电量测试时,最好使用真机
- 用USB数据线连接真机与电脑
- 打开真机的开发者选项(版本号连续点击7或5次开启)
- 打开USB调试开关
- 打开命令行界面,输入adb devices,出现真机设备编号,表示设备连接成功
设备始终会在后台收集 batterystats 和其他调试信息,重置操作会清除旧的电池收集数据,如果不重置,输出内容会非常大。
adb命令:adb shell dumpsys batterystats --reset
断开设备与计算机的连接,以便仅消耗设备电池的电量
操作app,执行想要验证的场景
adb命令:adb devices
adb命令:adb shell dumpsys batterystats > D:\testresult\battery\batterystats.txt
adb命令:adb bugreport > D:\testresult\battery\bugreport.txt
此操作需要花费几分钟的时间,在完成之前,请勿断开设备连接或取消任务
在浏览器输入地址http://localhost:9999
点击 Browse,然后选择报告文件。
点击 Submit,Battery Historian 将打开根据 Batterystats 数据创建的图表。
Battery Historian 图表会显示一段时间内与电源相关的事件
当系统组件处于活动状态时,每行都会显示一个彩色条形段,以此表示正在消耗电池电量。该图表不会显示该组件使用的电量,仅表示相关应用处于活动状态。图表按类别进行整理,并显示每个类别随时间变化的一个条形,如图表的 X 轴所示。
①从下拉列表中添加其他指标。
②将光标悬停在信息图标上可查看有关每个指标的更多信息,包括图表中使用的颜色对应的键。
③将光标悬停在某个条形上可查看有关该指标的更多详细信息以及时间轴上特定点的电池统计信息。
你可以在 Battery Historian 图表下方统计信息部分的 batterystats.txt 文件中查看其他信息。
①System Stats 标签页包含系统范围的统计信息,例如电池信号电平和屏幕亮度。此信息可全面反映设备的具体情况。这对于确保没有任何外部事件影响你的测试尤为有用。
②App Stats标签页包含有关特定应用的信息。使用左侧“App Selection”中的③可以对应用列表进行排序。使用④可以查看指定应用的统计信息。
此部分可参考安卓官方文档-开发者指南
https://developer.android.google.cn/topic/performance/power/battery-historian?hl=zh-cn
- 常见问题
- 使用go get下载battery-historian项目依赖失败
执行命令go get -d -u github.com/google/battery-historian/…时,报错:
解决方式如下:
1、设置GOPROXY代理:
go env -w GOPROXY=https://goproxy.cn,direct
2、设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔:
go env -w GOPRIVATE=.gitlab.com,.gitee.com
3、Go 设置了默认的GOSUMDB=sum.golang.org,这个网站是被墙了的,用于验证包的有效性,可以通过如下命令关闭:
go env -w GOSUMDB=off
4、可以设置 GOSUMDB=“sum.golang.google.cn”, 这个是专门为国内提供的sum 验证服务:
go env -w GOSUMDB="sum.golang.google.cn"
使用命令go run setup.go编译battery-historian时,报错:
解决方式如下:
- 执行命令go mod init battery-historian@v0.0.0-20170519220231-d2356ba4fd5f
- go mod init之后,再次执行go run setup.go,报错:
根据错误提示继续执行命令:
go get github.com/google/battery-historian/bugreportutils
go get github.com/google/battery-historian/historianutils
- 再次执行go run setup.go,报错:
根据错误提示,依次手动下载closure-library、flot-axislabels
如果执行git clone始终下载不下来的话,可以直接到github上下载zip包,然后解压到third_party文件夹下
打开http://ip地址:9999页面,上传结果文件后,页面无反应,通过F12,可以看到页面的一些报错,不出现submit按钮的原因是historian-optimized.js报错
解决方式如下:
- templates\base.html,修改ds版本为<script src="https://cdn.bootcdn.net/ajax/libs/d3/3.5.9/d3.min.js"></script>
- 重新编译运行
通过F12查看到控制台有报错:google is not defined
解决方式如下:
1、这里需要打开代理(可咨询公司IT运维)
2、刷新页面
因为网络原因,页面上一些js可能加载失败
解决方式如下:
- 替换js文件地址
查找替换文件地址的网址:https://www.bootcdn.cn/
以替换jquery-ui.min.js的地址举例,jquery-ui.min.js的报错信息是:
GET http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js net::ERR_CONNECTION_ABORTED
在bootcdn中搜索jqueryui关键字,找到对应1.11.2版本号的jquery-ui.min.js链接地址
- 到C:\Users\***\go\pkg\mod\github.com\google\battery-historian@v0.0.0-20170519220231-d2356ba4fd5f\templates下替换base.html里的内容,在base.html中将jquery-ui.min.js的地址
替换成
- 重新编译运行