奇技指南
我们比较关注的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-3S比较合适。
- 内存数据和CPU数据同时获取会导致获取的CPU数值有3%左右的增加,如果需要精确获取需要内存和CPU分开测试,做横向版本对比的话这点可以忽略。
- 需要注意应用是否有多个进程,有的话需要同时都获取并求和
-
手机多核的CPU数据会超过100%,需要使用命令: adb shell cat /proc/cpuinfo 统计” processor”出现的次数即为CPU核心数,获取手机核心数后,除以核心数:
2
内存
使用命令行:adb shell dumpsys meminfo + pro(进程名) 获取对应进程的内存性能数据,取TOTAL 行总大小。
每1S获取一次数据,直到测试完成,记录测试期间的平均值和峰值,后期可以形成取消曲线图方便查看。
注意事项
- 获取数据不要太频繁,根据经验1-3S比较合适。
-
需要注意应用是否有多个进程,有的话需要同时都获取并求和
3
帧率
使用命令行:dumpsys gfxinfo + pro (进程名)+ reset 每次获取前需要清空一下数据 使用命令行:dumpsys gfxinfo + pro(进程名) 获取帧率 Total frames rendered 和 Janky frames 数值,使用算法 total / (total + janky) * 60 计算当次帧率数值。每1S获取一次数据,直到测试完成,记录测试期间的平均值和最小值,后期可以形成取消曲线图方便查看。
注意事项
- 获取数据不要太频繁,根据经验1-3S比较合适。
-
获取主进程数据即可
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- 拔掉手机执行操作步骤
- 执行操作后连接电脑执行如下操作:
- 分析数据:安装battery historian 分析工具上传bugreport.zip或者bugreport.txt进行分析。
其中a-c步骤可以使用自动化case进行操作
以上就是Android常用性能测试数据的获取方法和注意事项。
想了解更多刘雷雷讲师的分享内容,后台回复“ 8”即可领取360技术嘉年华—— 测试之美第八季的视频和PPT啦
关注我们
界世的你当不
只做你的肩膀
无
360官方技术公众号
技术干货|一手资讯|精彩活动
空·