功耗测试思路-软件篇
作者:网络转载 发布时间:[ 2015/2/3 14:46:40 ] 推荐标签:性能测试 软件测试
年前后一篇干货~以下示例调用的方法均来源于https://github.com/pdhxxj/HATT
功耗测试需要分3步
<一>获取powerprofile数据
android系统中将一些系统设定关于电池计算用到的参数均放置于power_profile.xml文件中,但是这个文件是存贮在framework-res.apk中,这样我们无法直接从外部读取到这个xml文件来着,不过可以用如下方式来获取
a)pull文件出来
import tempfile
from Core.Action.app import LocalAction
la=LocalAction()
apkpath=tempfile.gettempdir()
la.pullFile(“/system/framework/framework-res.apk”,apkpath )
b).解压缩指定文件
from _winreg import *
import os
key=OpenKey(HKEY_CLASSES_ROOT,r"ApplicationsWinRAR.exeshellopen")
value=QueryValue(key,"command")
winpath= str(value)[1:len(str(value))-6]
apk=apkpath+"framework-res.apk"
command=winpath+" e "+apk+" resxmlpower_profile.xml"
os.popen(command)
c).解析文件
xmlpath=winpath[0:len(winpath)-10]+"power_profile.xml"
f=open(xmlpath,'rb')
ff=f.read()
f.close()
print ff
<二>获取应用各个指数的时间消耗
这里需要获取的时间较多,我只列举2个比较重要的时间获取方法
a)获取cpu时间(只列出来使用到的命令,结果需自行过滤):
from Core.Utils.adb_interface import AdbInterface
shell=AdbInterface()
shell.SendShellCommand("dumpsys batterystats "+packagename)
b)获取wakelock时间(只列出来使用到的命令,结果需自行过滤):
shell.SendShellCommand("dumpsys alarm ^|grep "+packagename)
<三>计算应用的功耗
这里我提供链接(https://github.com/BaiduQA/Cafe/blob/master/testservice/src/com/baidu/cafe/remote/SystemLib.java)
计算公式在processAppBatteryUsage方法中包含
总结
说明:手机通过此配置文件统计出来的功耗数据和比例,仅能作为手机功耗比例的一个参数,会和实际的数据有一定的差异,原因如下:
1、手机实际的功耗的动态变化,不同场景消耗电流是变化的,而这种方法是采用平均电流的方式,统计方式有差别
2、对于涉及到无线(蓝牙、WiFi、3G)部分的功耗,实际环境的功耗统计是很复杂的,而我们配置的数据是在特定条件下测试数据
3、CPU的功耗是一个大的开销,但是从我们的配置方法来看,测试的数据和实际的消耗也存在差异。
4、另外,不同的手机硬件差异,即使是完全相同的测试环境,消耗电流也会存在差异
所以,这个功耗统计仅是作为对终用户的一个功耗参考,用来了解哪些模块消耗了较多的电量。
PS:android 5.0给出来了一个很好的辅助工具Battery Historian Tool 能够获取各个指数的时间消耗,结合指数的消耗,可以得到终功耗数值,工具地址:https://github.com/google/battery-historian/blob/master/historian.py
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11