Android性能专项FPS测试实践(二)

2016-10-20   出处: Qtest之道  作/译者:刘俊

接上篇

测试指标&范围
搞清楚一些基础概念后,我们需要确定接下来测试需要获取的数据,本次测试除了常规的数据以外,业务方也通过程序埋点输出了一些关注的指标信息,概况起来包括但不限于以下几点:组件初始化时间(业务方埋点)APP启动时间(冷启动、热启动)CPU占用(活动、静默状态)PSS内存占用(活动、静默状态)//不能root手机,所以没有取USS电池温度变化(活动、静默状态)FPS硬件渲染掉帧数单帧渲染平均时间单帧检测处理时间(业务方埋点)OS版本:4.4、5.0、5.1、4.2、4.3、6.0、4.0品牌覆盖:华为、小米、Nexus、VIVO、奇酷、酷派、三星、锤子分辨率覆盖:1920X1080、2560X1440、1280X720、854X480业务场景:针对业务特点进行设置的测试场景,在此不表。

采样策略
在调研了网上各种方案后,个人觉得 @sandman 的方案是最符合我的预期,因此直接拿来使用。方案如下:1. 通过命令: dumpsys SurfaceFlinger | grep "|....|" 获取当前置顶窗口名称2. 历史记录127行数据,按60帧算可记录2.12S数据,从而不用频繁获取。(最终考虑设定1.6S间隔刷新数据。)3. 定期清零重新记录,避免如何分清哪些数据是上次的。命令: dumpsys SurfaceFlinger --latency-clear4. 有刷新则计算帧率,无刷新则不输出数据,有时候取到的fps为1,就是这个原因5. 每次采样数据大于等于1帧则计算FPS,丢帧率,最大帧间隔

6. 针对业务需求,增加了单帧平均渲染时间的统计



具体实现
网上的实现方式大多数都是取自于这里:https://github.com/ChromiumWebApps/chromium/blob/master/build/android/pylib/perf/surface_stats_collector.py掌握python开发的同学可以阅读和学习一下作者的采集思路。针对源代码,有篇博客做了详细的解读,感兴趣的同学可以看这里:http://blog.csdn.net/itfootball/article/details/43084527我采取的实现方式是@sandman的办法,利用shell文件在手机内部获取数据后生成csv文件,再通过adb命令pull到本地进行统计,针对我自己的需求,对shell代码略微做了调整,增加了单帧平均渲染时间的统计,运行效果像这样:

这种采样的方式最大的好处就是不用root手机,针对shell代码的解释,由于篇幅太长我就不在这里贴了,大家可以移步这里去看详细的解释:https://testerhome.com/topics/4775各位可以在这里下载完整版工具,工具包中包含了利用python生成HTML报表的代码:https://yunpan.cn/ckcypyNLDAet2 (提取码:005f)那么测试出来的报告大概可以是这样的:






声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
763° /7635 人阅读/0 条评论 发表评论

登录 后发表评论
最新文章