辅助功能测试

本主题介绍可帮助你验证 Windows 和 Web 应用程序的辅助功能实现的各种工具和过程。

成功的用户体验

编程访问和键盘访问是支持应用程序中辅助功能的关键要求。 测试 Windows 应用程序的辅助功能、辅助技术 (AT) 工具和 UI 框架对于确保各种残障人士和限制( (包括视觉、学习、灵活性/移动性和语言/通信障碍) 或仅喜欢使用键盘的用户)获得成功的用户体验至关重要。

如果没有对辅助技术 (AT) (如屏幕阅读器和屏幕键盘)的充分支持,具有视觉、学习、灵巧性/移动性以及语言/通信障碍或限制的用户 (和仅喜欢使用键盘) 的用户可能会发现很难(如果不是不可能)使用应用程序。

辅助功能测试工具

辅助功能见解

Accessibility Insights 可帮助开发人员查找并修复网站和 Windows 应用程序中的辅助功能问题。

  • 适用于 Windows 的辅助功能见解 可帮助开发人员查找并修复 Windows 应用中的辅助功能问题。 该工具支持三种主要方案:
    • 通过 Live Inspect ,开发人员只需将鼠标悬停在元素上或在元素上设置键盘焦点,即可验证应用中的元素是否具有正确的 UI 自动化属性。
    • FastPass - 一个轻量级、两步式流程,可帮助开发人员在不到五分钟的时间里识别常见的高影响力辅助功能问题。
    • 通过故障排除 ,可以诊断和修复特定的辅助功能问题。
  • Accessibility Insights for Web 是 Chrome 和 Microsoft Edge 预览体验成员 的扩展,可帮助开发人员查找和修复 Web 应用和网站中的辅助功能问题。 它支持两种主要方案:
    • FastPass - 一个轻量级、两步式流程,可帮助开发人员在不到五分钟的时间里识别常见的高影响力辅助功能问题。
    • 评估 - 允许任何人验证网站是否 100% 符合辅助功能标准和准则。 Accessibility Insights 还允许查看 UI 自动化元素、属性、控件模式和事件, (类似于以下部分) 中所述的 检查AccEvent 旧工具。

旧版测试工具

注意

此处所述的工具在 Windows SDK 中仍然可用,但我们强烈建议过渡到 辅助功能见解

Windows 软件开发工具包 (SDK) 包括多个辅助功能测试工具,包括 AccScope检查UI 辅助功能检查器等。

可以从 Microsoft Visual Studio 命令提示符或通过导航到开发计算机上 Windows SDK 安装位置的 bin 文件夹来启动以下辅助功能测试工具。

AccScope

AccScope 支持在早期设计和开发阶段直观评估应用程序的辅助功能。 AccScope 专门用于测试“讲述人”辅助功能方案,并使用应用提供的 UI 自动化信息来显示可在何处改进辅助功能。

检查

你可以使用 Inspect 选择任何 UI 元素并查看其辅助功能数据。 可以查看 Microsoft UI 自动化属性和控件模式并测试 UI 自动化树中自动化元素的导航结构。 在扩展公共控件或创建自定义控件时,它对于确保正确设置属性和控件模式特别有用。

当你开发 UI 以验证如何在 UI 自动化中公开辅助功能属性时,请使用 Inspect。 在某些情况下,属性来自已经为默认 XAML 控件实现的 UI 自动化支持。 在其他情况下,属性来自已经在 XAML 标记中设置为 AutomationProperties 附加属性的特定值。

下图展示了 Inspect 工具,用于查询记事本中“编辑”菜单元素的 UI 自动化属性。

“检查”工具的屏幕截图。

UI 辅助功能检查器

UI 辅助功能检查器 (AccChecker) 可帮助你在运行时发现潜在的辅助功能问题。 AccChecker 包括 UI 自动化、Microsoft Active Accessibility 和可访问富 Internet 应用程序的验证检查, (ARIA) 。 它可以为缺少名称、树问题等错误提供静态检查。 它有助于验证编程访问,并包括用于自动执行辅助功能测试的高级功能。 可以在 UI 或命令行模式下运行 AccChecker。 若要运行 UI 模式工具,请在 Windows SDK bin 文件夹中打开 AccChecker 文件夹,运行acccheckui.exe,然后单击“帮助”菜单。

