App性能测试之耗电量

摘要:
移动应用的主要功耗场景包括:(1)CPU:复杂的计算逻辑、无休止的循环等会直接导致CPU负载过大,从而导致功耗;(2) 唤醒:只要应用程序获得唤醒锁定,系统就无法进入睡眠状态。频繁的唤醒锁或未释放的唤醒锁应用程序将导致功耗;(3) Wifican和wifilock:Wifiscan和wifiock也会激活手机的wifi模块。经常使用wifican或

手机app的主要耗电场景有:

(1)cpu:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电;
(2)wakelock:只要有应用拿到wakelock这个锁,系统就无法进入睡眠状态。频繁wakelock或者申请了wakelock没有释放,会导致耗电;
(3)wifiscan和wifilock:wifiscan和wifilock也会导致手机的wifi模块处于激活状态,频繁的wifiscan或者wifilock不释放,会导致耗电;
(4)sensor:传感器打开后会导致系统持续监听设备外围环境的数据变化,使用后不及时关闭,会导致耗电;
(5)network:大量的数据传输,或者长时间的移动网络数据传输导致radio长期处于活跃状态,会导致耗电;
(6)gps:gps也是一种传感器,定位中没有及时关闭,会导致耗电;
(7)业务层面,用户最核心基础的模块:
(8)新增的基础逻辑,倘若入口明显,潜在较大访问,必须保证性能;
(9)活动需要,因为活动上新的逻辑,存在较大的用户访问,需尽力提升用户体验;
(10)反馈体验不好的模块;

测试方法:
(1)adb connect ip:port 无线连接设备;
(2)断开并重启adb服务:adb kill-server 和 adb start-server;
(3)重置电池数据:
# 设置Historian在时间线上显示关于每个单独唤醒锁的详细信息,启用完整唤醒锁报告
# (注意,通过启用完全唤醒锁定报告,电池历史记录将在几个小时内溢出。使用此选项进行短时间测试(3-4小时))
adb shell dumpsys batterystats --enable full-wake-history

# 采集报告前将battery统计状态重置 adb shell dumpsys batterystats
--reset

(4)若已连接数据线,则拔电数据线(且测试过程中,不应出现充电情况);

(5)在手机上对目标app执行相应场景操作;

(6)操作完成后,再次连接设备,执行以下命令:

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

# 若Android 6.0及以下:
adb bugreport > bugreport.txt

数据分析:

1、对于xxx.txt文本,可直接打开;

(1)打开txt文本后,查找目标app的包名,获取app的进程uid:

App性能测试之耗电量第1张

 (2)再查找“Estimated power use (mAh)”,获取目标uid的耗电量:

App性能测试之耗电量第2张

2、对于bugreport.zip文件,可通过battery historian工具进行解析:

(1)在chrome浏览器打开:https://bathist.ef.lc/

(2)打开生成的bugreport.zip文件,再点击Submit,即可分析数据

(该文件放在运行adb命令的目录处,如C:Usersffff>adb bugreport>bugreport.zip,则文件生成在C:Usersffff 目录里)

 App性能测试之耗电量第3张

参考:https://www.jianshu.com/p/2f144bf7fe51

参考:http://www.51testing.com/html/28/n-4456728.html

免责声明:文章转载自《App性能测试之耗电量》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NVelocity系列 → NVelocity配置详解你可能不知道Windows系统下有一个UNIX子系统下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

adb monkey测试使用及分析

1. adb的用途     adb monkey是一款稳定性测试工具,通过随机点击屏幕一段时间,app不会出现崩溃,无响应,能够正常维持运行的测试。是由android系统自带应用,可以通过adb shell monkey直接使用。 2. Monkey命令参数介绍 monkey 命令执行 adb shell monkey-p com.hst.che --t...

手机上移动梦网中毒啦!病毒名字叫:程序管理 版本0.1.1 defwatch!找到删除它的简单方法!

我的手机型号:N70,S60 2rd 上移动梦网中毒啦!病毒名字叫:程序管理 版本0.1.1 defwatch 真是恶心啊,不知道是他们自己放的,还是别人放的?  病毒名字叫:程序管理 版本0.1.1 defwatch 的解决办法! 我找到一个比较简单的方法,自己就是这样把defwatch病毒删除的: 在手机开机后乱按键盘,我主要是按了方向键和左右的几个...

DVWA(一):关于DVWA的基本介绍

 一、关于DVWA的搭建及报错问题:    传送门     上面链接主要解决安装DVWA报错的问题,这里防止自己再去找,所以记一下。    (1)安装DVWA需要一个web环境,我实在win2003系统(xss_upload虚拟机)里安装的。    web环境是phpstudy2018(也可用wamp,有一个即可)    将DVWA解压好以后打开confi...

关于向日葵Linux端、win10版本交互“连接已断开”问题的解决

近日安装向日葵win10客户端与Ubuntu18客户端,安装过程简单,此处不描述。安装后注册账号,在win、U客户端正常登录,也可以手机安装手机App,过程此处不描述。有问题可以留言。在进行远程协助时遇到了通过Win10客户端控制Ubuntu客户端,以及手机App控制Ubuntu客户端时出现了“连接断开”和“正在进入远程桌面”的提示。经过一番痛苦的搜索,终...

iOS 架构-App组件化开发

前因 其实我们这个7人iOS开发团队并不适合组件化开发。原因是因为性价比低,需要花很多时间和经历去做这件事,带来的收益并不能彻底改变什么。但是因为有2~3个星期的空档期,并不是很忙;另外是可以用在一个全新的App上。所以决定想尝试下组件化开发。 所谓尝试也就是说:去尝试解决组件化开发当中的一些问题。如果能解决,并且有比较好的解决方案,那就继续下去,否则就...

Oracle 数据文件 reuse 属性 说明(转载)

Oracle 表空间 创建参数 说明 http://blog.csdn.net/tianlesoftware/archive/2011/01/27/6166928.aspx 当我们对表空间添加数据文件的时候,有一个reuse 属性。 10g的官网对这个参数的说明如下: REUSE Specify REUSE to allow Oracle to reuse...