共计 2620 个字符,预计需要花费 7 分钟才能阅读完成。
目前对于移动设备而言,电量是很重要的一个方面。现在大家使用手机基本每天都需要充电,所以用户也非常关注耗电的问题,如果应用设计不合理导致电量大量消耗,那么对于关注耗电的用户而言,这款应用将会是首要卸载目标。因此,作为测试人员,我们也应该对应用的耗电做一些针对性测试。
Android 电量测试
1、使用硬件测试仪
如安捷伦 N6705B,这种的硬件功耗测试仪可以比较精确的测试手机的电量消耗。
使用方法:
这个方法需要拆卸手机,将手机电池拿掉,将电量表串接在手机和外部电源之间,这样手机的供电就会经过电量表,可以获取比较准确的电量数据。
优点:获取的电流数据比较精确
缺点:需要硬件投入,需要拆卸手机,只能获得手机整体的电流值,无法判断某一个 app 在哪些方面消耗电流多少。
2、基于 Battery Historian 查看电量消耗
Battery-Historian 是谷歌推出的一款专门分析 Bugreport 的工具,是谷歌 2015 年 I / O 大会上推出的一款检测运行在 android5.0(Lollipop) 及以后版本的设备上电池的相关信息和事件的工具,是一款对于分析手机状态,历史运行情况很好的可视化分析工具,当设备在使用电池的时候,它可以使开发者们看到系统级和应用级事件图表,在图表时间轴上可以缩放和平移,能够直观的看到自上一次充满电到现在设备电池的统计汇总信息,它可以选中一个应用程序来检查该应用影响电池电量的一些参数。
目前 Battery historian 有两个版本,Battery Historian 1.0 通过 python 脚本转换成 html 文件,而新版本 Battery Historian 2.0 发布了,新版本带来了很多的改进:更清晰的报告,每个应用程序的摘要,更快的执行等等。
一、安装
因为 2.0 版本的一些优势,建议大家安装 2.0 版本,安装上可能需要花费一些时间。目前网上安装教程较多,这里不做详细介绍。
二、使用方法
1、先使用 adb kill-server 断开服务,再使用 adb start-server 开启 adb 服务。这一步很重要,因为我们开发时做电量记录会打开很多可能造成冲突的东西。
2、重置电池数据收集数据,我们在开始的时候需要通过以下命令来打开电池数据的获取以及重置:
adb shell dumpsys batterystats –enable full-wake-history
adb shell dumpsys batterystats –reset
执行的效果如下:
以上即为一些初始化操作,避免了干扰数据,之后拔掉数据线。
1)执行一些想要测试的场景。
2)重新连接手机,导出 bugreport 文件 (adb bugreport > bugreport.txt)
3)打开 battery historian(localhost:9999), 将 bugreport 导入
4)结果如下
各参数意义
battery_level: 电量,可以看出电量的变化
plugged: 充电状态,这一栏显示是否进行了充电,以及充电的时间范围。
Screen: 屏幕是否点亮,这一点可以考虑到睡眠状态和点亮状态下电量的使用信息。
Top: 该栏显示当前时刻哪个 app 处于最上层,就是当前手机运行的 app,用来判断某个 app 对手机电量的影响,这样也能判断出该 app 的耗电量信息。该栏记录了应用在某一个时刻启动,以及运行的时间,这对我们比对不同应用对性能的影响有很大的帮助。
wake_lock*: wake_lock 该属性是记录 wake_lock 模块的工作时间。是否有停止的时候等。
running: 界面的状态,主要判断是否处于 idle 的状态。用来判断无操作状态下电量的消耗。
wake_lock_in: wake_lock 有不同的组件,这个地方记录在某一个时刻,有哪些部件开始工作,以及工作的时间。
Gps: gps 是否开启。
phone_in_call: 是否进行通话。
Sync: 是否跟后台同步。可以把鼠标停在某一项上面。可以看到何时 sync 同步启动的,持续时间 Duration 多久。电池容量不会显示单一行为消耗的具体电量,这里只能显示使用电池的频率和时长,你可以看分时段的剩余电量来了解具体消耗了多少电量。
Job: 后台的工作,比如服务 service 的运行。
data_conn: 数据连接方式的改变,上面的 edge 是说明采用的 gprs 的方式连接网络的。此数据可以看出手机是使用 2g,3g,4g 还是 wifi 进行数据交换的。这一栏可以看出不同的连接方式对电量使用的影响。
Status: 电池状态信息,有充电,放电,未充电,已充满,未知等不同状态。这一栏记录了电池状态的改变信息。
phone_signal_strength: 手机信号状态的改变。这一栏记录手机信号的强弱变化图,依次来判断手机信号对电量的影响。
Health: 电池健康状态的信息,这个信息一定程度上反映了这块电池使用了多长时间。这一栏记录电池状态在何时发生改变,上面的图中电池状态一直处于 good 状态。
Plug: 充电方式,usb 或者插座,以及显示连接的时间。这一栏显示了不同的充电方式对电量使用的影响。
优点:结果直观,有详细的耗电数据
缺点:不支持 5.0 以下的 android 系统
耗电模块总结:
获取数据注意事项:
获取测试结果时我们也要注意数据的有效性,避免数据误差,让数据更有效的说明问题,下面提供两种方法,来提高获取数据的有效性。
一、横向对比法:分两步测试,第一步测量手机硬件运行消耗的电量;第二步测试手机硬件和软件运行综合的耗电量。最后将两次的耗电进行对比,得出软件消耗的电量大小;
二、纵向对比法:同时进行两台手机,其中一台手机不运行软件,另一台手机运行软件;分别获得两台手机的耗电量,对比两台手机耗电量差异,得出软件消耗的电量大小。
这两种方法在测试上有一定的差异,很多应用软件都是需要移动网络的支持,而手机接收的网络信号是会随时间变化的。
因此,第一种方法的误差主要来源于手机在不同的基站网络下工作状态的变化。
第二种方法的差异则体现在两台手机本身硬件消耗的电量可能存在差异,所以需要尽可能使用同一型号,同一批次的手机。
————————————————
版权声明:本文为 CSDN 博主「霍格沃兹 - 慕漓」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cebawuyue/article/details/127509187