#【背景】
目前输出的 app 已经出现多次因为资源释放不当导致的异常耗电,严重的影响了用户在 F 产品使用中的体验。性能测试虽然引入了耗电量测试,但是当前的手段效率相对较低 (通过长时间使用来观察耗电状况)。
#【解决思路】
#【耗电量测试要点】
不过 0.1v 的电压精度,1ma 的电流进度对于测试来说已经足够了,这个误差已经比软件实现的测试方案高很多了。如下图,本身输出的电压也还是比较精准的。如下图,在 4v 的电压输出时,输出大约是 3.99。误差已经很小了。
操作步骤第一步,确定手机的正反接线柱。如图所示,参考电池连接的位置即可。电源关机连接线。
开机,确定输出的电压设置为 4v。如果不是 4v,按 9 增加电压,按 3 降低电压。需要说明下,通常手机电池的电压输出再 3.7~4.2。但是并不是绝对的,有的手机比如三星会到 4.35。另外说明一下,手机的电量是通过电压的变化来换算的,但是电压变化不是线性的,不同的厂商定义的计算方式都不同。会在不少手机上看到充满 100% 之后第一个百分点能用很久,或者最后几个百分点能用很久。确定连接无误之后,启动手机开机就可以了。如下图左侧显示的就是当前手机显示的耗电量了。开机后,启动本身耗电量是比较大的,等待一分钟左右,耗电量会处于一个稳定状态,如下图大约降到 209mA,这个值需要记下来,这是手机处于 idle 且开启屏幕的耗电量。
然后开始测试我们的 app,如测试某谷直销银行在启动时的耗电量。当然了本身启动的过程是不同的进程交汇的结果,耗电上自然也不是绝对的一条直线,而是有一定的抖动,这个阶段我们可以使用拍照方式,取下这段时间的数据求均值。如下面前三个图片,耗电量约在 360mA,减去 idle 状态的耗电 209,启动瞬间的耗电量大约为 150mA。而在加载完毕后,耗电量会有所下降。如下图四
刚已经有说明,耗电量测试主要是测两点,资源是不是有过渡使用,另外就是是否正确被释放。所以接下来就是分别测试 app 到后台的耗电状况,以及 app 退出的耗电状况。如下图,app 退出后,耗电量降到 213mA,和启动前相当。
在 app 使用中直接锁屏,等待若干秒后,耗电量下降到 5mA。不要问我为什么之前耗电不是要看半小时用多少电量么。那我得说,距离等于速度乘以时间。
iOS 的操作也是一样的,发个截图瞅瞅
拆机好心疼,比较好奇这种资源占用翻译电量耗损的原理应该可以枚举吧,比如 cpu 一直在跑,gps 定位一直在跑,用白盒的方式来看,会不会好一点?
通过 CPU GPU 屏幕使用率换算耗电量的工具也做过,总得来说还是不准。我们自己的 UI 自动化平台也会在跑自动化的时候读取电量损耗。
另外我是个怎么便宜怎么来的人,这里直接选择买个恒压电源(淘宝 130 块)2 小时完成安装,这样很便宜,对于需要快速获取(本品竞品)数据。这个东西就速度多了。
我去 做个测试连电表都整起了,至于么,不觉得麻烦啊
平安金融科技,你也说穷团队,这个世界上是不是只有 MS、google、fb、阿里才能算小康了?
很多团队做移动端测试实验室都是这么干的,我知道的就有 google(Dennis 说的)、Marvell(前测开 leader Tracy),拆掉电池通过继电器连充电线,这样死机或者无响应,都可以远程断电重启~
骚操作,我喜欢~
而且如果自己动手做个移动测试平台手机管理的,都知道一个问题,那就是长时间联线充电线,很容易造成手机过充甚至电池爆炸。干掉电池,直接恒流源操作就靠谱多了。也诚如你说的,后续直接上继电器,搞远程控制。
当年花过几万买了台安捷伦的功耗仪,准确率是比软件要高,就是比较费劲。
F 项目不算穷了,,之前还经常去你们那借机器。。
= =最近也在整手机电量,看了楼主的帖子好心动,后来想了想,感觉还是精度稍显不够。我们这边对接过华为的终端测试实验室,mA 为单位的话,就已经精确到了小数点后三位。尤其是测试待机这种耗电量极小,耗时长的情况下,精度 1mA 还是不够。
@shixue33 华为就是安捷伦
嗯 是的 用什么工具 用什么方法 全看应用场景了,杀鸡没必要牛刀,可牛刀同时也砍不到大象。我这里也是针对 APP 场景耗电量 100-500mA 的,那量化间隔误差在千分之五到千分之一,针对我的需求是够了的。如果是针对终端,特别是测试待机之类的,这个误差就比较大了。
耗电量的标准呢?耗电多少需要优化,耗电多少不需要优化?
舍得花钱买表的不算穷吧。。。
一般肯花钱的上的是安捷伦,省钱怎么也得上 PowerMonitor。年初兼顾手机基础体验测试时,下面的功耗续航组主要就是用的 PowerMonitor(都是美国代购回来的),当时还带着做了 PowerMonitor 的自动化测试方案。
其实最主要是研发认可测试结果,研发提出需要至少 PowerMonitor 的测试结果,做硬件及 rom 不同于 app,硬件数据上有精度和底线需求。
主要是解决大部分功耗 case 的自动化:PowerMonitor 自身控制脚本 + 手机端 case 后台操作脚本(uiautomator、shell)+ 数据线加继电器改造(继电器控制通断脚本)+ 报告统计脚本。
主要执行步骤:
1、初始化 PowerMonitor 电源参数(由外部变量状态控制监控数据的存储,最初用的环境变量后改成了文件便于多设备并发,监控文件已 csv 保存),初始化手机的必要设置及环境状态
2、调度用的主脚本用于执行用例后断开数据线的继电器,之后修改文件内变量(通知 PowerMonitor 开始保存监控数据到 case 结果文件夹)
3、等待用例操作结束 (预调试好的等待时间),通知 PowerMonitor 停止记录并恢复数据线连接及获取 case 执行结果和 log 到 case 结果文件夹
4、回到第二步按照配置的 loop 和 case list 完成测试
5、此时的测试结果是分 case 文件夹保存的,包括 PowerMonitor 监控结果、case 执行结果和 log;通过报告脚本统计分析生成报告。(传入可配置的 goal 值 csv 文件用于统计)
当时试跑报告形式如下,可选 case 及 loop 数查看该次的 PowerMonitor 电流数据图