前端测试 穷团队测试耗电量出路

江城子 · 2017年11月13日 · 最后由 zsg5566 回复于 2017年12月05日 · 5041 次阅读

#【背景】
目前输出的 app 已经出现多次因为资源释放不当导致的异常耗电,严重的影响了用户在 F 产品使用中的体验。性能测试虽然引入了耗电量测试,但是当前的手段效率相对较低 (通过长时间使用来观察耗电状况)。

#【解决思路】

  • 软件监控 app 解决思路,目前已经有市面上的开源项目供使用,F 技术组也有针对的做了引入和优化,但是使用软件做换算,存在测试误差,且工具本身存在兼容性。
  • 硬件耗电电量测量,更可靠的方案是购买安捷伦,不过太贵了,以下使用一种相对便宜的解决方案来硬件测试耗电量。

#【耗电量测试要点】

  • 引用资源时,不存在过分的使用和无效的使用 — 表现在耗电量上,使用功能时有较高的使用电流。
  • 功能关闭时,释放掉运用的资源 — 表现在,关闭应用后,还有较高的电量消耗。【操作指南】 可变恒压电源一个,https://item.taobao.com/item.htm 某宝上 350 块的某产品一个。电压控制范围 0~15v。调整间隔 0.1V。电流进度 1ma。别问我为啥不考虑安捷伦,我都强调某宝上 350 了。

屏幕快照 2016-10-24 下午4.26.34.png

不过 0.1v 的电压精度,1ma 的电流进度对于测试来说已经足够了,这个误差已经比软件实现的测试方案高很多了。如下图,本身输出的电压也还是比较精准的。如下图,在 4v 的电压输出时,输出大约是 3.99。误差已经很小了。

屏幕快照 2016-10-24 下午4.26.42.png

操作步骤第一步,确定手机的正反接线柱。如图所示,参考电池连接的位置即可。电源关机连接线。

屏幕快照 2016-10-24 下午4.26.49.png

开机,确定输出的电压设置为 4v。如果不是 4v,按 9 增加电压,按 3 降低电压。需要说明下,通常手机电池的电压输出再 3.7~4.2。但是并不是绝对的,有的手机比如三星会到 4.35。另外说明一下,手机的电量是通过电压的变化来换算的,但是电压变化不是线性的,不同的厂商定义的计算方式都不同。会在不少手机上看到充满 100% 之后第一个百分点能用很久,或者最后几个百分点能用很久。确定连接无误之后,启动手机开机就可以了。如下图左侧显示的就是当前手机显示的耗电量了。开机后,启动本身耗电量是比较大的,等待一分钟左右,耗电量会处于一个稳定状态,如下图大约降到 209mA,这个值需要记下来,这是手机处于 idle 且开启屏幕的耗电量。

屏幕快照 2016-10-24 下午4.26.55.png

然后开始测试我们的 app,如测试某谷直销银行在启动时的耗电量。当然了本身启动的过程是不同的进程交汇的结果,耗电上自然也不是绝对的一条直线,而是有一定的抖动,这个阶段我们可以使用拍照方式,取下这段时间的数据求均值。如下面前三个图片,耗电量约在 360mA,减去 idle 状态的耗电 209,启动瞬间的耗电量大约为 150mA。而在加载完毕后,耗电量会有所下降。如下图四

屏幕快照 2016-10-24 下午4.27.01.png

屏幕快照 2016-10-24 下午4.27.06.png

屏幕快照 2016-10-24 下午4.27.11.png

屏幕快照 2016-10-24 下午4.27.17.png

刚已经有说明,耗电量测试主要是测两点,资源是不是有过渡使用,另外就是是否正确被释放。所以接下来就是分别测试 app 到后台的耗电状况,以及 app 退出的耗电状况。如下图,app 退出后,耗电量降到 213mA,和启动前相当。

屏幕快照 2016-10-24 下午4.27.23.png

在 app 使用中直接锁屏,等待若干秒后,耗电量下降到 5mA。不要问我为什么之前耗电不是要看半小时用多少电量么。那我得说,距离等于速度乘以时间。

屏幕快照 2016-10-24 下午4.27.30.png

iOS 的操作也是一样的,发个截图瞅瞅

屏幕快照 2016-10-24 下午4.27.36.png

共收到 36 条回复 时间 点赞

拆机好心疼,比较好奇这种资源占用翻译电量耗损的原理应该可以枚举吧,比如 cpu 一直在跑,gps 定位一直在跑,用白盒的方式来看,会不会好一点?

恒温 回复

