移动性能测试 安卓耗电测试

xiaoc for PPmoney · 2019年01月27日 · 3323 次阅读

安卓耗电作为安卓性能测试的大头,是测试,开发,乃至产品都非常关注的一个指标。一个应用不管多么好用,如果有严重的耗电问题,就离被卸载的结果不远了。那么如何测试安卓耗电呢,可以先参考笔者之前一个帖子,先做好一些准备工作,再继续阅读本文。
(参考:安卓性能测试浅谈 https://testerhome.com/topics/17981)

一、安卓耗电原因:

测试 APP 的耗电量之前,我们先了解一下,APP 因为什么而耗电,以下几项是耗电的真凶:

1.cpu 耗电量

2.wake lock 耗电量

3.移动数据耗电量

4.wifi 流量耗电量

5.wifi 维持耗电量\wifi 扫描耗电量

6.传感器耗电量

以上几项是笔者之前从安卓系统 5.1 源码总结出来的,有兴趣的童鞋可以去查看最新版本的源码,估计不会差太多。

一般的 APP,用户停留时间不是很长的,只要关注以下几点,基本都可以保证 APP 没有严重的耗电问题:

1.没有长时间的持有 wake lock

2.没有大量的异常网络情况

3.没有长时间的使用传感器

4.APP 退出前台后,cpu 没有长时间的占用

在笔者写的安卓性能测试浅谈中提到,要做性能测试前要先确定好测试内容,设计的场景是用户经常使用的场景。

二、安卓耗电测试方法:

安卓耗电有多种测试方法:

1.在手机查看应用耗电量 (方便,但没有详细耗电信息)

2.使用性能测试 APP 查看应用耗电量 (适合测试一段时间内的应用耗电量)

3.使用 adb shell batterystats 查看应用耗电量 (有详细耗电信息,具体到 cpu, 网络,传感器等)

4.测试 APP cpu 占用率和 cpu trace 信息 (排除掉网络,传感器等耗电因素,只关注 cpu 耗电。使用 android studio 可以详细分析到底是什么操作导致耗电)

三、安卓耗电优化:

当我们发现 APP 在某段时间或者某些场景特别耗电的时候,我们可以先通过 adb shell batterystats 命令发现是否存在除 cpu 外的耗电因素。如果确定了只有 cpu 耗电,那就可以通过 android studio 抓取 trace 信息,更加精确地分析是什么操作在占用 cpu。(用 android studio 分析需要使用 debug 模式的包)

笔者在上家公司遇到一种情况是在测试环境测试 APP 时没有发现耗电的问题,但是用户反馈耗电很严重。后来排查到是在运营推送 GCM 消息的时候,APP 会持有 wake lock,并且没有释放掉。这种在测试环境很难发现的问题,只能通过用户反馈激增时间和当时的运营活动时间去联系了。

在保证 APP 没有前面说到的严重问题后,还想继续对耗电方面进行优化,可以在以下方面入手:

1.减少动画的不必要执行

2.使用 job schedule,定时执行批量事件

3.Android Doze 模式

4.减少频繁的网络请求,比如:上传埋点信息,下载图片,拉取配置等,对请求的时机进行优化,优先考虑在 wifi 环境下进行。

共收到 0 条回复 时间 点赞
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册