自动化无障碍功能测试

到目前为止,您学习了有关个人、企业和 数字无障碍的法律方面,以及数字无障碍基础知识 一致性。您已探索与包容性设计和编码相关的具体主题,包括何时使用 ARIA 与 HTML、如何衡量颜色对比度、何时需要使用 JavaScript 等。

在剩余的模块中,我们将从设计和构建转为测试无障碍功能。我们将采用包含三个步骤的测试流程,包括 自动化、手动和辅助技术测试工具和技术。我们将在这些测试模块中使用相同的演示,将网页从不可访问转变为可访问。

每项测试(自动化测试、手动测试和辅助技术测试)对于打造尽可能易于使用的产品至关重要。

我们的测试依据的是《网络内容无障碍指南》(WCAG) 2.1 合规性 A 级和 AA 级标准。请注意,您所在的行业、产品类型、当地和国家/地区的法律和政策,或整体无障碍目标都会决定您应遵循哪些准则和达到哪些级别。如果您没有针对 则建议您遵循最新版本的 WCAG。 请参阅如何衡量数字无障碍水平? 了解无障碍功能审核、一致性类型/级别 WCAGPOUR

如您所知,在构建无障碍模型时,无障碍功能一致性并不能很好地满足 来支持残障人士。不过,它是一个不错的起点,因为它提供了一个可供测试的指标。我们建议您 无障碍功能一致性测试之外的其他操作,例如 针对残障人士运行易用性测试,雇用残障人士 在团队中工作的残障人士,或者为有残障人士或 数字无障碍专业知识,帮助您打造更具包容性的产品。

自动化测试基础知识

自动化无障碍功能测试会使用软件扫描您的数字产品, 无障碍功能问题违反预定义的无障碍功能一致性标准。

自动化无障碍功能测试的优势:

  • 在产品生命周期的不同阶段轻松重复测试。
  • 只需完成几个步骤即可运行,并且结果非常快速。
  • 您只需具备一些无障碍功能方面的知识,即可运行测试或了解测试结果。

自动化无障碍功能测试的缺点:

  • 自动化工具无法捕获产品中的所有无障碍功能错误
  • 报告的假正例(所报告的问题并非真正违反 WCAG 的行为)
  • 可能需要针对不同的产品类型和角色使用多种工具

自动化测试是检查网站或应用是否存在 但并非所有检查都能自动完成。我们将在手动无障碍功能测试模块中详细介绍如何检查无法自动化测试的元素的无障碍功能。

自动化工具的类型

首批在线自动无障碍功能测试工具之一是在 1996 年由应用特殊技术中心 (CAST) 颁布, “鲍比报告。”目前,有 100 多种自动化测试工具可供选择!

自动化工具实现方式多种多样,包括无障碍浏览器扩展程序、代码 lint 工具、桌面和移动应用、在线信息中心,甚至您可以使用开源 API 构建自己的自动化工具。

您决定使用哪种自动化工具取决于多种因素,包括:

  • 你们要测试哪些合规性标准和等级?这可能会 包括 WCAG 2.1、WCAG 2.0、U.S.第 508 条或修改后的无障碍规则列表。
  • 您要测试哪种类型的数字产品?这可以是网站、Web 应用、原生移动应用、PDF、自助服务终端或其他产品。
  • 您是在软件开发生命周期的哪个阶段测试产品?
  • 设置和使用该工具需要多长时间?是个人、团队还是公司?
  • 谁将进行测试:设计师、开发者、质量检查人员还是其他人员?
  • 您希望多久检查一次无障碍功能?报告中应包含哪些详细信息?问题应与工单直接相关 系统?
  • 哪些工具在您的环境中效果最佳?为您的团队?

除此之外,您还需要考虑许多其他因素。请参阅 WAI 的文章 on "选择网络无障碍功能评估工具 详细了解如何为您和您的团队选择最合适的工具。

演示:自动化测试

