APP耗电量测试

现象

APP耗电,导致电池续航能力不佳,如下图,在小米MIX2和iPhone X机型上后台静默一小时各应用的耗电排行:

基本概念

相对于PC来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为重要。另外,Android的很多特性都比较耗电(如屏幕、GPS、sensor传感器、唤醒机制、CPU、连网等的使用),我们必须要慎重检查APP的电量使用,以免导致用户手机耗电发热,带来不良体验。

场景设计

 

主要的耗电场景有:

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

业务层面,用户最核心基础的模块:

  • 新增的基础逻辑,倘若入口明显,潜在较大访问,必须保证性能;
  • 活动需要,因为活动上新的逻辑,存在较大的用户访问,需尽力提升用户体验;
  • 反馈体验不好的模块;

监控分析

 

耗电原理

1、各部件单位时耗电:各部件单位时耗电信息保存在power_profile.xml文件中,如下图(以魅族MX6为例):

2、运行时长

电量(mAh)=各部件单位时耗电量(mA)*各部件运行时长(h)

数据获取

 

测试环境

 

1、恢复出厂设置,排除其他APP对耗电的影响,减少干扰因素;

2、测试过程中,不出现充电情况;

3、Android 5.0 以上的设备;

4、通过wifi连接电脑和手机;

adb tcpip 5555
adb connect 192.168.1.101 (Android设备IP地址)

 

测试步骤

 

1、首先,电脑用数据线连接手机设备,开启设备的开发者模式后,使用adb devices命令,能够看到设备在线

2、然后,默认情况下,android系统不会记录特定应用的wakelock变化,为了依照时间顺序,展示各个 wakelock的详细信息,需要先执行命令:

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

3、接着需要重置batterystats数据:

adb shell dumpsys batterystats --reset

4、接下来可以拔掉数据线,在手机上对被测试app执行相应的用例进入测试场景

5、操作完成后,电脑再次连接设备,执行命令:

adb shell dumpsys batterystats > xxx.txt
# 因为bugreport时间比较长,我们放到后面执行来减少与前面dumpsys的数据的偏差
Android 7.0及以上:
adb bugreport bugreport.zip
Android 6.0及以下:
adb bugreport > bugreport.txt

6、打开Battery Historian平台将bugreport.txt导入, 并点击submit进行分析

案例分析

 

Case1:应用后台静默,wakelock长时间未释放

如上图,在一次版本的耗电量测试中发现耗电量显著增加,通过进一步定位发现是应用中引入的某个SDK为了在后台维持心跳使用了wakelock,而在用户将应用切入后台后一直持有没有释放,随后经过跟对应的开发同学沟通进行了优化更改了实现方式去掉了wakelock,耗电量恢复正常。

Case2:应用后台静默,各种sensor持续工作

在做另外一个版本的专项测试中发现耗电量数据异常,如下图,通过测试结果分析发现是应用在后台驻留了51分钟,各种传感器也同样工作了51分钟导致耗电量显著增加,后经过排查确定是引入的推送SDK导致的,经过修改调用方式解决。

 

Case3:应用前台静默,各种sensor持续工作

通过前台静默(无任何操作)15分钟,发现耗电量比上个版本高了一倍,如下图: 应用前台静默期间加速度、重力、陀螺仪这三个传感器一直被使用。

跟开发沟通后确定是由于另外一个部门提供的SDK导致的,该SDK采集传感器数据的策略有问题导致会在应用启动后一直采集造成耗电,解决方案是按照时间窗口来采集数据, 比如每次打开APP采集5分钟传感器数据, 然后关闭传感器数据采集。

通过标准

 

 

最佳实践

 

 

附:iOS耗电量测试

上面主要是讲的关于Android的耗电量测试方法及分析,当然思路是一样的,关于iOS的耗电量测试由于还没有具体的数据,这里给出一些我调研尝试过的一些方法:

1、系统接口

iOS 10系统内置的Setting里可以查看各个APP的电池消耗,系统接口能获取到整体的电池利用率,以及充电状态。

该方案不能检测固定某一时间段内的电池精准消耗。

2、硬件检测

通过硬件PowerMonitor可以精准地获得应用的电量消耗。

步骤如下:

a. 拆开iOS设备的外壳,找到电池后面的电源针脚

b. 连接电源监控器的设备针脚

c. 运行应用

d. 测量电量消耗

该方案成本太高并不适合我们的测试工作。

3、软件工具检测

由于iOS系统的封闭性,获取功耗数据只能通过Xcode自带的Instruments工具实现,步骤如下:

1. 断开iOS设备与Mac的连接(充电时测试功耗会导致数值不准确)

2. iOS设置选项->开发者选项->Logging->Start Recording

3. 进入需要测试电量的场景操作

4. 操作完成后进入开发者选项点击Stop Recording

5. 将iOS设备和Mac连接

6. 打开Instruments,选择Energy Log

7. 选择File->Import Logged Data from Device

8. 保存的数据以时间轴输出到Instrument面板

该方案作为性能测试的补充方案具有较高的权威性,但输出的数据不直观,用于功耗测试的效果并不理想。

4、使用Battery Life进行功耗测试

该APP无需额外费用,输出结果直观(可得到毫安数及百分比)准确,可以尝试使用。

原文地址:https://www.cnblogs.com/lp475177107/p/10678569.html

时间: 2024-08-29 06:17:40

APP耗电量测试的相关文章

智能手机的耗电特征及APP耗电量测试的两种方法

