无障碍测试概述:为什么你必须现在就关注它
说实话,我以前带团队的时候,每次提到「无障碍测试」,总有人觉得这是「加分项」,不是「必选项」。直到有一次我们交付的产品被一家大型金融机构退回——原因是他们的采购条款里硬性要求 WCAG 2.1 AA 合规。那个项目,我们加班重写了将近一半的前端代码。
从那以后,我养成了一个习惯:每个需求评审里,必须有人问一句「这个交互,盲人怎么用?」。这不是政治正确,这是工程硬约束。今天我们就从最基础的东西讲起。
什么是无障碍测试
无障碍测试,说白了就是检查你的产品能不能被「所有人」使用——包括那些视力不好、听不见、手抖、或者只能用键盘操作的人。
你可能会想:「我的用户都是正常人啊」。但你想想看,一个正常人也会遇到以下场景:
- 在嘈杂的地铁里看视频,需要字幕
- 眼睛盯着投影开会时,用键盘操作幻灯片
- 临时手受伤,只能用语音控制手机
所以无障碍不是「给少数人开小灶」,而是让产品在任何场景下都好用。我建议把它当成一种质量属性,和性能、安全一样重要。
定义:无障碍测试是验证软件产品是否遵循无障碍标准(如 WCAG)的测试活动,覆盖感知、操作、理解、兼容四个维度。
为什么重要?聊聊我踩过的坑
曾经有一次,我们的页面按钮没有正确设置 aria-label,导致屏幕阅读器读出来的内容是「按钮,未标记」。客户那边的视障用户直接投诉到 CEO 那里。嗯,那次复盘会上我脸都绿了。
无障碍测试的重要性可以归结为四点:
| 维度 | 为什么重要 | 我见过的真实案例 |
|---|---|---|
| 法律合规 | 多国立法要求数字产品必须无障碍 | 一家 SaaS 公司因为没有提供无障碍声明,被用户起诉 |
| 用户覆盖面 | 全球约 15% 的人口有某种形式的残疾 | 淘宝、京东的无障碍版本每年服务上千万用户 |
| SEO 与性能 | 语义化 HTML 提升搜索引擎抓取效率 | 修复 alt 属性后,我们站点的图片搜索流量涨了 12% |
| 工程质量 | 无障碍要求促使代码更健壮 | 强制用键盘导航后,我们发现了很多焦点管理 bug |
注意:不要等到产品快上线了才补无障碍测试。我在项目中遇到过最惨的情况是:开发完成发现所有表单都没有 label,三千多个 input 要挨个改。那周我们团队每天加班到十一点。
WCAG 标准简介——我们用什么来判合规
WCAG(Web Content Accessibility Guidelines)是目前全球最权威的无障碍指南,现在是 2.2 版本,但企业里普遍要求 2.1 AA 级别。它把无障碍需求分成四个原则,简称「POUR」:
- Perceivable(可感知)——信息必须能通过至少一种感官接收。比如图片加
alt、视频加字幕。 - Operable(可操作)——所有交互都必须能通过多种方式完成。比如键盘能访问所有功能,不要有 3 秒以上的时间限制。
- Understandable(可理解)——内容与界面必须清晰一致。比如错误的提示要明确、导航要统一。
- Robust(健壮)——代码必须能被各类辅助技术正确解析。比如使用标准的语义标签而不是
<div onclick>。
每个原则下又细分成成功标准(Success Criteria),A 级是基本要求,AA 级是大多数企业的合规目标,AAA 级是最严格但实际应用的少。我建议团队先把目标定在 AA 级,跑一趟再考虑要不要冲 AAA。
无障碍测试在 CI 中的位置
你可能会问:为什么非要放到 CI/CD 里?我个人习惯是:能自动化的坚决不手工。以前我们做无障碍测试靠 QA 用 JAWS 朗读器逐个页面跑,一个版本测下来要三天。后来用 axe-core + Puppeteer 集成到流水线里,每次 PR 合并前自动扫描,阻塞的问题直接在 MR 上标红。
下面的图可以帮你理解无障碍测试在企业级 CI 中的整体位置:
避坑指南:我在刚开始做无障碍 CI 时犯过一个错——把所有违规都设为「阻断」。结果构建天天失败,开发怨声载道。后来我改成:A 级违规直接阻塞,AA 级违规预警但不阻塞,通过 PR 注释给开发参考。效果好了很多。
本章知识结构一览
| 知识点 | 核心内容 | 实战切入点 |
|---|---|---|
| 无障碍测试定义 | 验证产品是否可被所有人使用 | 从给一个按钮加 aria-label 开始 |
| 四大价值 | 法律、用户、SEO、质量 | 写合规声明文档,查风险点 |
| WCAG 原则 | 可感知、可操作、可理解、健壮 | 用 axe DevTools 扫描任意页面 |
| CI 集成方式 | 静态分析 → 单元 → 集成 → E2E | 写第一个 axe-core 脚本 |