Android 自动化测试中性能数据获取方式及耗电测试方法与注意事项
Android 自动化测试中性能数据获取方式及耗电测试方法与注意事项
我们比较关注的Android性能数据主要有这些:CPU,内存,耗电,帧率,线程,流量
下面分别说明下这些数据的获取方式,计算方法与注意事项
- 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获取一次数据,直到测试完成,记录测试期间的平均值和峰值,后期可以形成取消曲线图方便查看。
注意事项:
a)获取数据不要太频繁,根据经验1-3S比较合适。
b)内存数据和CPU数据同时获取会导致获取的CPU数值有3%左右的增加,如果需要精确获取需要内存和CPU分开测试,做横向版本对比的话这点可以忽略。
c)需要注意应用是否有多个进程,有的话需要同时都获取并求和
d)手机多核的CPU数据会超过100%,需要使用命令: adb shell cat /proc/cpuinfo 统计” processor”出现的次数即为CPU核心数,获取手机核心数后,除以核心数:
- 内存
使用命令行:adb shell dumpsys meminfo + pro(进程名) 获取对应进程的内存性能数据,取TOTAL 行总大小。
每1S获取一次数据,直到测试完成,记录测试期间的平均值和峰值,后期可以形成取消曲线图方便查看。
注意事项:
a)获取数据不要太频繁,根据经验1-3S比较合适。
b)需要注意应用是否有多个进程,有的话需要同时都获取并求和
- 帧率
使用命令行:dumpsys gfxinfo + pro (进程名)+ reset 每次获取前需要清空一下数据
使用命令行:dumpsys gfxinfo + pro(进程名) 获取帧率 Total frames rendered 和 Janky frames 数值,使用算法 total / (total + janky) * 60 计算当次帧率数值。
每1S获取一次数据,直到测试完成,记录测试期间的平均值和最小值,后期可以形成取消曲线图方便查看。
注意事项:
a)获取数据不要太频繁,根据经验1-3S比较合适。
b)获取主进程数据即可
- 流量
监控流量可以区分流量是移动还是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 文件的数据和来计算上行与下载的总流量
测试流量总消耗同样为:测试前获取一次数据,测试后获取一次数据,两者的差值即为流量总消耗。
- 线程监控
如果从A页面跳转B页面后退出到A页面,新增的线程没有释放,则可能存在内存泄露问题;
如果反复进入退出A页面,线程重复创建而不会销毁,则也存在内存泄露问题。
对于这种问题我们改如何感知和监控测试呢,下面提供一下线程监控的思路:
SDK > 25机型:
使用命令行:adb shell ps –T 过滤获取应用的所有线程
SDK < = 25机型:
使用命令行:adb shell ps –t 过滤获取应用的所有线程
通过A,B页面线程差值,获取退出B页面的新增线程情况,对新增可疑线程进行确认;
通过反复进入退出A页面后获取应用相同和线程池线程数量来对可疑线程进行确认。
- 耗电测试
a) PC连接手机打开电池数据的获取以及重置:
adb shell dumpsys batterystats --enable full-wake-history
adb shell dumpsys batterystats --reset
b) 拔掉手机执行操作步骤
c) 执行操作后连接电脑执行如下操作:
SDK => 24机型:
adb bugreport bugreport.zip
SDK < = 24机型:
adb bugreport > bugreport.txt
d) 分析数据:安装battery historian 分析工具上传bugreport.zip或者bugreport.txt进行分析。
从这个网址进行分析工具服务安装:https://github.com/google/battery-historian
其中a-c步骤可以使用自动化case进行操作
以上就是Android常用性能测试数据的获取方法和注意事项。