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

Vincent · 2014年09月09日 · 最后由 Vincent 回复于 2014年09月18日 · 4041 次阅读

谢谢大家。

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

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

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
当然 可以,我今晚下班回去 第一件事 就干这个,这是大家的智慧。

匿名 #23 · 2014年09月11日

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

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册