文章陈述了手机发展趋势及耗电特性,集中讨论了时下最为关心的智能手机耗电问题,并介绍了测量手机软件耗电量的两种方法.此外还解释了为何运营商此前会提出收取微信的费用,心跳机制是什么. 美国著名手机公司Palm的CEO JonRubinstein曾经说过:“手机未来的发展取决于两个因数,一是手机的数据传输速度:二就是手机待机时长.” 为什么手机待机时长如此重要呢? 现 在,手机上网速度已经有很大的提升,而且还在马不停蹄的发展4G,5G.4G网络可以将手机的上网速度提高到100Mbps以上,简单的说,下

app耗电量测试工具--PowerTutor

PowerTutor是一款用来测试手机功耗的小工具,它可以只管地展示手机系统主要的组件和各种用户app产生的功耗数据.它可以统计app的屏幕功耗(LCD).CPU功耗以及WiFi和3G网络功耗,我们可以用这款工具来监控任何一款app的耗电情况. 1. PowerTutor的首页面非常简单,只有 Start Profiler.Application Viewer.System Viewer .Help 四个菜单项.使用的时候要先点击 Start Profiler 开始,这时候中间的两项就变成可用状

app测试之耗电量测试

1.耗电量场景 1)GPS定位 2)网络传输,尤其是非wifi环境 3)屏幕亮度 4)cpu频率 5)内存调度频率 6)wakelocker时间和次数 2.查看app的耗电量 3.amdroid电量测试方法(静默状态) 1)基于硬件的测试方案:电量表来测试手机耗电量 优点:精准 缺点:测的是整机,不是单个app,测试时要尽量减少系统本身和其他app的干扰,单独查看得到的数值没法得到直接的参考,也无法得知app具体哪方面的耗电量高 4.基于软件的测试方法(竞品) 借助于第三方的app来评估手机上各

iOS测试-如何指标量化app耗电量和性能XCTest Metrics

对于app端的专项测试,Android端我们可以用adb或者一些三方工具进行(例如itest)进行实时的性能监控,iOS端的话也可以用用一些三方的工具,但是需要嵌入到我们的项目当中,今天来介绍下Xcode11下的apple提供的基于XCTest对app耗电量和性能的全新框架. 资料来源:https://developer.apple.com/videos/play/wwdc2019/417/ app耗电量 app耗电量和它的性能体现是息息相关的,那么app中哪些性能项会影响耗电量呢? CPU m

产品经理怎么做app的测试?

之前有同学希望我写写产品经理怎么做测试.测试,其实就是产品上线之前我们按照一定规则对产品进行检查的工作,确保我们的产品在上线之后没有重大和明显的BUG,并保证用户可以流畅正常地使用我们的产品.我从自己的工作经历出发,谈谈自己对测试的理解,有不对的地方欢迎大家指正.本文只写了一般功能测试的流程和情况,性能测试等模块因为专业性不够,还是留待专业的同学来写吧. 一.测试谁来做? 在大部分公司里这一块会由专门的测试同学负责,然而在很多创业团队里却并没有专门的测试岗位,测试的工作就需要由产品经理或是产品新

移动app传统测试流程优化

概述 在传统的软件测试流程中,每一期需求从开发到上线都要经历从需求分析与评审.测试用例评审.开发.测试.发布的流程.其中测试包含了后台测试.前端web测试.客户端测试.后台测试又包括后台代码逻辑测试.接口测试.接口压力测试等,web端测试包含了前端页面的UI界面测试.PC与移动端浏览器兼容性测试和功能测试等,而客户端测试包含的测试项目较多,而每项测试又相对技术含量较高,从而引入了专项测试的概念.和针对客户端每期需求所做的功能测试不同,专项测试的结果虽然与产品的具体功能相关,又包含独立于产品需求功

如何做好App的测试工作

记得刚开始接触app测试时,可谓是一脸懵状,拿到一个功能不知道该测些什么,会因为测试范围确认不足.测试点考虑不全等导致线上问题,吃一堑才会长一智,栽过几次坑后就学会了如何避免.现总结App测试点如下,有遗漏欢迎各路大神随时补充- 一.背景 从十多年前的奢侈品到现在几乎人手一台的大众消费品,手机的相关技术不断发展,伴随而来的是手机应用软件的快速发展,同时给测试人员也带来了一个崭新的领域.手机的诸多特点,决定了测试手机应用软件需要特别注意的地方,如: 1)屏幕小.相比pc电脑的显示器,手机的显示区域

Android CPU耗电量测试

Android CPU耗电量测试 在测试Android app时,不仅仅要关注app的功能,也好关注app的性能指标,cpu.内存.流量.电量等.简单介绍下电量测试中的cpu耗电. 影响耗电的因素 CPU Screen Network (3G/wifi) sensor & gps WakeLock - 电量测试方法 安装电池管理的软件,管家.卫士一类的软件. 自己读取Android的内核日志,电量变化广播等. 物理设备,安培轮等 这里主要介绍读取内核文件,计算出cpu的电量消耗. 步骤主要如下:

APP非功能测试

1.移动APP启动时间测试 问题:如何获取启动时间? 答:通过adb的logcat来获取Activity启动时间.用户体验时间=Activity启动时间+启动中异步UI绘制的时间. 启动时间的测试主要涉及2种场景(启动方式):热启动和冷启动. 冷启动:手机系统中没有该APP的进程,也就是首次启动.点击APP图标,启动应用的时候没有该应用的进程存在. 热启动:手机系统中有该APP的进程,即APP从后台切换到前台.点击APP图标,启动应用的时候后台已经有该应用的进程存在了. APP启动时间测试方法: