报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

用 Appraise 自动化视觉测试

  • 2018-05-20
  • 本文字数:3087 字

    阅读完需:约 10 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

在开发界面外观是成功关键的应用程序时,自动化视觉测试会带来很大的帮助。Appraise 是在麻省理工学院授权的 GitHub 上的一款开源工具,它将实例化需求的应用于视觉方面。它帮助团队使用视觉检查来审查审批对 web 页面的更改。

Appraise 的创始人 Gojko Adzic 在 2018 年欧洲测试会议上发表了题为“无痛视觉测试”的主题演讲。InfoQ 采访了 Gojko,讨论了视觉测试的难点是什么,并询问了他一些关于 Appraise 的问题。

InfoQ: 在测试可视化时,测试人员经常会遇到什么问题?

Gojko Adzic: 从历史上看,测试应用程序的视觉方面需要人的眼睛和人的判断。这使得视觉测试变得昂贵和缓慢,所以有好的启发式方法来实现适当的覆盖率是非常重要的。

对于视觉效果,通常很难表达怎么算是正确的。有人可以设计很多特定的检查,比如元素大小、定位和样式,但是屏幕上的整体组合可能仍然是错误的、怪异的或者就是很难看的。虽然人们可以很容易地发现什么东西有问题,但因为很难表达预期的结果,所以传统的自动化并不是很有帮助。

即使预期的结果是明确定义和确定的,测试可视化常常需要构建和部署应用程序的整个堆栈,从而使测试变得缓慢而脆弱。

InfoQ: 测试人员如何处理这些问题?

Adzic: 一个常见的解决方案是在用户界面下尽可能地自动化,让人们把精力集中在剩下那些需要肉眼的部分上。由于用户界面自动化往往是缓慢而脆弱的,软件团队倾向于将功能从外观和感觉上分离出来,并尽可能地在可视化界面下进行测试。为此,Mike Cohn 率先提出了著名的测试自动化金字塔,它在今天的软件测试自动化中非常有用。

对于业务应用程序或企业软件来说,这很有效,因为用户界面并不是其真正的特别之处。但是在界面外观是成功关键的应用程序中,这个庞大的任务仍然摆在开发团队的面前,团队并没有很多处理此类问题的技巧和实践。从技术上讲,有很多工具可以检查应用程序的视觉方面,但是把人排除到这个方程式之外仍然是不可能的。

在做 MindMup 的时候,我们最终解决了这个问题。因为它是一个消费者应用程序,而且用户群的大部分都是学龄儿童,视觉和界面外观对整体体验至关重要。我们是一个构建、支持和维护应用程序的小团队。随着代码库的增长,测试视觉效果所需要的时间确实会带来负面影响,使我们无法抽身去做新的特性。我们有大量的自动化测试,甚至对应用程序的大部分可视化方面进行了测试,这些测试都是使用浏览器内的测试来检查 DOM 元素的,但是这些测试很难维护。

例如,改变一些常见的思维导图可视化风格,如字体或页边距,会导致数百个测试中断。每一个测试用例都是确定的,给我几个小时和一个计算器,我可以很容易地计算出新的期望状态,但是我更愿意把时间用在改进产品上,而不是修改测试用例。当然, 我们可以抽象这些东西, 设计更小的单元测试, 不依赖于真实的视觉界面外观的样式, 但是如果有些东西没那么怪那么丑,那么这种方法也验证不出什么,所以我们仍然需要审查最终可视化结果, 这花了很多的时间。

事实上,因为其他的测试都很脆弱,我们最终会有一打左右的思维导图来展示所有的关键界面外观,然后手动加载它们以验证看起来是否正常。如果存在问题,我们只是会从面向代码的测试中复制出实际结果,并为其声明新的期望值。

这让我们思考,我们如何能够加速这个过程,也许设计一个自动化流水线来帮助我们做视觉评估能让我们更快更有效地完成它。我们认为设计自动化测试的目的并不是为了取代人类,但是如果我们能够设计出一些自动化来帮助我们做这件事,就太好了。

