testerhome吧 关注:161贴子:443
  • 0回复贴,共1

一种 android 耗电量自动化测试方案

只看楼主收藏回复

# 耗电量测试现状
随着移动浪潮的兴起,耗电量越来越受到测试人员的重视,传统的手工测试方式太过于耗费人力,然而自动化的方式又存在不少问题,但是这始终难不倒聪明的人类:有人借助电流仪等仪器实现自动化,有人则通过在数据线之间接入控制元件实现自动化。。。
这里,我要说的是另外一种方式,通过借助**小米智能插座**实现耗电量的自动化测试。
小米智能插座--一种能在手机上控制插座开关的设备
-----------------------------------------------------------------------------------
这不是广告贴!!这不是广告贴!!这不是广告贴!!
-----------------------------------------------------------------------------------
# 实现原理
手机通过wifi连接电脑,adb命令通过wifi传输执行,智能插座可通过wifi执行用例打开和关闭,测试场景也可通过wifi执行用例进入。具体流程如下:
![](/uploads/photo/2017/464c17ba-ec91-4747-9f41-a855f7a130b5.png!large)
# 环境准备
1. android环境就不说了,这是必须的
2. 通过wifi连接电脑和手机:
手机和电脑连接同一局域网,手机通过usb线连接电脑
`adb tcpip 5555 `
`adb connect 192.168.1.101` (Android设备IP地址)
3. 安装米家(智能插座的控制app),智能插座连接wifi(方法见说明书)
4. 将手机通过usb线接在智能插座上
5. 编写智能插座开关用例
# 测试步骤
**1. 等待电量充满且温度降到某个指定值,使用如下命令读取电量和温度:**`adb shell dumpsys battery`
![这里写图片描述](http://img.blog.csdn.net/20171030190359580?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXJ4MTAy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
**2. 打开/关闭屏幕**
先判断屏幕状态 `adb shell "dumpsys battery | grep 'Display Power:'"` 返回结果中包含Display Power: state=OFF,则处于锁屏状态;Display Power: state=ON,屏幕处于打开状态,如果处于锁屏状态,执行`adb shell input keyevent 26`点亮屏幕(打开和关闭使用同一命令)
**3. 执行智能插座开关用例,关闭电源开关**
需要注意的是,用例执行可能失败,所以在执行用例之后,还需要判断手机是否已经断电,如还处于充电状态,可以通过再次执行用例关闭智能插座
**4. 清除之前的耗电数据并重新开始采集**
`adb shell dumpsys batterystats reset`
`adb shell dumpsys batterystats --enable full-wake-history`
**5. 执行用例进入测试场景**
**6. 计时等待**
**7. 结束采集,提取耗电数据,生成的txt文件可通过google的battery-historian转换为html报告,使用方式自行搜索。**
`adb bugreport > d:/report.txt`
`adb shell dumpsys batterystats > d:/batterystats.txt`
**8.执行智能插座开关用例,打开电源开关**
# 部分设备特殊处理
众所周知,oppo设备对于开发者来说,那体验真是没的说。使用这个方案在oppo设备上测试时,会发现数据只有前几分钟的,计时结束之后,你也无法再重新打开智能插座的开关,这是因为oppo设备的usb调试超过10分钟未使用就会自动关闭。。。
那么,oppo设备是怎么判断有没有使用usb调试呢?我们在多次的测试之后,发现它仅仅是以设备是否处于充电状态来判定。这样我们可以通过修改电池充电状态来骗过oppo的自动关闭usb功能,使用命令`adb shell dumpsys battery set ac 1`修改电池充电状态,然后在计时结束之后恢复电池状态`adb shell dumpsys battery reset`。


1楼2017-11-14 14:26回复