通过 CPU GPU 屏幕使用率换算耗电量的工具也做过,总得来说还是不准。我们自己的 UI 自动化平台也会在跑自动化的时候读取电量损耗。
另外我是个怎么便宜怎么来的人,这里直接选择买个恒压电源(淘宝 130 块)2 小时完成安装,这样很便宜,对于需要快速获取(本品竞品)数据。这个东西就速度多了。

我去 做个测试连电表都整起了,至于么,不觉得麻烦啊

平安金融科技,你也说穷团队,这个世界上是不是只有 MS、google、fb、阿里才能算小康了?

槽神 回复

平安金科有钱,测试团队没钱,这很正常啊。

恒温 回复

很多团队做移动端测试实验室都是这么干的,我知道的就有 google(Dennis 说的)、Marvell(前测开 leader Tracy),拆掉电池通过继电器连充电线,这样死机或者无响应,都可以远程断电重启~
骚操作,我喜欢~

围城 回复

那是恒流源 不是电表。

槽神 回复

而且如果自己动手做个移动测试平台手机管理的,都知道一个问题,那就是长时间联线充电线,很容易造成手机过充甚至电池爆炸。干掉电池,直接恒流源操作就靠谱多了。也诚如你说的,后续直接上继电器,搞远程控制。

江城子 回复

过充?电池都拆掉了,充给谁?

槽神 回复

兄弟你能好好断句么,我的意思是说,如果做移动测试平台仍旧持续用电池供电并连着数据线的,这种方式容易过充,导致手机爆掉。

江城子 回复

😂
我就想知道真有人这么干么,好吧,我自己回答:有!

槽神 回复

我们最早测试魔盒的时候这样做过,搞了安捷伦

当年花过几万买了台安捷伦的功耗仪,准确率是比软件要高,就是比较费劲。

蒋刚毅 回复

嗯 安捷伦贵啊,买不起,所以只好一百多的恒流源自己上手了

江城子 回复

其实一般情况用万用表也够了,好的仪器就是精度高些,然后配合软件可以实时输出图表数据曲线。

蒋刚毅 回复

说白了就是:技术好谁还愿意掏钱用 oracle 啊😂

F 项目不算穷了,,之前还经常去你们那借机器。。

小胖。 回复

那是锋哥给力,后来申请到了费用支持设备采购,开始的时候都靠自己带的手机做测试。

= =最近也在整手机电量,看了楼主的帖子好心动,后来想了想,感觉还是精度稍显不够。我们这边对接过华为的终端测试实验室,mA 为单位的话,就已经精确到了小数点后三位。尤其是测试待机这种耗电量极小,耗时长的情况下,精度 1mA 还是不够。

江城子 回复

是的. 做手机实验室需要拆掉电池, 不然长期充电电池就首先坏掉. 几乎一个月就膨胀损坏. 这里面还是挺多技术活的.

@shixue33 华为就是安捷伦

剪烛 回复

嗯 是的 用什么工具 用什么方法 全看应用场景了,杀鸡没必要牛刀,可牛刀同时也砍不到大象。我这里也是针对 APP 场景耗电量 100-500mA 的,那量化间隔误差在千分之五到千分之一,针对我的需求是够了的。如果是针对终端,特别是测试待机之类的,这个误差就比较大了。

江城子 回复

恩恩,点头😀 楼主来个 um,快乐平安加个好友呀

耗电量的标准呢?耗电多少需要优化,耗电多少不需要优化?

最近打算用小米插座,控制手机防过充。_^

剪烛 回复

liuhuizhong970 微信 rodman1985

舍得花钱买表的不算穷吧。。。

一般肯花钱的上的是安捷伦,省钱怎么也得上 PowerMonitor。年初兼顾手机基础体验测试时,下面的功耗续航组主要就是用的 PowerMonitor(都是美国代购回来的),当时还带着做了 PowerMonitor 的自动化测试方案。

浮云 回复

羡慕你们老板肯支持,我们申请台服务器做 APP 打包服务器都磨了半年。

江城子 回复

其实最主要是研发认可测试结果,研发提出需要至少 PowerMonitor 的测试结果,做硬件及 rom 不同于 app,硬件数据上有精度和底线需求。

浮云 回复

PowerMonitor 的自动化测试方案? 这种硬件是怎么和自动化结合的?

槽神 回复

断电还能重启手机? 你教我 怎么重启。。。。默认来电是充电模式

心向东 回复

用港版

zsg5566 回复

主要是解决大部分功耗 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 电流数据图

浮云 回复

好完整的介绍,赞!

浮云 回复

很详细,谢谢! 有时间尝试做下这套

codeskyblue [该话题已被删除] 中提及了此贴 12月09日 16:17
codeskyblue 通过电池电量评测安卓 App 的耗电水平 中提及了此贴 12月09日 19:39
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册