作者|阿里文娱科技刘丽琴
头部| CSDN下载自东方IC

响应式布局是指当屏幕尺寸发生变化时,APP的页面和组件根据规则动态自适应,实现一套代码兼容的多尺寸终端设备。响应式技术在多终端的应用减少了开发人力的投入,但对于测试来说,测试的范围需要相对扩大,多终端多大小app的质量要有保证。下面简单介绍一下优酷在响应式测试过程中沉淀的测试能力和方法。
测试面临的挑战
移动测试的主要类型包括功能测试、性能测试、稳定性测试、兼容性适配测试等。响应式测试的主要难点是兼容性测试,因为兼容性测试的范围扩大了,测试效率面临很大挑战。具体表现在以下几个方面:
1)终端类型增加。之前,要注意手机终端。现在要注意手机,Pad,折叠屏,车载大屏。
2)组件的样式很多,Phone组件的样式显示一个状态。现在,组件呈现样式的布局在不同的屏幕设备和不同的状态下会有所不同。
3)系统交互多,分屏、浮窗、平行地平线、系统换屏设置、响应式交互。
4)测试对象多,要考虑所有页面、组件、弹窗功能。
5)多业务场景交互,比如全屏播放。
技术实现分析
针对以上挑战,测试团队对优酷全端响应式改编进行了深入分析,并总结了相应的测试点。主要从以下几个方面入手:
响应式业务流程
如上图所示,响应式测试分为两部分:UI测试和数据处理逻辑测试:
1.UI显示由响应式SDK完成。
响应式SDK在不同大小的设备上提供通用的响应功能。当屏幕尺寸发生变化时,页面样式和布局的UI显示也会随之变化。这个主要关注兼容性和适应性测试。
2.数据处理逻辑由上层业务完成。
数据处理主要包括数据合并、数据过滤、数据映射和数据补全的逻辑处理,重点关注响应和非响应模式下数据处理逻辑的正确性。需要为逻辑覆盖验证构建这段数据。
另外,对于目前行业厂商支持的屏幕尺寸变化能力,需要考虑不同能力下的交互测试:
1.系统支持旋转屏幕设置;
2.Android Pad支持分屏,部分华为Pad支持平行视觉能力;
3.iPad支持浮动窗口和分屏功能。
衡量什么?
从以上分析结果,不难得出测试范围和主要测试点。还有一个很重要的部分是,响应开关需要测试,及时止损的能力已经确定。
测试范围
1)分层:SDK测试和业务层测试;
2)分体式:手机、Pad、折叠屏、车载大屏;
3)子平台:安卓、iOS;
4)子容量:响应式开/关;
5)型号分类:iPad分屏和浮动窗口能力,见下表:
主要测试点

如何衡量?
通过对响应式测试的分析,我们知道要测试哪些。下面从功能测试和兼容性测试两个方面来介绍如何测试它们。
1.功能测试
该功能主要在大屏幕上验证数据处理逻辑的正确性。数据处理逻辑主要对组件进行数据合并、数据映射、数据过滤和完成。对于数据构造,主要是通过mock的能力来实现,确认大屏幕上的逻辑处理是正确的。
同时,数据处理逻辑不能影响Phone的组件页面。这部分测试主要是回归测试,回归量比较大。为了提高测试效率,优酷创建了组件自动化测试方案。
2.组件的自动测试
借助图像识别,该测试可以避免技术改造的影响,具有良好的稳定性。从以上五个方面来解决问题,通过设计测试场景,清洗线上引流数据,自动构造所需组件数据,自动套用mock数据,基于魔镜算法服务进行相似度+配置UI对比。
本次组件测试覆盖首页/频道页面35个组件,500+正常和异常模拟文件,dailybuild高频测试,保证了响应式项目中组件测试的强度和覆盖面。
3.兼容性测试
响应式测试的难点在于兼容性测试,需要多终端、多系统、多尺寸验证UI显示,测试工作量大。优酷针对兼容性测试推出了优化的兼容性测试方案,包括型号选择和测试平台:
型号选择
测试平台
为了解决兼容性测试的成本问题,对兼容性测试进行了以下改进:
1)通用脚本可以降低脚本编写的成本,提高执行的稳定性,快速进行业务测试。
通用脚本基于方案跳转能力,解决了服务入口达到稳定的问题。提供基于元素搜索的自动滚动和点击功能,还包括一般的弹出窗口处理和登录功能。
2)长截图的能力,解决了不同分辨率、不同物理尺寸下的图像验证困难。
长截图有两种实现方式:一种是在滚动的过程中剪切长截图;滚动屏幕截图并最终拼接长屏幕截图的功能。
3)图像验证解决了人工检测的问题。
通过图像识别算法,智能筛选出可疑图像,大大减少了人工检测图像的数量。
4.其他测试
1)稳定性测试
需要测试大屏的稳定性,尤其是iPad的低端设备和Phone的内存都比较低,需要考虑这些设备的稳定性。
2)性能测试
Responsive scheme会显示更多的图片和数据,其数据分析和图像渲染过程会对APP启动、流畅度和记忆产生显著影响。
3)数据测试
首先,当响应性地旋转屏幕时,组件的行数和列数将改变。此时,需要保证在不同的数据处理下,埋置数据会正常发出:
其次,响应映射处理后的元件埋点数据的分布与映射前的元件埋点一致。
摘要
对响应式测试的功能测试和兼容性测试做了大量研究,沉淀出了组件测试方案和兼容性测试方案,既保证了响应式高质量在线测试,又提高了测试效率。

如何高效地支持后续响应测试中的持续迭代是测试面临的新挑战,主要表现在两个方面:
首先,如何确保新组件的开发支持响应能力
建立响应编码规范,静态扫描代码,对不符合规范进行报警。
二、如何高效保证sdk增量修改的质量?
响应式sdk开源后,将独立于APP而存在。对于sdk的单独测试方案,需要考虑单元测试和覆盖分析,以保证sdk的质量。


