Android性能数据获取与耗电测试方法

·  阅读 910
Android性能数据获取与耗电测试方法
原文链接: mp.weixin.qq.com

奇技指南

我们比较关注的Android性能数据主要有这些:CPU,内存,耗电,帧率,线程,流量

本文将分别说明下这些数据的获取方式,计算方法与注意事项

1

CPU

自动化获取需要区分ROM,否则会出现显示数据不全的问题 SDK > 25机型: 使用命令行:adb shell  top -s 1 -o %CPU -o ARGS -n 1 过滤获取对应进程的CPU性能数据 SDK < = 25机型:

使用命令行:adb shell  top -n 1 获取对应进程的CPU性能数据

每1S获取一次数据,直到测试完成,记录测试期间的平均值和峰值,后期可以形成取消曲线图方便查看。

注意事项

  1. 获取数据不要太频繁,根据经验1-3S比较合适。
  2. 内存数据和CPU数据同时获取会导致获取的CPU数值有3%左右的增加,如果需要精确获取需要内存和CPU分开测试,做横向版本对比的话这点可以忽略。
  3. 需要注意应用是否有多个进程,有的话需要同时都获取并求和
  4. 手机多核的CPU数据会超过100%,需要使用命令: adb shell cat /proc/cpuinfo 统计” processor”出现的次数即为CPU核心数,获取手机核心数后,除以核心数:

2

内存

使用命令行:adb shell dumpsys meminfo + pro(进程名) 获取对应进程的内存性能数据,取TOTAL 行总大小。

每1S获取一次数据,直到测试完成,记录测试期间的平均值和峰值,后期可以形成取消曲线图方便查看。

注意事项

  1. 获取数据不要太频繁,根据经验1-3S比较合适。
  2. 需要注意应用是否有多个进程,有的话需要同时都获取并求和

3

帧率

使用命令行:dumpsys gfxinfo  +  pro (进程名)+  reset 每次获取前需要清空一下数据 使用命令行:dumpsys gfxinfo  + pro(进程名) 获取帧率 Total frames rendered 和 Janky frames 数值,使用算法  total / (total + janky) * 60 计算当次帧率数值。

每1S获取一次数据,直到测试完成,记录测试期间的平均值和最小值,后期可以形成取消曲线图方便查看。

注意事项

  1. 获取数据不要太频繁,根据经验1-3S比较合适。
  2. 获取主进程数据即可

4

流量

监控流量可以区分流量是移动还是wifi,不过我们一般只要关注总流量即可,获取计算方法:

//uid为被测试应用的uid

long up = TrafficStats.getUidTxBytes(uid);

long receive =TrafficStats.getUidRxBytes(uid); 总使用流量为:up(上传) + receive(下载) 测试流量总消耗为:测试前获取一次数据,测试后获取一次数据,两者的差值即为流量总消耗。 自动化测试时,需要添加if else判断,如果上面方法获取的数据为 -1,需要使用如下方法去获取数据: 方法:getTotalBytesManual(uid); 方法实现主要代码:

File uidFileDir = new File("/proc/uid_stat/" + String.valueOf(uid));

File uidActualFileReceived = new File(uidFileDir, "tcp_rcv");

File uidActualFileSent = new File(uidFileDir, "tcp_snd"); 通过读取uidActualFileReceived 和uidActualFileSent 文件的数据和来计算上行与下载的总流量

测试流量总消耗同样为:测试前获取一次数据,测试后获取一次数据,两者的差值即为流量总消耗。

5

线程监控

如果从A页面跳转B页面后退出到A页面,新增的线程没有释放,则可能存在内存泄露问题;

如果反复进入退出A页面,线程重复创建而不会销毁,则也存在内存泄露问题。

对于这种问题我们改如何感知和监控测试呢,下面提供一下线程监控的思路: SDK > 25机型: 使用命令行:adb  shell  ps  –T 过滤获取应用的所有线程 SDK < = 25机型: 使用命令行:adb  shell  ps  –t 过滤获取应用的所有线程 通过A,B页面线程差值,获取退出B页面的新增线程情况,对新增可疑线程进行确认;

通过反复进入退出A页面后获取应用相同和线程池线程数量来对可疑线程进行确认。

6

耗电测试

  • PC连接手机打开电池数据的获取以及重置:

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

      adb shell dumpsys batterystats --reset
  • 拔掉手机执行操作步骤
  • 执行操作后连接电脑执行如下操作:
         SDK => 24机型:          adb bugreport bugreport.zip          SDK < = 24机型:          adb bugreport > bugreport.txt
  • 分析数据:安装battery historian 分析工具上传bugreport.zip或者bugreport.txt进行分析。
从这个网址进行分析工具服务安装:https://github.com/google/battery-historian

其中a-c步骤可以使用自动化case进行操作

以上就是Android常用性能测试数据的获取方法和注意事项。

想了解更多刘雷雷讲师的分享内容,后台回复“ 8”即可领取360技术嘉年华—— 测试之美第八季的视频和PPT啦

关注我们

界世的你当不

只做你的肩膀

 360官方技术公众号 

技术干货|一手资讯|精彩活动

空·

分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改