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

xiaoc for PPmoney · January 27, 2019 · 1536 hits

安卓耗电作为安卓性能测试的大头,是测试,开发,乃至产品都非常关注的一个指标。一个应用不管多么好用,如果有严重的耗电问题,就离被卸载的结果不远了。那么如何测试安卓耗电呢,可以先参考笔者之前一个帖子,先做好一些准备工作,再继续阅读本文。
(参考:安卓性能测试浅谈 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环境下进行。

No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up