这是鼎叔的第二十四篇原创文章。
行业大牛和刚毕业的小白,都可以进来聊聊。
欢迎关注本人专栏和微信公众号《敏捷测试转型》,大量原创思考文章陆续推出。
创新不一定是提供了更新的技术,更有效的流程,也可以是在有限的投资下,显著降低了成本。这里分享 2015 年我和在武汉的小团队创新的例子,参与者 Kerly Yuan,还有 coenwu,felixqin 等人。
为啥要做电量仪?
所谓电量仪,就是为智能设备(尤其智能手机)的电量功耗测试提供的专业硬件测试仪器,在很多手机和应用的测试项目中,电量测试是必须达标的。
通常测试电量有软件方法和硬件方法,软件方法需要的统计电量 API,始终无法达到结果精准的要求,它的统计本质是统计各个设备元器件使用消耗的的总电量值(平均功耗 * 使用时间),因为元器件型号不同加上设备老化的影响,会存在较大误差。
硬件仪器的测试方法是统计一段时间电池放电的平均电流值,结果更容易被项目组认可。但是专业硬件设备非常昂贵,4-10 万不等,而多个项目测试可能在不同城市同步展开,无法共享硬件设备。作为预算有限的小团队,我们就萌生了自己研制一套小巧便宜的电量仪的想法,目标是批量生产,价格尽可能便宜(数百元)。最终成品如图 1 所示:
图 1 电量测试仪与手机的实物对比照
第一次尝试
我们只需要基本的电流和电压数据即可,过高的精度和其他专业设备功能对我们而言是大材小用了。电量仪实际上就是一个电流表,所以我们一开始想:采购相关的零部件,然后自己写驱动程序读数据,是否就可以搞定了?
我们在淘宝上面采购了一套可编程的电流表以及可变电源,自己组装电路,实现了一套能测试电流的设备。同时也发现一个严重问题,一秒一次的采集频率无法实现对读取电流的精度要求,第一个版本的电量仪根本没法使用,如下图 2 所示(由串口可编程电流表实现):
图 2 COM 串口可编程电流表
应用程序在一秒的时间内可以做很多事情,这个电流变化就无法在低采样率机器上体现出来,我们只好另想办法。通过分析确定电流仪的最低指标采集频率不得低于每秒 20 次,这样才能抓到接近真实的电流场景数据。
第二版 - 自己设计
然后我们就开始经常往电子市场跑,认识了一些做芯片解决方案的厂家,了解硬件相关的知识后,通过前期反复和厂家沟通,终于在 2 个月后做出了我们自己设计的电量仪产品。尽管是首版样品,但采集频率可达到 50Hz,电流精度可以达到 0.0001A,电压精度 0.01V,基本满足了我们日常测试需求了。更重要的一点,体积居然只有手机那么大。
为了省成本,我们也做了很多妥协,例如使用 COM 串口,没有使用 USB 口读取数据,且芯片通过单独的 USB 口来提供工作电压。这样不需要使用被测对象的电源,让测试数据更精准。
通过跟专业仪器测试进行对比,发现数据误差在 5% 以内,在可接受范围之内。
第二个版本在实际使用过程中也发现了一些问题,例如电压过高时测试数据不准等等,也逐步解决了。如图 3 所示:
图 3 电量测试仪第二版手板实物图
第三版,支持自动化测试的电量仪
电量的自动化测试,是不是也可以通过我们的电量仪来完成呢?
答案是肯定的。
电量自动化测试时需要脱离 USB 线,否则 USB 供电会影响电量结果。
但矛盾问题也来了:脱离 USB 后,PC 脚本无法控制手机的运行状态以及测试数据,实现不了完全自动化的要求。
这个困难可以从软件突破,在 android 系统上开发了一个读取电量的应用 PowerStat,可读取 android 手机从最近一次拔下 USB 到当前时间的电量消耗。
根据这一特点,我们在 android 手机上面实现了一个代理服务,测试前将测试任务下发给代理服务,启动测试任务的同时也启动 PowerStat 电量统计。等到测试结束,代理服务通知 PowerStat 结束电量统计,这样就可以得出本次测试的电量数据。
这种方式里 PC 测仍然无法控制手机的连接状态,于是在进行硬件设计的时候,我们开始考虑如何实现完全的自动化测试。
既然电量自动化测试关键在 USB 线,那么我们是否可以在电量仪和 PC 端之间串联一个 USB 线,将 USB 中的电信号去掉,只保留数据通讯的功能?这样就不影响手机的放电状态和电流采集了,同时也保证 PC 端和手机正常 adb 通讯。
通过实际验证这个方法是可行的。我们完全实现了电量测试的自动化,还可以通过 COM 串口指令动态实时切换电量测试开关。
图 4 电量自动化测试时序图
做硬件和做软件最大的不同是什么?
感受最深的就是做硬件产品迭代的周期很长,一个版本最少需要 2 月的时间,还需找到比较熟练的解决方案商、如果硬件产品复杂度高,可能需要更长的时间。
一开始我们以做软件的思维方式运作,导致第一版电量仪的许多重要功能没考虑到,也致使第二版迭代时要重新做 PCB 板。中间还重新换了方案解决厂家。所以做硬件的团队一开始就要把核心功能的设计考虑进去,尽量减少硬件迭代次数。
其次的感受就是,非常缺乏相关专业知识,如 PCB、CNC、A/D 转换器、贴片钽电容等专业概念,重新学习完这些知识和工作原理,才能萌发自己做方案设计的想法。
至此,我们经常实地去电子市场去了解各个硬件物料的价格、磨具加工流程、外包装制作等,把武汉广埠屯、深圳华强北等电子市场逛个遍。做硬件涉及的环节比做软件多很多,我们仅仅做一款非常简单的仪器就这么麻烦,很难想象手机这种类型的产品有多复杂。
硬件的平均成本价格和销量有密切关系,其中包括开模费用、磨具生产费用、物料采购费用等等,都和采购数量有关。一开始不要以竞品的智能硬件价格来对自己的同类产品进行评估成本,这会产生很大的误差,数量越少,单价成本就越高。通过和硬件方案提供商,包装商,店铺老板们斗智斗勇,一百台电量仪终于进入量产阶段,平均成本价格在 200 以内。
整个过程深感小白做硬件很不容易。
更详尽的自研过程技术文章,可以看 Kerly Yuan 的分享:腾讯电量仪——智能硬件测试工具尝试之路 https://mp.weixin.qq.com/s?__biz=MzIxNzEyMzIzOA==&mid=2652314517&idx=1&sn=c01d47b28e0e121cf2a59173af4d95a4&chksm=8c1d2b5cbb6aa24a3b28ae3215d3d60d803f1041d3ff41bcc8a25d63c39e68c6b60ca945e75f&scene=21#wechat_redirect