在自动化无障碍测试演示中,我们将使用 Chrome 的 Lighthouse。Lighthouse 是一款自动化的开源工具,旨在通过不同类型的审核(例如性能、SEO 和无障碍)来提升网页质量。

我们的演示网站是为一家化妆品组织“医学之谜”(Merid Mysteries) 打造的 俱乐部。此网站在演示中是故意设为无法访问的。其中一些 但有些设备(但不是全部)设备可能会 自动化测试

第 1 步

使用 Chrome 浏览器安装 Lighthouse 扩展程序

您可以通过多种方式将 Lighthouse 集成到测试工作流中。在本演示中,我们将使用 Chrome 扩展程序。

第 2 步

Medical Mystery Club 网站。

我们在 CodePen 中构建了一个演示。 在调试模式下查看该报告,以便继续进行后续测试。这一点很重要,因为它会移除围绕演示版网页的 <iframe>,这可能会干扰某些测试工具。

详细了解 CodePen 的调试模式

第 3 步

打开 Chrome 开发者工具,然后前往 Lighthouse 标签页。清除除以下项之外的所有类别选项: “无障碍功能。”将模式保持为默认模式,然后选择要运行测试的设备类型。

Medical Mystery Club 网站,其中显示了打开的 Lighthouse 报告 DevTools 面板。

第 4 步

点击分析网页加载,并为 Lighthouse 留出时间来运行其测试。

测试完成后,Lighthouse 会显示一个分数,用于衡量您所测试产品的可访问性。Lighthouse 分数的计算依据包括问题数量、问题类型以及检测到的问题对用户的影响。

除了得分之外,Lighthouse 报告还包含有关检测到的问题的详细信息,以及指向资源的链接,以便您详细了解如何解决这些问题。该报告还包含已通过或不适用的测试,以及需要手动检查的其他项的列表。

在 2022 年 12 月的测试中,医学神秘俱乐部网站的 Lighthouse 得分获得了 62 分。

第 5 步

现在,让我们通过一个示例来了解每个自动无障碍功能问题 发现并修正相关样式和标记。

问题 1:ARIA 角色

第一个问题的说明如下:“具有 ARIA [role] 且要求子元素必须包含特定 [role] 的元素缺少部分或全部必需子元素。一些 ARIA 父角色必须包含特定子角色,才能执行它们的预期无障碍功能。”详细了解 ARIA 角色规则

在演示中,简报订阅按钮无法使用:

<button role="list" type="submit" tabindex="1">Subscribe</button>
让我们来解决这个问题。

“订阅”输入字段旁边的按钮包含不正确的 ARIA 角色 。在这种情况下,可以完全移除该角色。

<button type="submit" tabindex="1">Subscribe</button>

问题 2:ARIA 隐藏

"[aria-hidden="true"] 元素包含可聚焦的后代。有一个 [aria-hidden="true"] 元素包含可聚焦的下级元素,导致这些交互式元素都无法被辅助技术(如屏幕阅读器)用户使用。详细了解 aria-hidden 规则

<input type="email" placeholder="Enter your e-mail address" aria-hidden="true" tabindex="-1" required>
让我们解决这个问题。

输入字段应用了 aria-hidden="true" 属性。添加此属性会使元素(以及其下嵌的所有内容)对辅助技术隐藏。

<input type="email" placeholder="Enter your e-mail address" tabindex="-1" required>

在这种情况下,您应从输入框中移除此属性,以允许使用辅助技术的用户访问表单字段并在其中输入信息。

问题 3:按钮名称

按钮缺少可供访问的名称。当某个按钮没有无障碍名称时,屏幕阅读器会将它读为“按钮”,这会导致依赖屏幕阅读器的用户无法使用它。

详细了解按钮名称规则

<button role="list" type="submit" tabindex="1">Subscribe</button>
让我们来解决这个问题。

