现在可以使用google提供的battery-historian来测试,适用条件:5.0及以上手机。
battery-historian链接:google/battery-historian
android吧
所以的android都自带的功能
设置--->电池/电源管理/
MQC在兼容性测试、功能测试、稳定性测试中都提供了耗电量的测量,可以来MQC交流群来讨论。
附上MQC的功能简介:
自上次MQC发布功能测试和安全测试以来,已经过了几个月的时间。MQC的5大功能(兼容性测试、 稳定性测试、H5测试、功能测试、安全测试)从不同的测试维度帮助更多开发者关注并提高了App的质量。在此期间,来自五湖四海的小伙伴给我们提出很多建议与意见,每一个idea都是棒棒哒,也希望更多的小伙伴能给我们多多提建议。MQC的同学们也在此期间加班加点,再次为所有小伙伴们奉上了精心打造的一大波新功能。
1. H5测试
H5测试自上次发布以来,就帮助开发者解决了H5应用最头痛的性能问题。这次,我们对H5测试又进行了重大升级,鸟枪换炮,简直酷炫到没朋友~
新的H5测试增加了更多的性能指标,达到了13项,分别是:HTTP请求数、首资源时间、首次渲染时间、首屏时间、资源加载时间、失败资源数、网页大小、DOM节点数、重定向次数、域名数、CPU占用、内存占用、FPS。
2. 场景测试
场景测试,顾名思义,就是在特定场景下测试。通过MQC的场景测试,您可以轻松创造出不同场景条件,给App制造成分不同的“土壤”,然后看“秧苗”是否能健康成长。场景测试现支持6大场景,包括网络、屏幕、电话呼入、CPU、内存、电量,每一项场景条件您都可以随意控制。
为了使场景测试达到最好的效果,我们将场景测试结合到稳定性测试中。结合场景测试后的稳定性测试,将是您测试App的标杆。不要犹豫了,赶快到稳定性测试测起来。
3. 性能测试
MQC的性能测试可以帮助您测试App的各类性能缺陷,我们会为您绘制一张App使用过程中的性能曲线图,包括CPU、内存、流量、FPS、电量、启动时间在内的6类性能数据尽收眼底。您可以轻轻松松的看到每类性能数据的走势,波峰波谷之间可能就隐藏着您想要找的性能瓶颈。
性能测试现在已经集成到兼容性测试和功能测试中,提交您的App,来MQC体验一下吧。
4. 远程真机租用
远程真机租用,虽然叫租用,其实并不收您一分钱,MQC从来都是如此的傲娇。通过真机租用,您可以在浏览器里轻松连接远端的设备,然后可以安装您的应用,打开日志进行复现了。您在浏览器的所有操作,都会快速、实时的与远端设备同步,仿佛设备在手边一般。
5. 厂商专区
厂商专区是MQC和一些厂商合力推出的一个新功能。厂商会提供一些自己品牌下的设备,这些设备包括还未发布的型号,当然也有热门终端。开发者可以在MQC上使用这些终端进行长达30分钟的兼容性测试。这样,就能保证您的应用能够在更“广阔”的终端平台上任性翱翔。
目前厂商专区入驻一家芯片厂商:intel,一家手机厂商:魅族,后续会有更多的品牌入驻。您可以在X86架构的手机、平板,以及越来越多的魅族手机上进行测试了,行动起来吧!
6. 联系我们
网站地址:MQC 阿里移动质量中心
开发者交流旺旺群:335334143
客服邮箱:[email protected]
欢迎关注我们的微信公众号:alibaba-mqc
腾讯有一个很好用的工具,可以支持云端测试App/手游在运行过程中,实时查看耗电量、流量:
测试结束后,还可以拿到测试报告,报告中会有测试过程中的详细耗电量、流量数据,以及运行日志。
工具链接:http://wetest.qq.com/cloud/phone/step2?test=batt&from=content_zhihu
有免费额度,可以试试
另外,腾讯WeTest上面还有兼容性测试、远程调试、客户端性能测试、服务器性能测试等多种工具。感兴趣可以试一下~
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进行功耗测试
Android系统提供dumsys工具用于数据采集,该采集行为是机器单方面的行为,不需要依赖第三方的辅助。
采集步骤如下:
打开开发者模式,手机通过usb接入电脑,并在终端执行如下命令
adb shell dumpsys batterystats --enable full-wake-history
该命令行的作用是打开全量采集wakelock(唤醒锁)数据开关,有利于全面观测分析数据;默认情况下该开关为关闭,不采集wakelock数据。
清空历史采集数据,在终端输入如下命令
adb shell dumpsys batterystats --reset
拔出USB。主要有如下两个原因:
1.手机连接USB接口处于充电状态,不能真实反应app耗电量
2.batterystats是系统级别指令,会一直记录数据,且只记录最后一次充满电后的记录,因此一直连接USB采集的数据可能被覆盖
执行电量测试用例,业务强相关。建议测试过程中关闭其他手机app,测试时间为30分钟,时间过长导出的日志文件过大(20M以上)
导出电量采集数据,在终端输入如下命令:
adb bugreport > filename.txt
关闭全量记录wakelock数据,终端输入如下命令:
adb shell dumpsys batterystats --disable full-wake-history
保持全量记录wakelock数据,会影响手机性能,建议关闭。
至此完成了电量数据采集。
耗电数据展示采用Battery Historian,及处理导出的 filename.txt电量采集数据。
git地址如下:https://github.com/google/battery-historian
Battery Historian是由Google提供的查看电量相关信息及事件的工具,适用与android5.0(API level 21)及以上系统。该工具能够让程序开发者在时间轴上可视化系统和app级别事件,具体包括查看设备上次充满电后的各种统计信息,选择应用程序并检查影响电池的指标等。
在第一代Battery Historian中,Google使用的python作为解析工具,将日志文件转化为可视化的html文件。由于是第一代产品不论是在功能性,还是使用便捷度都存在一定的问题。因此在第二代Battery Historian,google 选择了使用 docker 容器。本文使用第二代的Battery Historian。
下文将介绍如何搭建第二代的Battery Historian环境。
下载安装docker,Mac环境下载地址如下
https://store.docker.com/editions/community/docker-ce-desktop-mac
下载并启动docker。
终端输入下列命令:
docker run -p 9998:9999 gcr.io/android-battery-historian:2.1 --port 9999
第一次安装需要花一定时间安装相关的依赖,如果成功,将输出如下信息:
2017/06/20 02:51:46 Listening on port: 9999
访问127.0.0.1:9998,如下图
1.jpg
倒入耗电采集文件,展示如下:
2.jpg
使用Battery Historian展示耗电数据日志,接下来就是如何分析数据。
1.选择目标app及相关数据展示,在App Selection中通过name选择测试app
1.jpg
2.选择测试app,可以过滤掉其他app的相关数据,如下图:
1.jpg
我们能得到那些有用的数据呢?
1.app的耗电基本信息,如下图:
1.jpg
Device estimated power use:app的在测试时间内耗电量
Foreground:app在前台的运行时间
2.app的流量信息,如下图:
1.jpg
Wifi data transferred:Wi-Fi的流量
Mobile packets transferred:手机流量
Wifi packets transferred:Wi-Fi的数据包个数
Mobile active time:手机的数据包个数
3.wakelock唤醒锁信息
1.jpg
这块和业务强相关,一般指的是后台运行的任务。如阅读屏幕常亮,后台下载等场景。
4.服务信息
1.jpg
服务信息,可以查看app开启的services信息。
5.进程信息
1.jpg
经常信息,如图app有三个进程,分别是应用本身的进程,私信进程,push进程
6.网络信息
1.jpg
如图红色区域,反应了测试过程中的网络变化,绿色表示网络优,橘黄色表示网络弱
7.手机温度
1.jpg
反应测试阶段手机的温度,颜色约深温度越高
8.电量变化趋势
1.jpg
如红色区域,蓝色点越密集,表明该时间阶段耗电较大
作者:龙猫六六
链接:https://www.jianshu.com/p/6b2c1110accb
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。