APP性能测试之功耗测试

APP性能测试之功耗测试APP 性能测试之功耗测试功耗 通俗的理解即电流通过导体使设备运行 导体本身的电阻将电能转换为热能的过程 因此 通常功耗测试也叫电量测试 耗电量测试是指测试 App 在运行过程中消耗的能量 设备运行期间消耗能量公式 W w t U I tw 表示单位时间耗电量 U 为电池供电电压 I 为电流值 t 为测试时间通常来说 U 可以认为不变 对于平稳的测试过程 耗电量与测试时间成正比 移动设备功耗由于移动设备的电池容量限制 所以对于 App 的功耗也是需要考虑的一个方面 Andro

功耗,通俗的理解即电流通过导体使设备运行,导体本身的电阻将电能转换为热能的过程,因此,通常功耗测试也叫电量测试

耗电量测试是指测试App在运行过程中消耗的能量。设备运行期间消耗能量公式:W = w * t = U * I * t

  • w表示单位时间耗电量
  • U为电池供电电压
  • I为电流值
  • t为测试时间 通常来说U可以认为不变,对于平稳的测试过程,耗电量与测试时间成正比。

APP性能测试之功耗测试

移动设备功耗

由于移动设备的电池容量限制,所以对于App的功耗也是需要考虑的一个方面。Android的很多特性都比较耗电(如屏幕、GPS、sensor传感器、唤醒机制wakelock、CPU、连网等等),我们必须要慎重检查APP的电量使用,以免导致用户手机过度耗电发热,带来不良体验。

主要的耗电场景有:

  • screen:屏幕显示画面会耗电。
  • cpu:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电;
  • wakelock:唤醒锁,只要有应用拿到wakelock这个锁,系统就无法进入睡眠状态。频繁wakelock或者申请了wakelock没有释放,会导致耗电;
  • wifiscan和wifilock:wifiscan和wifilock也会导致手机的wifi模块处于激活状态,频繁的wifiscan或者wifilock不释放,会导致耗电;
  • sensor:传感器打开后会导致系统持续监听设备外围环境的数据变化,使用后不及时关闭,会导致耗电;
  • network:大量的数据传输,或者长时间的移动网络数据传输会导致耗电;
  • gps:gps也是一种传感器,定位中完成后没有及时关闭,会导致耗电。

Android功耗

目前很多定制Android 系统支持查看App耗电量查看,如下图所示是魅族Flyme系统的应用电量消耗图。

APP性能测试之功耗测试

Android 电量测试

API

按照Android 系统规则,设备制造商必须在/frameworks/base/core/res/res/xml/power_profile.xml中提供组件的电源配置文件,该配置文件定义了每个耗电项的具体计算单位,内容样例可以点击查看 power_profile.xml

但是从Android 4.4开始系统电量权限做了严格的限制,随着现在系统版本越来越高,使用API获取电量不太现实。

硬件工具

基于基于硬件的测试方案,使用用电量表来测试手机耗电量。该方法优点是测试比较精准,同样缺点也很明显缺点:采购成本高,测试的是整个手机,不是被测APP,测试时要减少系统本身和其他app的干扰。得到数值无法直接参考,不知道合理还是偏高。不能给出进一步参考,比如具体哪个app方面消耗电量比较多。

batterystats

使用dumpsys batterystats 命令可用来生成关于设备电池使用情况的统计数据,这些数据按唯一用户 ID (UID) 进行整理。统计信息包括以下内容:

  • 电池相关事件的历史记录
  • 设备的全局统计信息
  • 每个UID 和系统组件的大致用电量
  • 单个应用的每个数据包占用的移动网络毫秒数
  • 系统 UID汇总统计信息
  • 应用 UID 汇总统计信息

bugreport

Android为了方便开发人员分析整个系统平台和某个App在运行一段时间之内的所有信息,专门开发了bugreport工具。输入命令adb bugreport [filepath]/即可执行信息采集,并生成zip或者txt文件格式的数据文件。

Battery Historian

Batterystats 是包含在 Android 框架中的一种工具,用于收集设备上的电池数据。您可以使用 adb 将收集的电池数据转储到PC,并创建一份可使用分析的报告。Battery Historian 会将报告从 Batterystats 转换为可在浏览器中查看的 HTML报告。

注意:要使用 Batterystats 和 Battery Historian,您需要一台搭载 Android 5.0 或更高版本且启用了 USB 调试功能的移动设备。

电量数据收集

1、收集电池的历史数据

adb shell dumpsys batterystats --enable full-wake-history

2、重置电池数据

adb shell dumpsys batterystats --reset

3、断开设备与电脑的连接,以便只从设备的电池中消耗电流,然后执行指定的App进行相关操作。

4、使用命令adb bugreport导出电量信息结果,这里需要注意的是Android 7.0以上系统版本和Android 7.0以下命令不同。

Android 7.0以上系统版本:

adb bugreport C:\Users\Shuqing\Desktop\bugreport.zip

Android 7.0以下系统版本

获取bugreport信息(记录了从开机之后详细的dumpsys,dumpstate和logcat信息)

adb bugreport > [path]bugreport.txt  

获取dumpsys信息(获取系统信息:比如内存CPU,accounts,activities,wifi等信息)

adb shell dumpsys batterystats > 存放的电脑地址/batterystats.txt

或者获取指定的应用程序的dumpsys信息:

adb shell dumpsys batterystats > 包名 > 存放的电脑地址/batterystats.txt

电量数据解析

Battery Historian 一款由Google提供的Android系统电量分析工具,从手机中导出bugreport文件上传至页面,在网页中生成详细的图表数据来展示手机上各模块电量消耗过程,最后通过App数据的分析制定出相关的电量优化的方法。

1、使用Battery Historian需要在本地安装,最简单的方法使用docker安装,然后执行如下命令。

docker run -d -p 9999:9999 bhaavan/battery-historian

执行完成后使用浏览器打开链接:http://localhost(IP):9999 即可看到Battery Historian界面。

APP性能测试之功耗测试

 http://点击链接加入群聊【软件测试交流群】:https://jq..com/?_wv=1027&k=Ts5N8qumhttp://点击链接加入群聊【软件测试交流群】:https://jq..com/?_wv=1027&k=Ts5N8qumAPP性能测试之功耗测试?_wv=1027&k=Ts5N8qum

注意

上传生成的报告文件然后点击submit提交即可,如果上传后没有显示submit按钮,则需要科学上网。原因是因为web某些资源没有加载出来,其中的一些资源需要访问Google服务器,但是这些资源被墙了,无法访问。只要解决了墙的问题,submit的问题也就迎刃而解了。

如果不想在本地搭建环境,那么可以访问在线的解析平台:https://bathist.ef.lc/ (网站可能打不开,原因你懂的)

查看整体电量数据

上传数据解析之后如下图所示,可以查看到详细数据展示。

APP性能测试之功耗测试

  • 横坐标是一个时间范围。以重置为起点,获取bugreport内容时刻为终点。坐标的间隔,会随着时间的长度发生改变。
  • 纵坐标是消耗电量的具体内属性。
  • 黑色曲线是测试过程中整体的电量信息。将Show bars的勾选去掉可以只展示该曲线。

重点参数说明:

  • battery_level:剩余电量,可以看出电量的变化。
  • plugged:充电状态,这一栏显示是否进行充电,以及充电的时间范围。
  • Longwakelock:该属性记录了长时间使设备保持唤醒的进程。
  • screen:屏幕是否点亮。可以用于考虑睡眠状态和点亮状态下电量的使用信息。
  • top app:该栏显示当前时刻哪个app处于最上层,就是当前手机运行的app。用来判断某个app对手机电量的影响。
  • Coulomb charge电量消耗值,单位毫安时mAh。
  • Temperature 电池温度。
  • discharge rate 放电率,是表示电池放电快慢的一种度量。

APP性能测试之功耗测试

查看单个进程电量消耗数据

在App Selection中选择指定的App进程,即可查看该进程的耗电数据。

APP性能测试之功耗测试

iOS功耗测试

Energy Log

启动Instruments,选择你的设备和要检测的app,打开Energy Log,如下图所示:(充电然后进行电量测试不合理)

APP性能测试之功耗测试

选择设备和应用进行执行之后可以查看到电量消耗情况

APP性能测试之功耗测试

iOS电量测试

1、打开设置-开发者-Logging

APP性能测试之功耗测试

APP性能测试之功耗测试

2、打开Energy,然后点击开始录制。

APP性能测试之功耗测试

3、执行应用操作

4、完成后,返回“设置”>“开发者”>“Logging”,然后点击“stop recording”。

APP性能测试之功耗测试

5、连接设备,打开instrument,启动Energy Log,从设备导入数据。

APP性能测试之功耗测试

6、导入完成后即可查看数据信息。 

APP性能测试之功耗测试

 http://点击链接加入群聊【软件测试交流群】:https://jq..com/?_wv=1027&k=Ts5N8qumAPP性能测试之功耗测试?_wv=1027&k=Ts5N8qum

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226406.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午10:58
下一篇 2026年3月16日 下午10:59


相关推荐

  • Pygame教程(非常详细)

    Pygame教程(非常详细)文章目录教程特点阅读条件 Pygame 是什么扩展知识 Pygame 下载和安装 1 pip 包管理器安装 2 二进制安装包安装第一个 Pygame 程序初始化程序创建 Surface 对象事件监听游戏循环 PygameDispla 显示模块详解 PygameSurfac 创建图像 PygameTransf 图像变形 PygameTime 时间控制详解 1 游戏暂停 2 设置游戏 FPSPygameRec 区域位置 图解 PygameEvent 事件模块 详细示例 事件类型事件处理方法处理键盘事件处理鼠标事件 Pygame

    2026年3月17日
    3
  • SD卡 MMC卡 MS卡 TF卡

    SD卡 MMC卡 MS卡 TF卡SD卡(SecureDigitalMemoryCard)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。SD卡在24mm×32mm×2.1mm的体积内结合了SanDisk快闪记忆卡控制与MLC(MultilevelCell)技术和Toshiba(东芝)0.16u及0.13u的NAND技术,通过9针…

    2022年5月29日
    83
  • pycharm快速替换_pycharm代码追踪

    pycharm快速替换_pycharm代码追踪1.在ios中用commend+shift+R打开菜单windons系统可以试试將commend替换为control会出现这样的界面(如果你有提前选中单词的话,系统将默认被选中的单词是將被替换的单词(可以更改))2.在第二行输入需要保留的语句,然后按下回车即可替换我们会发现标记的地方发生了替换注:一定要注意自己要替换的是那些部分(那些文件(它是可以替换别的文件的语句的))!!!!千万不要替换错了(多了),很难改…

    2022年8月28日
    9
  • html设置固定长度下划线

    html设置固定长度下划线<spanstyle=”border-bottom:2pxsolidblack;width:200px;display:-moz-inline-box;display:inline-block;”>bbbb</span>

    2022年6月3日
    89
  • cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法

    cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法

    2021年12月3日
    49
  • linux查看redis版本命令(linux查看mysql版本号)

    1、先进入redis目录,如:cd/usr/local/redis-5.0.7/2、执行redis-server–version和redis-server-v或执行redis-cli–version和redis-cli-v

    2022年4月16日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号