人类在评估某样东西是否正常时很在行,但我们不需要参与收集所有信息的过程,所以我们开始将所有事情都自动化,除了最后的决定。我们构建了一个工具,它可以执行为应用程序设置的那些简单枯燥的工作来尝试许多不同的视觉测试用例,然后将它提交给我们进行审批。我们有了这个,就可以评审比之前多得多的案例了。而不是那十几二十个思维导图来帮我们在同一时刻检查很多东西的,我们可以围绕各个方面设计测试,让自动化部分仅仅呈现出不同效果,有那么点视觉单元测试的意思。

InfoQ: Appraise 是什么?

Adzic: Appraise 是我们为 MindMup 构建的工具,并最终开源,这样其他人就可以使用类似的方法来解决同样的问题了。

Appraise 采用了实例化需求的方法,但将其应用于视觉效果。我们举一些具体的例子,通过一个自动化层来创建可执行的规格说明,然后使用无头的 Chrome 来截屏,并将其与预期的结果进行比较。不同于通常的实例化需求的工具,我们无法认定预期和实际结果之间的差异就是错误,Appraise 采用了审批测试的方法。它把所有存在差异的地方显示给人类,让人来判定差异是否正确,如果是,就批准它。

批准失败的测试用例使实际结果成为下一个测试运行的预期,因此维护测试的成本就很低廉了。我只需按下一个按钮,而不是重新花时间计算 SVG 位置,就可以让新的屏幕截图成为我新的期望状态。因此,我们从有效的测试设计和自动化实例化需求的工具,以及对典型的批准测试的简单测试维护中获得了很多好处。这意味着我们可以快速地做大量的测试用例,并能很容易地管理它们。

Appraise 可以帮助团队肉眼快速审查审批对 web 页面、视觉布局和浏览器组件的更改。它的设计目的是使视觉语言的接受 / 回归测试自动化,而不是 xUnit 风格的代码,因此设计人员、测试人员、UX 专家和产品经理的跨职能组可以在测试中进行协作。

此外,通过采用具体的示例方法,评价团队可以通过可视化的例子创建易于维护的、可验证的开发人员文档。该工具使用 Markdown 作为可执行的规范格式,这意味着团队可以轻松地将其现存的文档发布到 Github 或作为静态 HTML 站点。

Appraise 是在麻省理工学院授权的,并且代码是托管在 GitHub 上。该产品的当前还是 alpha 版本。我要说的是,它对我们的用例非常有用,我们使用它帮助测试 MindMup 的界面外观,但是可能需要再打磨打磨才能对其他产品和团队工作流程有用。它目前仅限于 JavaScript 和在 Chrome 中运行,但要把它扩展到其他浏览器和运行时执行应该也不难。

InfoQ: 测试人员如何使用 Appraise 进行视觉测试?

Adzic: 它不是主要针对测试人员的工具,而是跨职能团队。人们可以从使用草图的可视化示例开始,无论是用手绘、线框图还是图形工具,然后对相关的例子、边界值和边界情况进行充分地讨论。这种讨论,就是 BDD 和实例化需求的真正威力所在。

然后把这些草图放入 markdown 文档来创建一个可执行的规范,这将成为一个半自动化的测试。然后,开发人员将构建这些特性和一些可能的测试夹具,类似于 FitNesse 夹具或 Cucumber 步骤,将这些示例联系到应用程序中。

Appraise 会运行应用程序,抓取截屏并剪辑它们,然后与预期的视觉效果进行比较。如果一切顺利,它就会什么也不提。如果发现有任何差异,就会将其抛出来请人来审批。当然,对于手工绘制的草图来说,测试最初会失败,但是我们已经把比较差异弄得很简单了,因此,用户体验设计师或产品专家可以评审并批准正确的内容,而这将成为下一个运行的基线。对于不正确的程序,开发人员在 Chrome 中使用典型开发工具很容易检查什么出错了,并修复它。