问题 1 中的按钮元素中移除不准确的 ARIA 角色后,“订阅”一词便会成为可访问的按钮名称。此功能内置于语义 HTML 按钮元素中。那里 是适合在更复杂的情况下考虑的其他模式选项。

<button type="submit" tabindex="1">Subscribe</button>

问题 4:图片 alt 属性

图片元素缺少 [alt] 属性。说明性元素应力求使用简短的描述性替代文字。装饰性元素可以被忽略, alt 属性为空。详细了解图片替代文本 规则

<a href="index.html">
  <img src="https://upload.wikimedia.org/wikipedia/commons/….png">
</a>
让我们来解决这个问题。

由于徽标图片也是一个链接,您可以通过 图片模块,它称为可操作的 图片,并需要关于图片用途的替代文本信息。 通常,页面上的第一张图片是一个徽标,因此您可以合理地假定 您的 AT 用户会知道这一点,因此,您可能决定不添加 背景信息。

<a href="index.html">
  <img src="https://upload.wikimedia.org/wikipedia/commons/….png"
    alt="Go to the home page.">
</a>

链接缺少可识别的名称。请确保链接文字(以及用作链接的图片替代文字)可识别、独一无二且可聚焦,这样做会提升屏幕阅读器用户的导航体验。详细了解链接文字规则

<a href="#!"><svg><path>...</path></svg></a>
让我们来解决这个问题。

网页上的所有可执行操作的图片都必须包含有关链接会将用户定向到何处的信息。解决此问题的一种方法是 添加有关用途的文字,就像在 示例。这对于使用 <img> 标记的图片非常有用,但 <svg> 标记无法使用此方法。

对于使用 <svg> 标记的社交媒体图标,您可以使用 不同的备选说明格式 目标 SVG,在 <a><svg> 标记之间添加信息,然后添加 对用户隐藏位置、添加支持的 ARIA 或其他选项。取决于 与您的环境和代码限制有关,有一种方法可能比 另一个。

使用最简单且覆盖辅助技术最多的模式选项,即向 <svg> 标记添加 role="img" 并添加 <title> 元素。

<a href="#!">
  <svg role="img">
    <title>Connect on our Twitter page.</title>
    <path>...</path>
  </svg>
</a>

问题 6:颜色对比度

背景色和前景色没有足够高的对比度。对许多用户而言,对比度低的文本都是难以阅读或无法阅读的。 详细了解色彩对比度规则

我们举报了两个示例。

Medical Mysteries Club 的十六进制颜色值为 #01aa9d,背景十六进制值为 #ffffff。色彩对比度为 2.9:1。
“美人鱼综合症”文案的 Lighthouse 得分。
美人鱼综合征的文本十六进制值为 #7c7c7c,而背景的十六进制颜色值为 #ffffff。色彩对比度为 4.2:1。
让我们解决这个问题。

网页上存在许多色彩对比度问题。正如您在本课程中学习的 颜色和对比度模块, 常规大小的文字(小于 18pt / 24px)的色彩对比度要求为 4.5:1,大号文字(至少 18pt / 24px 或 14pt / 18.5px 粗体)和 基本图标必须符合 3:1 的要求。

对于网页标题,蓝绿色文字需要符合 3:1 的色彩对比度 要求,因为它是 24 像素的大号文字。不过,蓝绿色按钮被视为 16 像素粗体常规大小的文字,因此必须满足 4.5:1 的颜色对比度要求。

在这种情况下,我们可以找到足够深的蓝绿色来满足 4.5:1 的要求,也可以将按钮文本的大小增加到 18.5px 粗体,并稍微更改蓝绿色值。这两种方法都与设计保持一致 美学。

除了 显示网页上两个最大的标题此文本必须调暗才能符合要求 符合 4.5:1 色彩对比度要求

