在视觉测试领域,两种哲学相互对抗。一边是"学习"识别重大差异的人工智能。另一边是分析真实 CSS 代码以确定每一个变化的确定性算法。
两种方法都有坚定的支持者。但它们解决的不是同一个需求,两者之间的选择对测试可靠性有直接影响。
AI 方法:它如何工作
视觉测试中的 AI 方法通过学习运作。该工具分析数百万(甚至数十亿)的屏幕截图来训练模型,使其"理解"什么是对人类有意义的视觉差异。
当你运行测试时,AI 将当前截图与基线进行比较,并自动决定检测到的差异是"重要"还是"可忽略"。两个浏览器之间略有不同的抗锯齿?忽略。按钮颜色变了?标记。
承诺很诱人:减少误报——那些标记肉眼无法察觉的差异的警报。这个想法令人心动——谁喜欢花时间分类误报呢?
黑盒问题
AI 做出决定,但它不解释自己的推理。当它判定某个差异"可接受"时,你不知道为什么。当它放过一个最终被证实是真正 bug 的变化时,你无法理解发生了什么。
这就是所谓的黑盒问题。在 QA 中,这是个真实的问题。如果这些概念你熟悉,请参考我们的视觉回归测试指南。
QA 工程师的角色是 以确定性保证 应用的正确行为。回归测试必须可重复且可预测。如果 AI 在不同执行之间做出不同决定——因为模型已更新、上下文略有不同——对结果的信心就会崩溃。
一个测试今天通过、明天在相同代码上失败,无法解释原因,这比误报更糟。这是一个再也无法依靠的测试。
确定性方法:可靠性至上
确定性方法做出相反的选择。它不是"猜测"差异是否重要,而是分析每个元素的真实 CSS 代码和计算属性。
这是 Delta-QA 的方法。算法以 5 个结构性步骤运作:
它比较 DOM 结构、计算 CSS 属性、元素的尺寸和位置、颜色和字体,最终是像素渲染。每个步骤产生确定性结果——相同的代码总是产生相同的结果,每次执行都是如此,毫无例外。
当检测到差异时,工具会准确说明发生了什么变化:"此元素的 font-size 属性从 16px 变为 14px","此容器的左外边距增加了 8px"。没有猜测,没有解读——只有事实。
结果:在 429 个验证的测试用例中零误报。不是因为工具忽略了差异,而是因为它准确知道自己在测量什么。
误报:真正的隐藏成本
误报通常被视为简单的不便。实际上,它们的成本比想象的要高得多。
每个误报都需要时间分析和排除。在每天运行数十个测试的团队中,这些时间会累积。几周后,团队开始忽略警报——"又是一个误报"。当真正的 bug 混入警报中的那一天,没有人会查看它。
这就是"狼来了"综合症。误报越多,真实警报就越不被认真对待。误报越多越削弱测试的价值。
AI 通过忽略某些差异来减少误报。确定性方法通过更精确地测量来消除它们。区别是根本性的:一个掩盖噪音,另一个从源头消除它。
何时 AI 有意义
说 AI 在视觉测试中没有意义是不诚实的。在某些特定情境下它确实有意义:
当你在大量浏览器/分辨率组合上测试,浏览器之间的渲染变化产生无法手动管理的误报量时。AI 可以过滤掉跨浏览器渲染差异的背景噪音。
当你的应用包含大量动态内容(广告、个性化内容、日期),需要忽略的区域数量过多无法手动配置时。
当你有一个专门的分类团队,测试量足以证明对企业级解决方案的投资是合理的时。
何时确定性占上风
当结果可靠性比分类舒适度更重要时,确定性方法更可取:
当你需要确定性时。 在部署管道中,测试必须给出二进制结果:通过或不通过。不是"很可能通过"。
当你想理解发生了什么变化时。 "padding 增加了 4px"是可操作的信息。"AI 检测到了次要变化"则不是。
当你在受监管行业工作时,需要可审计性。向审计员解释"AI 决定这没问题"远不如详细列出每个 CSS 属性验证的报告令人信服。
当你的团队规模较小,没有资源对误报进行分类时。零误报意味着零浪费时间。
真正的趋势:AI 在上游,而不在循环中
最有趣的趋势不是使用 AI 执行测试。而是在上游使用它来改进工具的算法。
AI 可以用来分析数百万个测试用例以识别导致误报的模式。它可以帮助设计更稳健的比较算法。它可以协助生成测试场景。
但在执行时——当测试决定你的界面是否正确——确定性精度必须有最终决定权。这是 Delta-QA 的哲学:使用研究和数据分析来强化一个完全可预测的算法。要了解底层算法,请阅读我们的像素 vs 感知对比文章。
实践案例:何时每种方法都失败
让我们用具体的例子说明这些理论性差异。
案例 1:跨浏览器抗锯齿差异。 在 Chrome 130 和 Chrome 131 之间,文本的抗锯齿略有不同。AI 忽略它。确定性方法:忽略它(font-size、font-family、color 没变)。两者一致。
案例 2:背景颜色从 #1a1a1a 变为 #1c1c1c(人眼无法察觉的变化)。 AI:可能忽略它。确定性方法:警报——background-color 属性变了。这里有差异:AI 可能错过这个变化,而确定性方法准确诊断它。如果这个变化是有意的(细微调整),你需要更新基线。如果是无意的(CSS 错误),你想知道。
案例 3:按钮向右移动 2px。 AI:可能忽略它(对全局结构来说太小)。确定性方法:警报——margin-left 属性变了 2px。同样,确定性方法给出准确诊断,AI 可能错过。
FAQ
AI 比确定性算法在视觉测试中更精确吗?
AI 更擅长过滤噪音(抗锯齿、浏览器之间的渲染变化)。确定性算法在检测真正的 CSS 变化方面更精确。选择取决于对你来说什么最重要:分类舒适度还是结果确定性。
视觉测试中的误报是什么?
是当工具标记一个对人类用户来说不算差异的差异时。例如,相同代码两次执行之间轻微的抗锯齿变化。误报浪费时间并削弱对测试的信心。
为什么 Delta-QA 不使用 AI?
Delta-QA 优先考虑可预测性和可解释性。每个结果都是确定性和有文档记录的。AI 用于上游(研究、算法改进),但不在测试执行循环中。
可以结合 AI 和确定性方法吗?
可以。一些团队对关键测试(部署管道)使用确定性工具,对大范围监控(数百个页面、跨浏览器)使用 AI 工具。两种方法相互补充。
视觉测试中的"黑盒"问题是什么?
是当工具做出决定(接受或拒绝差异)而不解释原因时。在 QA 中,可追溯性至关重要,无法证明测试结果的合理性是有问题的,特别是在受监管行业。
确定性算法对动态内容如何处理?
它将动态内容视为可配置的排除区域。你定义哪些区域包含变化的内容(日期、计数器、广告),算法在比较中忽略它们。这比让 AI 猜测哪些变化重要更可预测。
在团队中采用确定性方法困难吗?
不。开发者欣赏可预测性。QA 欣赏可解释性。最大的转变通常是文化性的:习惯接受 AI 的"判断",团队需要时间重新发现明确诊断的价值。
AI vs 确定性的辩论不是技术辩论。是哲学辩论。你想要一个为你思考的工具,还是一个给你事实让你决定的工具?答案取决于你的情境——但有疑问时,确定性总是优于概率。