51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1672|回复: 1
打印 上一主题 下一主题

功耗测试思路(软件相关)

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:07
  • 签到天数: 11 天

    连续签到: 2 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2017-8-15 11:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    以下示例调用的方法均来源于https://github.com/pdhxxj/HATT
    功耗测试需要分3步获取powerprofile数据"><一>获取powerprofile数据android系统中将一些系统设定关于电池计算用到的参数均放置于power_profile.xml文件中,但是这个文件是存贮在framework-res.apk中,这样我们无法直接从外部读取到这个xml文件来着,不过可以用如下方式来获取
    a)pull文件出来
    1. import tempfile
    2. from Core.Action.app import LocalAction
    3. la=LocalAction()
    4. apkpath=tempfile.gettempdir()
    5. la.pullFile(“/system/framework/framework-res.apk”,apkpath )
    复制代码

    b).解压缩指定文件
    1. from _winreg import *
    2. import os
    3. key=OpenKey(HKEY_CLASSES_ROOT,r"Applications\WinRAR.exe\shell\open")
    4. value=QueryValue(key,"command")
    5. winpath= str(value)[1:len(str(value))-6]
    6. apk=apkpath+"\framework-res.apk"
    7. command=winpath+" e "+apk+" res\xml\power_profile.xml"
    8. os.popen(command)
    复制代码

    c).解析文件
    1. xmlpath=winpath[0:len(winpath)-10]+"power_profile.xml"
    2. f=open(xmlpath,'rb')
    3. ff=f.read()
    4. f.close()
    5. print ff
    复制代码

    获取应用各个指数的时间消耗"><二>获取应用各个指数的时间消耗这里需要获取的时间较多,我只列举2个比较重要的时间获取方法
    a)获取cpu时间(只列出来使用到的命令,结果需自行过滤):
    1. from Core.Utils.adb_interface import AdbInterface
    2. shell=AdbInterface()
    3. shell.SendShellCommand("dumpsys batterystats "+packagename)
    复制代码

    b)获取wakelock时间(只列出来使用到的命令,结果需自行过滤):
    1. 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





    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-20 22:24 , Processed in 0.062843 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表