在 Santa Clara 举行的 Velocity 2013 上,来自 Google 的 Brett Slatkin 展示了一种用于视觉回归测试的方法:Perceptual Diff(注:这是一个基于感知尺度的图像比对工具,它将采用人类视觉模型对两幅图像的差异进行判断)将新发布的Web 页面截图与之前版本进行对比,而且能够检测并剔除像素层面的微小变更。
Brett 认为,Perceptual Diff 填补了自动化测试中的一个重要空白。持续部署依靠众多自动化测试,来增强代码质量和部署两方面的信心。此外,还需要防止无法预见的错误,因此手动测试是必需的。然而这些测试代价高昂,需要重复进行而且有时是无效的——一个真实的例子是,某件视觉作品(为了进行测试,页面上放置了一匹粉色的马驹)躲过了全部 QA 检查,成功地混进了产品中。
Perception Diff 使用一个无渲染浏览器(注:Headless Browser,指渲染页面在后台完成,无需显示设备的浏览器)—— PhantomJS ——进行页面呈现并生成截图。这些图片通过 Visual Diff(注:Visual Diff 是 Google Summer of Code 2008 的一个项目)进行对比。对比结果中高亮勾绘出了有差别的区域,从而能够被人眼轻松识别。
该方法在去年的 Velocity Ignite 会议上现身,随后运用在 Google Consumer Surveys 的部署上,以提升持续部署方面的信心。Brett 宣布,使用该方法令以下难以发现的回归得以捕捉:布局错误、数字格式和错误排列顺序。他承认存在必需被过滤掉的“假性结果”,例如时间戳这样的变更。对于相对静态页面的测试,Perceptual Diff 表现良好;而对于动态页面,则需要预先载入一致的数据集。
Depicted (dpxtd) 是一个发布在 GitHub 上的开源版本。它把 Perceptual Diff 封装在工作流里,从而能够被集成到部署过程中。
另一方面,Brett 还展示了在部署过程中增加自信的积极影响——更短的部署周期能够增强动力;而在成功部署方面更加自信则促使新手着手进行部署,由此也就缩短了他们的上手阶段。
评论