为什么我们需要页面性能基线?
开发人员的差异性
在客户端的团队里,每个人对性能的了解程度是不一样的。不同的开发人员开发出来的页面性能的水位也不一样。除了技术上的差异,意识上的差异也不能忽视。对性能的敬畏之心不一样,也会影响开发的性能。
业务迭代的变化
随着业务的迭代,同一个页面因为需求的持续变更而会不断改造。这会让页面的性能指标有波动的出现。如果改造不注意,很容易会出现性能突然变差的情况。因为页面性能是波动性的,如果有基线数据做为参考线,则可以对存量页面的性能进行自动化分析。
页面性能的两个特性
不一致性
一个页面的性能指标怎么定主要受2个因素的影响,一个是UI元素的复杂度,一个是接口数据的复杂度。UI布局越复杂,页面渲染就会越慢。数据获取越复杂,页面就需要等待越长的时间进行渲染。因此我们不能一视同仁,所有页面都设置同样的基线。
合理波动性
鲜肉页面(新开发的页面)进入市场后,随着版本迭代,性能数据一定会有所波动。在一定范围内波动,我们认为是合理波动。
基线建设的3个目标
流程化
建立完整、合理的基线产出流程。
工具统一化
建立统一的性能分析方法论、分析工具。
标准化
建立标准化的基线算法,通过该算法计算出各页面的基线标准
3条性能基准线
性能红线
性能指标只要差到一定的程度,用户就会感受到明显的不顺畅、慢、卡。这时候,无论页面多复杂、接口多慢,都不是理由(再有价值的产品,如果体验太差对用户来说就是垃圾)。因此,我们需要设立一个性能红线,无论如何不能超过红线。
App综合性能指数
正如证券市场的道琼斯指数一样,取App所有页面性能数据的平均值作为页面综合性能指数。鲜肉页面没有历史版本的数据,没有参考的标准。由于页面复杂度存在不一致性,不能随便找找一个页面来做参考,这个时候取App综合性能指数做参考是最合适的。
页面性能基线(3个历史版本数据的均值)
鲜肉页面通过过滤流水线后,我们就将通过后页面的线上平均数据做为该页面的性能基线。
2条流水线
鲜肉过滤流水线
新开发的页面(鲜肉页面),由于复杂度不一致,我们不能准确判断开发出来的页面性能是否合理。但我们可以根据两条基准线做为参考值来估算页面性能是否合理。第一条是红线,高压线不能越。第二条是“APP综合性能指数”,如果低于这条线则合格,如果高于这条线则进入鉴别池。进入鉴别池的页面,将使用测试工具进行专项性能测试和分析。若发现问题,开发需要进行优化。
熟肉自动流水线
鲜肉页面经过过滤后,性能基本可以得到保障。但我们还需要保证,随着版本迭代这些页面性不能超过合理波动的范围。每期的版本迭代前,我们通过自动化测试拿到线下性能数据,然后与该页面的性能基线进行自动对比,计算迭代后的数据是否超过了基线的合理波动范围。若超过了,则进入鉴别池,使用测试工具进行专项性能测试和分析。若发现问题,开发需要进行优化。
两条流水线都可以建立自动化过滤系统,根据基准线进行自动化数据分析,解放测试同学的同时,保证全面地覆盖。
落地设计
根据实际的项目流程,可以分为线上实时监控和线下自动化数据分析。
线上实时监控
线上建立可视化的性能数据图表,方便进行实时监控和分析。
图片显示如下几条线
- 波动线(页面性能基线+合理波动值)
- 性能红线
- 当前版本均值
线下自动化数据分析
线下建立自动化过滤系统,根据基准线进行自动化数据分析。
鲜肉页面过滤条件:
测试数据 > APP综合指数(剔除一定范围0-500,2000+)
熟肉页面过滤条件:
测试数据 > 页面基线值(页面性能基线+合理波动值)
整体流程图
整体落地
基线的流程和方法的建设,需要开发和测试人员一起协作完成。
开发人员负责:数据埋点、问题优化分析、积累沉淀
测试人员负责:测试件、数据平台建设、测试流程建设
落地是重点也是难点。其中有2个要点。
1进行方案评审和宣导,获取团队人员的反馈,并进行改善,形成团队内的统一认知。
2合理安排落地节奏。