视觉回归测试
视觉测试用于评估Web应用程序跨浏览器的响应能力。通过执行视觉测试,您可以查看前端的UI / UX组件,以决定受测试的应用程序是否可以适配于各种浏览器,设备和屏幕分辨率,因为它们都提供了不同的体验。
据《The Selenium Guidebook》的作者Dave Haeffner介绍:
视觉测试是一种验证应用GUI是否正确地展示给用户的操作。测试目标是找出应用在可视化上存在的软件缺陷,例如,字体、布局和渲染问题。这使得所发现的软件缺陷可在被最终用户看到前得到修正。此外,视觉测试可用于验证页面的内容,非常适用于一些提供图形功能(例如图表、仪表盘等)的站点。如果使用传统的自动化功能测试工具,那么实现此类验证是非常具有挑战的工作。视觉测试在本质上是十分复杂的,其中需要考虑的因素很多,例如Web浏览器、操作系统、屏幕分辩、响应设计、国际化等。
之前业界里面对视觉测试的最佳实践就是: 截图比较用于视觉验证。
视觉回归测试包含以下几个主要的测试步骤:
1.对于产品版本进行截图(线上环境或者类线上环境)
首先人工完成第一个软件版本的测试并部署上线,在第二个版本需要进行测试的时候首先对第一个版本的所有界面进行截图形成基线。
2.对于新的发行版进行截图(比如测试环境)
然后对第二个需要进行测试的版本的所有界面也进行截图。
3.配对URL(忽略hostname)
通过配对URL,对所有的截图按照相同的URL进行分组。当然有时候会出现新的界面,有时候老的界面会被删除。对于新的界面就需要人工进行首次验证测试 。
4.像素级别的图形比较
对于分组之后的截图进行像素级别的比较并生产差别图。有时候为了降噪,可以只对局部关心的组件进行比较。
5.人工查看所有不同
最后通过人工审查差别图报告完成测试。
实质上,视觉回归测试就是用于图像比较的工具。比较好一点的图像比较工具还需要允许用户可以将需要忽略的区域设置为使用动态组件,从而避免误报。比如你的项目需求为开发只是改了一个CSS样式,而测试人员需要检查应该只影响一个点的布局更改时(例如,当您需要跨多个设备/屏幕分辨率进行跨浏览器测试和验证应用程序时),这将非常有用。
(例如当产品的小姐姐希望只有下图中的中间字体变化时)
(最后发现,网站中的另外的不希望变化的网页也被变化了)
比较有名的视觉回归测试的开源框架有:
商用的比较火的就是以下这家咯:
- Applitools Eyes 云服务加AI的视觉回归测试工具,Applitools公司在2017年7月获800万美元B轮投资,到目前为止,它已经获取到了1500万美元的风投,也成为了2018年全球最值得关注的100家AI公司之一。