canvas/webgl测试数据稳定性专项优化优秀实践
Posted 腾讯移动品质中心TMQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了canvas/webgl测试数据稳定性专项优化优秀实践相关的知识,希望对你有一定的参考价值。
背景
Canvas/webgl测试的是浏览器内核的渲染能力。通常会选取一些业界常用的测试页面作为测试用例,例如:
图1webgl测试页面截图
Canvas/webgl测试从列入TBS(腾讯浏览服务)上线前性能测试以来,就一直存在测试数据不稳定问题。初期采用购置小风扇、增加冷却时间、编写重测页面等方法解决问题,效果并不理想。时不时还是会出现测试结果发现性能落后,但开发跟进分析后发现是测试数据波动导致的误报的情况。这种情况对测试和开发同学的工作效率都造成影响。
问题定位
TBS(腾讯浏览服务英文缩写)3.3的上线前性能测试再次测得webgl落后。webglspacerocks用例落后上一版本(TBS3.2)2.59帧。但经过开发定位问题,发现依然是数据波动导致的误报。
表1webgl性能测试结果
这次,开发同学和测试同学决定刨根问底找到影响数据波动的根本原因。
通过perfMon性能监控工具,我们发现发热导致的cpu降频和cpu关闭是影响测试结果的主要原因。
图2开发定位问题邮件内容
解决办法
为此,测试组专门购置了性能优越的笔记本散热风扇来给测试手机降温。
图3笔记本散热风扇
初步验证发现效果良好(下面一段文字为邮件内容节选):
“本周blink3.0 canvas/webgl性能日常监控结果:
数据基本稳定。在增加了散热器与小风扇辅助散热之后,三部手机的测试结果均接近3、4月份结果且多多少少有所提升,无重测项。”
优化效果
日常监控历史记录可以看到优化前后的效果:
1、6个用例的波动范围都不同程度缩小。其中GUIMark3 GM3_JS_Compute的波动从9帧缩小为0.2帧。
图4优化前后数据波动范围对比
2、之前经常要重测的用例,如今不再需要重测。目前重测概率为0。
测试项目 |
优化前重测概率 |
优化后重测概率 |
GM3_JS_Bitmap |
0% |
0% |
GM3_JS_Vector |
0% |
0% |
GM3_JS_Compute |
20% |
0% |
webgl_shader2 |
0% |
0% |
webgl_materials |
24% |
0% |
webglspacerocks |
40% |
0% |
表2优化前后重测记录
注:当监控数据和上一次相差2帧或以上时需要重测。
规范“有效落后”门限值
注:达到该门限值才认为是有效落后,开发跟进分析。
6个用例当中,GUIMark3 GM3_JS_Compute的波动最大。所以我们对GUIMark3 GM3_JS_Compute进行了4次测试(每次10组测试值)验证数据波动范围:
测试组 |
GUIMark3 GM3_JS_Compute |
|||
3min-1 |
3min-2 |
6min-1 |
6min-2 |
|
平均 |
53.607 |
53.266 |
52.785 |
53.773 |
最大最小差 |
0.9 |
0.99 |
0.87 |
0.92 |
最大 |
53.95 |
53.74 |
53.11 |
54.19 |
最小 |
53.05 |
52.75 |
52.24 |
53.27 |
表3优化后数据波动情况
图5优化后数据波动情况
结论:
1、单次测试10组数据的最大最小值偏差月1帧;
2、多次测试10组数据的平均值波动在0.5帧左右;
3、多次测试所有数据的最大最小值偏差1.95帧。
基于以上测试结果,制定不同用例的“有效落后”门限值如下:
测试项目 |
“有效落后”门限值 |
GM3_JS_Bitmap |
1帧 |
GM3_JS_Vector |
1帧 |
GM3_JS_Compute |
2帧 |
webgl_shader2 |
1帧 |
webgl_materials |
1帧 |
webglspacerocks |
1帧 |
表5根据数据波动验证结果制定“有效落后”门限值
长按指纹识别图中的二维码,获取更多测试干货分享!
以上是关于canvas/webgl测试数据稳定性专项优化优秀实践的主要内容,如果未能解决你的问题,请参考以下文章