一、啥是视觉回归测试
在咱们开发网页或者应用程序的时候,经常会修改样式。比如说,把按钮的颜色从蓝色改成绿色,或者调整一下文字的大小。但有时候,这些修改可能会带来一些意想不到的问题,比如某个元素的位置跑偏了,或者在不同的屏幕尺寸下显示得乱七八糟。视觉回归测试就是用来解决这类问题的。它就像是一个严格的质检员,会把修改后的界面和之前的界面进行对比,看看有没有哪里不一样了,如果有差异,就及时提醒咱们。
举个例子,咱们有一个简单的网页,上面有一个按钮。最初按钮是红色的,后来咱们把它改成了蓝色。视觉回归测试就会把改之前和改之后的按钮截图进行对比,要是发现颜色变了,它就会告诉咱们。这样,咱们就能及时发现问题并进行修复,确保样式修改不会引入意外的界面破坏。
二、Sass是啥
Sass(Syntactically Awesome Style Sheets)是一种CSS预处理器。简单来说,它就是在CSS的基础上做了一些扩展,让咱们写样式代码变得更轻松。CSS本身是一种很基础的样式语言,写起来比较繁琐,尤其是在处理一些重复的样式或者复杂的逻辑时。而Sass提供了很多强大的功能,比如变量、嵌套、混合器等等。
2.1 变量
在Sass里,咱们可以定义变量,就像在编程里定义变量一样。这样,当咱们需要修改某个颜色或者尺寸的时候,只需要改变量的值,所有用到这个变量的地方都会自动更新。
// Sass技术栈
// 定义变量
$primary-color: #007bff;
// 使用变量
.button {
background-color: $primary-color;
color: white;
}
上面的代码里,咱们定义了一个变量$primary-color,值是蓝色。然后在.button类里使用了这个变量。如果以后咱们想把按钮的颜色改成红色,只需要把$primary-color的值改成红色就可以了。
2.2 嵌套
Sass允许咱们嵌套选择器,这样代码的结构会更清晰,也更容易维护。
// Sass技术栈
nav {
ul {
list-style-type: none;
margin: 0;
padding: 0;
}
li {
display: inline-block;
margin-right: 10px;
}
}
在这个例子里,ul和li选择器是嵌套在nav选择器里面的。这就表示ul和li是nav元素的子元素,这样写代码更符合HTML结构,也更容易理解。
2.3 混合器
混合器就像是函数,咱们可以把一些重复的样式代码封装成一个混合器,然后在需要的地方调用。
// Sass技术栈
// 定义混合器
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
border-radius: $radius;
}
// 使用混合器
.button {
@include border-radius(5px);
}
这里定义了一个混合器border-radius,用来处理不同浏览器的圆角样式。然后在.button类里调用了这个混合器,这样按钮就有了圆角效果。
三、为啥要把Sass和视觉回归测试集成起来
3.1 提高效率
Sass让咱们写样式代码更高效,而视觉回归测试能快速发现样式修改带来的问题。把它们结合起来,咱们就能在修改样式的同时,快速验证修改是否正确,避免了手动检查的繁琐过程。
3.2 保证质量
通过视觉回归测试,咱们可以确保样式修改不会引入意外的界面破坏,提高了应用程序或者网页的质量。比如说,咱们在修改一个页面的样式时,可能会不小心影响到其他元素的显示。视觉回归测试就能及时发现这些问题,让咱们的界面始终保持美观和可用性。
3.3 便于团队协作
在团队开发中,不同的开发者可能会同时修改样式。把Sass和视觉回归测试集成起来,每个开发者在提交代码之前都可以进行视觉回归测试,确保自己的修改不会影响到其他人的工作。这样可以减少团队之间的沟通成本,提高开发效率。
四、集成方案详细步骤
4.1 选择合适的视觉回归测试工具
市面上有很多视觉回归测试工具,比如BackstopJS、Percy等。这里以BackstopJS为例,它是一个开源的视觉回归测试工具,使用起来比较简单。
首先,咱们需要安装BackstopJS。可以使用npm来安装:
npm install -g backstopjs
4.2 配置BackstopJS
安装好BackstopJS之后,需要进行一些配置。在项目的根目录下,创建一个backstop.json文件,配置内容如下:
{
"id": "my-project",
"viewports": [
{
"label": "desktop",
"width": 1280,
"height": 800
},
{
"label": "tablet",
"width": 768,
"height": 1024
},
{
"label": "mobile",
"width": 320,
"height": 568
}
],
"scenarios": [
{
"label": "Homepage",
"url": "http://localhost:3000",
"selectors": [
"body"
]
}
],
"paths": {
"bitmaps_reference": "backstop_data/bitmaps_reference",
"bitmaps_test": "backstop_data/bitmaps_test",
"engine_scripts": "backstop_data/engine_scripts",
"html_report": "backstop_data/html_report",
"ci_report": "backstop_data/ci_report"
},
"report": ["browser"],
"engine": "puppeteer",
"asyncCaptureLimit": 5
}
上面的配置文件里,定义了不同的视口(桌面、平板、手机),测试的场景(这里是首页),以及保存测试结果的路径等信息。
4.3 生成参考截图
在修改样式之前,咱们需要生成参考截图。在终端里运行以下命令:
backstop reference
这个命令会根据backstop.json里的配置,打开网页并截取屏幕截图,保存在bitmaps_reference文件夹里。
4.4 修改Sass代码
现在咱们可以修改Sass代码了。比如说,把按钮的颜色从红色改成蓝色。
// Sass技术栈
$button-color: red; // 原来的颜色
// 修改颜色
$button-color: blue;
.button {
background-color: $button-color;
color: white;
}
4.5 生成测试截图并进行对比
修改完Sass代码之后,需要重新编译成CSS,然后运行以下命令生成测试截图:
backstop test
BackstopJS会重新打开网页并截取屏幕截图,保存在bitmaps_test文件夹里。然后它会把测试截图和参考截图进行对比,如果发现有差异,就会在HTML报告里显示出来。
4.6 查看报告并修复问题
打开backstop_data/html_report/index.html文件,就可以看到详细的测试报告。报告里会显示哪些地方有差异,以及差异的程度。咱们可以根据报告里的信息,找出问题并进行修复。修复完成之后,再次运行backstop test进行测试,直到所有的差异都被解决。
五、应用场景
5.1 网页改版
当咱们对一个网页进行改版时,需要修改大量的样式。这时就可以使用Sass来简化样式代码的编写,同时使用视觉回归测试来确保改版后的界面没有出现意外的问题。比如说,一个电商网站要进行整体的风格改版,把原来的蓝色主题改成绿色主题,通过Sass可以快速修改颜色变量,通过视觉回归测试可以及时发现改版后界面显示异常的地方。
5.2 响应式设计
在开发响应式网页时,需要确保页面在不同的屏幕尺寸下都能正常显示。Sass可以帮助咱们根据不同的屏幕尺寸编写不同的样式代码,而视觉回归测试可以在不同的视口下进行测试,确保页面在各种设备上的显示效果都符合预期。例如,一个新闻网站在手机、平板和电脑上的布局都不一样,使用Sass和视觉回归测试可以保证在各种设备上浏览新闻时都有良好的体验。
5.3 持续集成
在团队开发中,使用持续集成工具(如Jenkins)可以自动触发视觉回归测试。每当有开发者提交样式代码的修改时,持续集成工具就会运行视觉回归测试,确保代码的修改不会影响到整个系统的界面显示。这样可以及时发现问题并进行修复,保证项目的顺利进行。
六、技术优缺点
6.1 优点
6.1.1 提高开发效率
Sass的变量、嵌套、混合器等功能让样式代码的编写更高效,视觉回归测试可以快速发现问题,减少了手动检查的时间,从而提高了整体的开发效率。
6.1.2 保证界面质量
通过视觉回归测试,可以确保样式修改不会引入意外的界面破坏,保证了网页或应用程序的界面质量。
6.1.3 便于维护
Sass的代码结构更清晰,易于维护。同时,视觉回归测试的报告可以帮助开发者快速定位问题,方便进行修复。
6.2 缺点
6.2.1 学习成本
Sass有一些新的语法和概念,对于初学者来说,需要花费一定的时间来学习和掌握。
6.2.2 测试时间
视觉回归测试需要截取屏幕截图并进行对比,这个过程可能会比较耗时,尤其是在测试的页面较多或者视口较多的情况下。
6.2.3 误报问题
有时候,视觉回归测试可能会产生误报,比如由于浏览器的渲染差异或者字体加载的问题,导致测试截图和参考截图有一些细微的差异,但实际上并不是真正的问题。
七、注意事项
7.1 环境一致性
在进行视觉回归测试时,要确保测试环境和生产环境的一致性。包括浏览器版本、操作系统、字体等方面。如果环境不一致,可能会导致测试结果不准确,出现误报的情况。
7.2 定期更新参考截图
随着项目的发展,页面的样式可能会不断变化。所以要定期更新参考截图,确保参考截图是最新的、准确的。可以在每次上线新功能或者进行重大样式修改之后,运行backstop reference命令更新参考截图。
7.3 合理选择测试场景和选择器
在配置backstop.json文件时,要合理选择测试场景和选择器。只测试必要的页面和元素,避免测试过多不必要的内容,提高测试效率。
7.4 处理误报问题
当出现误报时,要仔细分析原因。如果是由于浏览器渲染差异或者字体加载问题导致的,可以通过调整测试配置或者忽略某些细微的差异来解决。
八、文章总结
通过把Sass和视觉回归测试集成起来,咱们可以在修改样式代码的同时,快速验证修改是否正确,确保样式修改不会引入意外的界面破坏。Sass的强大功能让样式代码的编写更高效,而视觉回归测试能及时发现问题,保证了网页或应用程序的界面质量。在实际应用中,要根据具体的场景选择合适的视觉回归测试工具,按照正确的步骤进行配置和测试。同时,要注意环境一致性、定期更新参考截图、合理选择测试场景和选择器等问题,处理好误报情况。这样,就能充分发挥Sass和视觉回归测试的优势,提高开发效率和项目质量。
评论