蓝绿色已修复且不再失败。
俱乐部名称“Medical Mysteries Club”的颜色值为 #008576,背景保持为 #ffffff。更新后的颜色对比度为 4.5:1。点击图片可查看完整尺寸。
灰色问题已得到解决。
美人鱼综合征的颜色值为 #767676,背景保留为 #ffffff。颜色对比度为 4.5:1。

问题 7:列表结构

列表项 (<li>) 未包含在 <ul><ol> 父元素中。 屏幕阅读器要求列表项 (<li>) 必须包含在父项中 <ul><ol> 才能正确播报。

详细了解列表规则

<div class="ul">
  <li><a href="#">About</a></li>
  <li><a href="#">Community</a></li>
  <li><a href="#">Donate</a></li>
  <li><a href="#">Q&A</a></li>
  <li><a href="#">Subscribe</a></li>
</div>
让我们来解决这个问题。

在此演示中,我们使用 CSS 类来模拟无序列表,而不是使用 <ul> 标记。当我们以不正确的方式编写此代码时, 此标记中内置的语义 HTML 功能。通过将类替换为真实的 <ul>标记,并修改相关 CSS,我们就可以解决此无障碍功能问题。

<ul>
  <li><a href="#">About</a></li>
  <li><a href="#">Community</a></li>
  <li><a href="#">Donate</a></li>
  <li><a href="#">Q&A</a></li>
  <li><a href="#">Subscribe</a></li>
</ul>

问题 8:tabindex

一些元素的 tabindex 值大于 0。值大于 0 表示明确的导航顺序。尽管这在技术上可行,但往往会让依赖辅助技术的用户感到沮丧。详细了解 tabindex 规则

<button type="submit" tabindex="1">Subscribe</button>
让我们解决这个问题。

除非有特定原因要破坏网页上的自然标签顺序,否则无需为 tabindex 属性设置正整数。接收者 保留自然 Tab 键顺序,我们可以将 tabindex 更改为 0 或 完全移除该属性。

<button type="submit">Subscribe</button>

第 6 步

现在您已经解决了所有自动无障碍功能问题,接下来,创建一个新的 调试模式页面。再次运行 Lighthouse 无障碍功能审核。您的得分 效果应该比首次运行时好得多。

成功。
灯塔得分现在为 100 分,这意味着您已经解决了 Lighthouse 的所有问题。

我们已将所有这些自动无障碍功能更新应用到新的 CodePen 中。

下一步

太棒了!您已经完成了很多工作,但我们还没有完成! 接下来,我们将介绍手动检查,如手动无障碍功能测试模块中所详述。

检查您的理解情况

测试您对自动化无障碍功能测试的了解

您应该进行何种测试来确保您的网站可以访问?

自动测试
您可以使用 Lighthouse 等自动化测试工具快速发现一些无障碍功能错误。
手动测试
由于 AI 尚未掌握无障碍功能的方方面面,因此某些无障碍功能测试必须手动完成。
用户测试
要知道残障人士能否使用您的产品,最好的方法是与残障人士交谈和测试。残障人士并非都有相同的经历,因此我们建议您邀请多元化的测试人员。
辅助技术测试
如果您在 AT 方面拥有丰富的经验,或许可以在手动测试中解决上述任何问题。对于大多数开发者来说,单独的 AT 测试对于确保 AT 用户能够通过所选 AT 使用您的网站或应用至关重要。

自动化测试会捕获哪些错误?

ARIA 错误
自动化测试通常会发现 ARIA 用法不正确。这与副本本身无关,只与属性的使用方式有关。
包容性语言
虽然可以构建一个 linter 来捕获某些字词,但上下文对于包容性语言非常重要。可能会遗漏某些实例。
具有描述性的表单标签
自动化测试可以确定表单标签是否存在,但无法确定表单标签是否具有适当的描述性。
缺少替代文本
自动化测试可以检测到没有替代文本的情况。
色彩对比度问题
自动化测试是发现色彩对比度错误的最佳方式之一。颜色可能看起来没有问题,但仍然无法通过测试。