点击关注“有赞coder”
获取更多技术干货哦~
部门:电商测试
页面级测试是Web测试中的重要组成部分,它主要关注用户界面的展示、交互以及用户体验,在有赞以及整个业界,页面级测试往往涉及复杂的用户交互,这使得自动化测试面临很大挑战,部分工具如Selenium虽然可以模拟用户行为,但是维护成本高,随着页面功能和布局的频繁变化,维护测试脚本的成本也越来越高,且容易受前端页面变更的影响导致执行失败。
页面比对思路定位为一种视觉回归工具,用于捕获页面的屏幕截图进行比较,以检测页面在不同时间点之间的变化。相比其他UI工具Selenium、Cypress(用于模拟用户操作与页面进行交互,验证页面的功能是否按照预期运行)等,解决需要人工设置断言的问题,更聚焦在前端样式交互上。因为页面比对主要关注页面外观,避免了复杂的交互逻辑,所以维护成本更低,由于核心逻辑是捕获run的过程中页面变化的截图比对,相对UI自动化测试框架,执行速度取决于测试脚本的编写质量和所模拟的操作复杂程度,会相对比较耗时。综上所述,页面比对的思路是传统UIA的一种补充,聚焦前端交互,样式回归。
一、有赞页面级E2E质量策略
目前有赞在前端质量保障方面主要的手段包括,UITest自动化(用于回归交互类问题),云测(用于小程序主流程交互类回归)、手工测试(用于保障前端页面展示),UITest和云测最大的问题在于,不稳定,维护成本较高、且在静态页面方面只有设定的场景支持差异比较,很容易遗漏或者忽略部分场景,基于此页面比对工具变得尤为重要。
在电子商务领域,各个核心业务模块(如商品、交易、营销、会员和企助等)都涉及众多多样化的页面场景。以商品为例,同一个商品的详情页面可能会因为不同的促销活动而展现出不同的布局和内容。这些页面通常包含大量的功能点,而传统的人工测试方法很难全面覆盖并识别所有功能点的细微差异,这容易导致测试场景的遗漏,甚至造成资损。随着公司业务的快速扩展,为了有效支持业务的持续迭代,提供更加稳定和高效的测试保障能力是至关重要的。在此过程中,业务架构的重构、项目发布、大巴车发布、日常发布、前端中台化的改造升级以及页面品牌风改造都对测试工作提出了更高的要求。
为了应对这些挑战,页面比对工具,在有赞电商的各个业务领域中扮演了关键角色。页面比对以自动化的方式,通过预发环境和线上环境执行同一页面地址,截图相同时刻同一地址截图,比较渲染页面是否存在差异,帮助团队快速验证现有业务流程,确保在业务架构调整和前端改造过程中,页面的功能和表现保持一致。页面比对工具的使用显著提高了测试的覆盖率,降低了因为重复测试而产生的成本,为项目提供了强有力的支撑。
综上区别,选择BackstopJS,考虑如下几点
易于上手:BackstopJS以其简洁的配置和直观的命令行界面,让新手和经验丰富的开发人员都能快速开始使用。
专注于视觉:与市场上其他多功能测试工具不同,BackstopJS专注于视觉回归测试,确保每次改动预发和线上页面保持一致。
免费且开源:作为一个开源项目,BackstopJS开源免费,没有额外的授权费用。
技术栈无关性:BackstopJS不依赖于特定的编程语言或框架,使其成为任何技术栈的理想选择。
现代化的浏览器支持:通过Puppeteer,BackstopJS支持最新的Chrome和Firefox浏览器。
高效的测试流程:BackstopJS的测试流程高效且易于集成到现有的CI/CD流程中。
灵活的配置选项:从简单的截图比较到复杂的场景配置,BackstopJS提供了丰富的配置选项,以满足特定需求。
清晰的报告:BackstopJS生成的报告直观易懂,能够快速识别和解决视觉差异。
页面比对实现是基于BackStopJS提供的部分能力进行二次开发,通过聚合BackStopJS对外功能,进行线上和预发,线上和线上不同场景的页面比较,实现多种场景的巡检回归,页面比对运行示意图如下。
在电商的各个主要业务领域,页面比对工具已经成为前端发布流程的一个关键环节。无论是在项目迭代、技术改进还是常规的日常发布中,页面比对都是一个必不可少的卡点环节。我们通过这个工具来确保每次发布后,页面的显示效果与预期一致。一旦发现问题,我们会迅速进行核查和修正。此外,为了保持测试案例的时效性和准确性,我们不断地对其进行更新和优化,用例持续保鲜。
目前,我们的页面比对主要在电商域应用,用例1000+,节省300人日/年(相当于多招了1.5个人),帮助我们在前端发布过程中发现并拦截了100+潜在的低危&严重问题。接下来会持续覆盖商品、交易、会员、营销、装修、分销员、CRM、群团团、商赋、跨境、企助、账号等多个业务域。
随着用例的增加,更多业务域的接入,相信效果会进一步凸显。随着用例量的增加,产品的验收从“造场景”->“看场景”,直接打开页面比对验收即可,所见即所得。如商详页+营销活动商详页的场景,用例量远远超出产品验收预期。页面比对在电商测试中的广泛应用,对提升整个端的测试和发布流程的质量保障起到了关键作用。
如上场景,页面比对发现问题case-改动导致页面渲染数据丢失,Fail
付费权益卡执行成功case-改动对当前页面无影响场景,Pass
效果展示
后端数据差异导致展示不一致Fail(粉色部分代表比对失败-有差异)
页面渲染失败异常Fail(粉色部分代表比对失败-有差异)
能做什么
六、遇到的问题及如何解决
问题2:比对工具&持续集成
此外,为了解决页面比对工具与OPS大巴车(一种持续集成和持续部署的平台)执行流程之间的脱节问题,页面比对工具进行了优化,实现了与OPS大巴车的无缝对接。
现在,用户可以在OPS大巴车平台上一键触发页面比对工具的执行,工具会自动完成测试用例的运行,并将结果反馈回平台,从而简化了整个流程,提高了工作效率。
另外,页面比对工具还面临其他挑战,例如如何实现多环境的比对测试,如何支持特定的测试环境(如sc环境),以及如何处理特定平台(如有赞CAS)的登录限制,还有用例执行过程中性能等。这些问题都需要工具的开发者和使用者共同努力,通过技术创新和流程改进来解决。随着工具的不断迭代和优化,相信这些问题都将得到有效的应对。
参考资料:
https://github.com/garris/BackstopJS
https://gitcode.com/obfuscurity/backstop/overview?utm_source=artical_gitcode