UI 自动化验证

UI 自动化验证 (UIA 验证) 是一个框架,用于在控件或应用程序中手动和自动测试 UI 自动化实现, (结果可以记录) 。 UIA 验证 可以集成到测试代码中,对 UI 自动化方案执行定期的自动测试或抽查,并且对于验证具有已建立功能的应用程序的更改是否没有新问题或回归非常有用。 可以在 Windows SDK bin 文件夹的 UIAVerify 子文件夹中找到 UIA 验证

辅助功能事件查看器

Accessible Event Watcher (AccEvent) 测试在 UI 发生变化时,应用的 UI 元素是否引发正确的 UI 自动化和 Microsoft Active Accessibility 事件。 当焦点改变时,或者当 UI 元素被调用、选择或者其状态或属性发生变化时,UI 会发生变化。 AccEvent 通常用于调试问题并验证自定义控件和扩展控件是否正常工作。

辅助功能测试过程

测试键盘辅助功能

测试键盘辅助功能的最佳方式是拔下鼠标或使用屏幕键盘(如果使用的是平板设备)。 使用 Tab 键测试键盘辅助功能导航。 应可以使用 Tab 键循环选择所有交互 UI 元素。 对于复合 UI 元素,验证你可以使用箭头键在元素的不同部分之间导航。 例如,你应当能够使用键盘键在项目列表中导航。 最后,对于所有的交互 UI 元素,确保你可以在它们拥有焦点之后立即使用键盘(通常使用 Enter 键或空格)调用它们。

验证可见文本的对比度

使用颜色对比工具验证可见文本的对比度是否可接受。 例外情况包括不活动的 UI 元素,以及不传递任何信息且可以在含义不变的情况下重新整理的徽标或装饰文本。 有关对比率和例外情况的详细信息,请参阅辅助文本要求。 若要了解可以测试对比率的工具,请参阅 WCAG 2.0 G18 的技术(“资源”部分)

注意

“WCAG 2.0 G18 的技术”列出的某些工具无法与 UWP 应用交互使用。 你可能需要在该工具中手动输入前景和背景颜色值,对应用 UI 进行屏幕捕获,然后对屏幕捕获图像运行对比度工具,或者在图像编辑程序中打开源位图文件时运行该工具,而不是在应用加载该图像时。

在高对比度下验证应用

当高对比度主题处于活动状态时使用你的应用,以验证所有 UI 元素均可正确显示。 所有文本都应可读,且所有图像都应清晰可见。 调整 XAML 主题-字典资源或控件模板,以更正源自控件的所有主题问题。 如果显著的高对比度问题不是来自主题或控件(如图像文件),请提供在高对比度主题处于活动状态时要使用的单独的版本。

使用显示设置验证你的应用

使用可调节屏幕的每英寸点数 (dpi) 值的系统屏幕选项,并确保当该 dpi 值发生更改时,你的应用 UI 可正确缩放。 (某些用户可采用辅助功能选项方式更改 dpi 值,该选项可从“轻松使用”以及屏幕属性中获得。)如果发现任何问题,请遵循布局缩放指南,并提供其他资源以用于不同的缩放因素。

使用“讲述人”验证主应用方案

使用“讲述人”测试应用的屏幕阅读体验。

使用以下步骤,配合鼠标和键盘使用“讲述人”测试你的应用:

  1. Windows 徽标键 + Ctrl + Enter 启动“讲述人”。 在 Windows 10 版本 1607 之前的版本中,使用 Windows 徽标键 + Enter 启动“讲述人”。
  2. 使用键盘上的 Tab 键、箭头键、Caps Lock + 箭头键在你的应用中导航。
  3. 在应用中导航时,听“讲述人”读 UI 元素,验证下列项:
    • 对于每个控件,确保“讲述人”读出所有可见内容。 还需要确保“讲述人”读出每个控件的名称、所有适用的状态(已选中、已选择,等等)、控件类型(按钮、复选框、列表项,等等)。
    • 如果相应元素可交互,请验证是否可以使用“讲述人”通过按 Caps Lock + Enter 调用其操作。
    • 对于每个表格,确保“讲述人”正确读出表格名称、表格描述(如果可用)以及行标题和列标题。
  4. Caps Lock + Shift + Enter 搜索你的应用,验证所有控件都显示在搜索列表中,并验证控件名称已本地化并且可读。
  5. 关闭监视器,尝试只使用键盘和“讲述人”完成主屏方案。 若要获取“讲述人”命令和快捷方式的完整列表,请按 Caps Lock + F1

