视觉回归测试(Visual Regression Testing)是一种软件测试技术,专注于检测Web应用程序或网站的用户界面中的视觉变化和差异。
它涉及在不同的开发阶段捕获网页的屏幕截图或图像,并进行比较,用来识别由代码更改或更新引起的任何意外的视觉回归。
视觉回归测试之所以重要有几个原因:
一般来说,视觉回归测试是如何工作的?
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036
就市场上的工具而言,可以分为付费和免费两类:
在本文中,我将更详细地介绍如何使用Playwright运行这些测试。
Playwright是Microsoft开发的开源自动化库,专为测试和自动化 Web 应用程序而设计,特别针对现代 Web 浏览器。
Playwright 提供了功能强大且用户友好的 API,允许开发人员和测试人员与网页交互、模拟用户操作并验证应用程序的行为。
专门针对视觉测试,Playwright 提供了一个内置功能来执行这些测试,使用像素匹配库作为比较引擎。
此外,Playwright 允许在不同的屏幕尺寸和不同的浏览器中执行这些测试,能够覆盖每个场景。这个是在playwright.config(https://playwright.dev/docs/test-configuration)文件中配置的。
这个库负责分析和比较测试期间捕获的屏幕截图与基线图像,用来检测任何视觉差异或回归。
它计算图像之间的像素级差异并生成突出显示变化的差异图像。
此外还有其他库,例如 Resemble.js(在 BackstopJS 中使用)和 Blink-diff,但不同的是,pixelmatch大约有150行代码,没有依赖性,并且适用于图像数据的原始类型数组,因此它快速且可靠可以在任何环境下使用。
当团队已将Playwright用于其他测试级别时,在这些测试中使用Playwright非常有用。
但如果这是你第一次使用它,应该按照他们的文档使用TypeScript安装 Playwright(https://playwright.dev/docs/intro)。
另外,请确保安装了NodeJS和 IDE,例如Visual Studio Code。
如果使用的是yarn,为了安装Playwright,请考虑运行:
yarn create playwright
之后,创建一个名为example.spec.ts的 .spec 文件,例如:
import { test, expect } from '@playwright/test';
test('example test', async ({ page }) => {
await page.goto('https://playwright.dev');
await expect(page).toHaveScreenshot();
});
为了执行该脚本,请运行:
npx playwright test
当你第一次运行此脚本时,将遇到测试运行程序的以下输出:
Error: A snapshot doesn't exist at example.spec.ts-snapshots/example-test-1-chromium-darwin.png, writing actual.
发生这种情况的原因是,它获取该页面的屏幕截图,然后当它尝试与基本屏幕截图进行比较时,它在本地没有找到具有该名称的屏幕截图。因此,它保存了屏幕截图,以便在接下来的测试执行中进行比较。
将来,如果再次运行测试但失败,则意味着两个屏幕截图之间存在视觉差异,你必须评估这是否是由于代码中的错误或有意更改造成的。
如果这是有意更改,运行带有标志— update-snapshots 的执行命令:
npx playwright test --update-snapshots
屏幕截图命名法如何运作?
请记住,必须具有与CI(持续集成)系统相同的操作系统 (OS),否则需要在 Docker 上运行这些测试,这是因为操作系统和CI中使用的屏幕可能有所不同。
在我之前提供的示例中,脚本包括对整个页面进行屏幕截图并将其与已存在的屏幕截图进行比较。
但这只是一个示例,你也可能只想测试页面的特定元素。为此,应该使用Playwright定位器。
此外,还可以设置各种可以修改由 Pixelmatch 提供的toHaveScreenshot()行为的选项:
以maxDiffPixels选项为例,语法为:
await expect(page).toHaveScreenshot({ maxDiffPixels: 100 });
如果只想测试特定的UI元素,请再次将Expect()方法内的页面参数更改为特定的元素定位器。
此外,如果想检查元素内容是否具有参考文本或任意二进制数据,Playwright 测试会自动检测内容类型并使用适当的比较算法:
expect(await page.textContent('.hero__title')).toMatchSnapshot('heroText.txt');
在此示例中,我们检查包含类名hero__title的元素的文本内容是否与heroText.txt文件中存在的文本内容相同。这些快照存储在测试文件旁边的单独目录中。
关于报告,Playwright 配备了一些内置报告器以满足不同的需求,能够提供自定义报告器,也可以使用第三方报告器。
以Allure为例,如果执行这些测试并使用 Allure 作为报告器,将能够使用选项Show diff或Show Overlay看到有关失败测试的屏幕差异,并快速了解问题。
这些测试确实有局限性。由于他们只检查UI外观,因此需要进行其他测试,例如功能、安全、性能、可访问性和可用性测试,以确保产品的质量有保证。
视觉回归测试成为Web 应用程序综合测试策略的关键组成部分,虽然功能测试涵盖了底层功能的正确性,但视觉回归测试侧重于用户界面,确保一致且具有视觉吸引力的用户体验。
通过捕获和比较不同开发阶段的屏幕截图,视觉回归测试有助于检测传统测试方法可能忽略的细微视觉变化和回归。此类测试在保障用户满意度、检测 UI 不一致以及防止未检测到的视觉错误进入生产方面发挥着至关重要的作用。
为了实现有效的视觉回归测试,Playwright 被证明是一个强大且多功能的自动化库。凭借对多种 Web 浏览器、无头和非无头模式以及跨平台兼容性的支持,Playwright使开发人员和测试人员能够跨不同环境无缝地自动化视觉测试。通过使用像素匹配库,它可以提供精确的结果,使其成为分析最小视觉差异的理想选择。
通过将 Playwright 纳入测试工作流程并利用其可视化测试功能,团队可以有效地维护视觉上一致且可靠的用户界面,从而提高整体应用程序质量并提高用户满意度。
下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
资料获取方式 :