通过这种方式, 评价的目的是支持跨职能的对话和方便人们识别和评审的差异。

另一个可以用于视觉测试的工具是 Applitools Eyes。它使用模拟人眼和大脑的人工智能。在 Applitools Expands Application Visual Management Capabilities 中可以找到有关最近发布的更多信息。

有一些用于视觉测试工具还正处于发展阶段,例如 Chromatic 和 Screener。

查看英文原文 Automating Visual Testing with Appraise

2018-05-20 19:001536

评论

发布
暂无评论
发现更多内容

软件测试学习笔记丨Pytest编写插件—为第三方插件添加命令行参数

测试人

软件测试 自动化测试 测试开发 pytest

桌面虚拟化的技术架构全解析

青椒云云电脑

桌面云 云桌面 云桌面解决方案 虚拟云桌面系统

云桌面部署注意事项

青椒云云电脑

桌面云 云桌面 云桌面解决方案

Partisia Blockchain 质押 APR 教程一览,可以随时取消

加密眼界

蜗牛游戏宣布2024年第一季度财报业绩

财见

超前预热|博睿数据将应邀出席双态IT用户大会,分享《构建云原生时代的一体化智能可观测性》

博睿数据

5月21日相聚上海张江!与文心大模型一起共建大模型产业应用生态圈

飞桨PaddlePaddle

百度 飞桨 大模型 文心一言 文心中国行

字节跳动打响大模型价格战;苹果将在 iPhone、iPad 上推出眼球追踪功能丨 RTE 开发者日报 Vol.205

声网

客户案例|博睿数据助力上海证券App实现业务增长

博睿数据

云3D渲染在汽车虚拟仿真中的优势体现

3DCAT实时渲染

实时云渲染 云3D渲染 汽车虚拟仿真

德国 Industrial AI Podcast 聚焦 Apache IoTDB:探索使用 AINode 进行时序数据管理

Apache IoTDB

XEOS 对象存储深度结合 Alluxio 分布式缓存系统, GPU 利用率提高至 90% 以上

XSKY星辰天合

AI 数据基础设施

选云桌面厂家,该怎么挑?

青椒云云电脑

云桌面 云桌面厂家

VMware 网络连接的几种方式

玄兴梦影

微创软件荣获"SSCL金链奖----优秀数字化转型奖"

财见

容器内存可观测性新视角:WorkingSet 与 PageCache 监控

阿里巴巴云原生

阿里云 云原生 可观测

碳课堂|ISO 14064-3 温室气体核查规范与指南

AMT企源

双碳 碳管理 ISO 14064

流水线 YAML 高级用法来了!大幅降低重复代码、灵活编排多任务

阿里云云效

阿里云 云原生 云效

学校选择云桌面厂家需要考虑哪些因素?

青椒云云电脑

云桌面 云桌面厂家 云桌面系统

关于spring与springmvc整合

伤感汤姆布利柏

线上展厅怎么做?如何打造一个成功的线上展厅?

点量实时云渲染

云渲染 实时云渲染 3D实时云渲染 线上展厅 数字展厅

Bonree ONE 技术带动「新质」可观测

博睿数据

桌面云服务是什么?桌面云服务厂家推荐

青椒云云电脑

桌面云 云桌面 云桌面厂家 桌面云服务

桌面虚拟化的技术架构全解析

青椒云云电脑

桌面云 云桌面 云桌面解决方案 虚拟云桌面系统

云桌面的三大基本架构

青椒云云电脑

桌面云 云桌面 云桌面解决方案

虚拟云桌面是否适合部署在学校机房

青椒云云电脑

云桌面 虚拟云桌面系统

软件测试学习笔记丨黑盒测试-等价类划分

测试人

软件测试 测试开发 测试用例 黑盒测试 等价类

美团面试:如何实现线程任务编排?

王磊

Java

用Appraise自动化视觉测试_软件工程_Ben Linders_InfoQ精选文章