从 Windows 10 版本 1607 开始,我们在“讲述人”中引入了新的开发人员模式。 当“讲述人”已经在运行时,通过按 Control + Caps Lock + F12 打开开发人员模式。 当开发人员模式已启用时,屏幕将屏蔽,并且将仅突出显示可访问的对象和以编程方式向“讲述人”公开的关联文本。 针对向“讲述人”公开的信息,这为你提供了良好的视觉表示形式。

按照以下步骤,使用“讲述人”的触摸模式测试你的应用:

注意

在支持 4 个以上联系人的设备上,“讲述人”自动进入触摸模式。 在主要屏幕上,“讲述人”不支持多监视器方案或多点触控数字化器。

  1. 熟悉 UI,了解布局。

    • 使用单根手指轻扫手势在 UI 中导航。 使用向左或向右轻扫在项目间移动,使用向上或向下轻扫更改要导航的项目的类别。 类别包括所有项目、链接、表格、标题等。 使用单根手指轻扫手势进行导航类似于使用 Caps Lock + 箭头键进行导航。
    • 使用 Tab 手势在可聚焦的元素间导航。 三根手指向右或向左轻扫与使用键盘上的 TabShift + Tab 导航相似。
    • 使用单根手指从空间角度调查 UI。 上下拖动或左右拖动单根手指,以使“讲述人”读出你的手指下的项目。 可以使用鼠标作为替代项,因为鼠标在拖动单根手指时使用相同的点击测试逻辑。
    • 通过三个手指向上轻扫读出整个窗口及其所有内容。 这等效于使用 Caps Lock + W

    如果存在无法到达的重要 UI,则表明可能存在辅助功能问题。

  2. 与控件交互,测试其主要操作、辅助操作以及滚动行为。

    主要操作包括激活按钮、放置文本插入符号、对控件设置焦点等操作。 辅助操作包括选择列表项、展开提供了多个选项的按钮等。

    • 测试主要操作:双击,或用一个手指按住,另一个手指点击。
    • 测试辅助操作:点击三次,或用一个手指按住,另一个手指双击。
    • 测试滚动行为:使用两个手指轻扫,沿所需方向滚动。

    某些控件提供其他操作。 若要显示完整列表,请用四根手指点击。

    如果控件响应鼠标或键盘,但不响应主要触摸交互或辅助触摸交互,则控件可能需要实现其他的 UI 自动化控件模式。

还应考虑使用 AccScope 工具测试应用的“讲述人”辅助功能方案。 AccScope 工具主题介绍了如何配置 AccScope 来测试“讲述人”方案。

检查应用的 UI 自动化表示

前面提到的某些 UI 自动化测试工具提供了一种查看应用的方式,这种方式有意不考虑应用的外观,而以 UI 自动化元素结构表示应用。 在辅助功能方案中,UI 自动化客户端(主要是辅助技术)将通过此方式与你的应用进行交互。

AccScope 工具提供了一种十分有趣的应用视图,因为你既能以可视化表示的形式查看 UI 自动化元素,也能以列表形式来查看。 如果使用可视化效果,那么你可以深入查看各个部分,从而对应用 UI 的视觉外观有一定的了解。 你甚至可以在为 UI 指定全部逻辑之前对最初 UI 原型的辅助功能进行测试,确保应用的视觉交互和辅助功能方案导航保持平衡。

可供测试的一个方面是,UI 自动化元素视图中是否存在不应出现在其中的元素。 如果发现要从该视图中去除的元素,或者恰好相反,视图中缺少某些元素,则可以使用 AutomationProperties.AccessibilityView XAML 附加属性调整 XAML 控件在辅助功能视图中的显示方式。 查看基本辅助功能视图后,还可以通过启用箭头键重新检查 Tab 键序列或空间导航,从而确保用户可以查看控件视图中公开的各个交互部分。