Appium 【已解决】APP 自动化测试 与 功耗(耗电) 问题。

Vincent · September 09, 2014 · Last by Vincent replied at September 18, 2014 · 1283 hits

谢谢大家。

有个比较矛盾的问题,我们在做自动化测试的时候,需要考虑到功耗问题,也就是耗电量问题。

我们做自动化的时候手机必须连接 电脑,这个时候 电脑又会对 手机进行充电,从而导致 计算出来的功耗 和实际手动跑出来的差很多。

1,我们考虑过 剪断数据线的 通电线,只保留数据传输线,结果很明显是失败的

2,我们还尝试过在安卓sys文件夹下的battery 让它 disabled,同样也失败。

3,最后实在没办法想禁用BOIS 里面的 USB 供电,又担心,禁用了 鼠标 键盘直接用不了。。。

总之目前能想到的方法都尝试过了,请大家指点一二。。。谢谢。。

共收到 24 条回复 时间 点赞

有硬件动手能力的可以自己diy一个功耗仪板子来测试,有经济能力的就用专业设备-功耗仪来测试,软件方面测试一般都只是针对功耗要求不高的

@kasi
谢谢你的回答,但我跟你理解的不太一样,我们认为 任何APP产品 都会存在功耗问题。
其实说白了就是咱们的代码模块的算法问题,效率不高的代码,会导致某模块大量使用内存和CPU,这样一来从而导致一系列的问题,比如电量不够,CPU和内存消耗过剩,网络流量 等等。
我们还在尝试用 GT 和 Emmagee 来配合自动化 做内存 CPU 流量 等等得测试,目前被电量的问题block住了,很是头疼。。

#2楼 @seasoncool2011 额。。那个。。我和@kasi 都知道任何app产品都存在功耗。
但是不是任何app产品对于功耗都是有很高要求得,所以只不过是在测试得颗粒度上面有区别。然后说下方式。你可以写个service来监控,但是这个service本身就是有功耗得。故而最直接得就是如@kasi 说得用外界得安捷伦或者功耗仪来做测试是最符合你们要求得。

#2楼 @seasoncool2011 多拿几个差异较大的版本,看cpu和内存的占用,大致能判断哪块算法有问题~

#3楼 @monkey 外部的功耗仪计算总体耗电量会很精准, 但问题是他记录的是所有的app耗电, 所以这里面你自己写的测试用例什么的, 也会被统计进去, 所以不可能太精准. 另外一种支持通断电的usb hub也是可以的. 再有就是不通过usb控制手机就可以

另外一个方向是, 判断特定app激活cpu的次数, 以及对热文件,冷文件的访问统计, 这样可以给出更合理的节省耗电建议. 缺点是没法给出精准的数字.

@seveniruby 外部的功耗仪测试的非整体的app耗电的,也是根据用例来进行测试来着,专门测试出来应用耗电的 @seasoncool2011 如果非要用软件进行测试的话 可以考虑使用cafe框架 里面有关于电量一块的代码 借鉴就好了

#6楼 @kasi 功耗仪支持识别app吗 这么强大?

#7楼 @seveniruby 不支持 明显,我们用功耗仪都是开着app 动来动去 看看电流,瓦数。

#8楼 @lihuazhang 你们已经功耗仪了么?

#9楼 @monkey 嗯,有几个二手的工具,反正我不会用。。。

谢谢 大家的回答,我起初的思路很简单,用软件来实现,没有想过用 物理工具来监测。

我再找找看,希望能找到优雅的解决方式。 谢谢大家。

@monkey @kasi @mingway_hu @seveniruby
请问下大家,有 关闭掉 USB 充电,只允许 数据传输的 办法吗?

#12楼 @seasoncool2011 不能,
All you need to do is, connect your device via usb. Then you will have an alert acknowledging the connection. Then pull down the notification tray. Tap on the usb connection. Then select media transfer. Thats it. Now you can transfer files between your computer and device without charging your device. In android phones, the os is programmed to charge the phone by default, whenever it is connected to the pc via usb.

试试看这个。

@seasoncool2011 try 一下手机app来测试app的耗电情况 就不用为usb而烦恼了 手机app可以采用无线网络的方式上报结果到服务器管理平台来完成自动化数据采集

#14楼 @kasi @。@。。手机app是啥。。。这个自己也有消耗的。。感觉lz对于精准度要求很高。。。

Android可以adb connect远程连接,就没有楼主说的边测边充电的问题了,剩下的采集方式问题就可以看精度需求,卡斯大牛都说得很清楚啦,iOS的话不清楚是不是有类似的远程连接方式

@monkey 自己写一个app来进行测试的 反正可以锁定到具体的包名来进行统计 用服务可以保障数据实时上传,消耗并不影响到测试应用的消耗来着,另外统计还是可以借鉴android原生或cafe框架中关于电池一块的算法 这个精度其实跟硬件精度对比过 一般不是太大,没有精度要求,完全可以使用

#17楼 @kasi 嗯是的。。我想成os的性能了。。。app service我就是一直这样玩的。。哈哈

#17楼 @kasi 拔掉usb线, 直接使用adb的wifi模式, 这样应该也行吧. 使用app service监控电量是个不错的方式. 尽量别用adb. 说实话adb的输出太多了. 自身对电量的损耗我觉得也不少.

@cjtcwyk
这个方法太牛了,已实现无线自动化 同时 避免充电问题。。 非常感谢大家。。

分享结果:http://blog.csdn.net/zhenwenxian/article/details/5901289

#20楼 @seasoncool2011 建议能在testerhome里面分享下不?当然博文也不错。。

@lihuazhang
当然 可以,我今晚下班回去 第一件事 就干这个,这是大家的智慧。

追问一下,iOS为何要把iPad插在MAC机上?他们直接又是通过啥通信的?可否有类似adb connect这样的方法连接?

#20楼 @seasoncool2011 只要做过电视盒类的,应该都知道远程connect的方法,我公司的jenkins服务器也都是远程连手机跑测试的 😄

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up