TL;DR
- Автоматизированные инструменты обнаруживают 30-40% проблем доступности — вам нужны как автоматизированные, так и ручные тесты со вспомогательными технологиями
- Структурируйте отчеты по принципам POUR WCAG (Воспринимаемый, Управляемый, Понятный, Надежный) с четкими уровнями серьезности
- Включайте шаги воспроизведения, затронутые группы пользователей и код исправления для каждой проблемы для быстрого устранения
Лучше всего для: QA-команд, проводящих аудиты доступности, специалистов по соответствию, документирующих конформность WCAG Пропустить если: Вам нужно только быстрое автоматическое сканирование — используйте axe DevTools напрямую вместо построения полных отчетов Время чтения: 15 минут
Тестирование доступности обеспечивает, что цифровые продукты используемы всеми, включая людей с ограниченными возможностями. С более чем 1 миллиардом людей по всему миру, живущих с какой-либо формой инвалидности, доступность — это не просто юридическое требование, но моральный императив и бизнес-возможность.
Это руководство предоставляет всесторонние фреймворки для документирования результатов тестирования доступности, обеспечения соответствия WCAG 2.2 и создания инклюзивного цифрового опыта.
Когда Создавать Полные Отчеты о Доступности
Создавать полный отчет когда:
- Подготовка к аудитам соответствия WCAG/ADA
- Запуск или значительное обновление публичного приложения
- Реагирование на жалобы о доступности или юридические вопросы
- Установление базовых метрик доступности для отслеживания улучшений
- Работа с внешними командами по исправлению, которым нужны детальные инструкции
Использовать более легкую документацию когда:
- Запуск автоматических проверок в CI/CD (логировать нарушения, фейлить билды)
- Быстрые ручные проверки во время разработки
- Уже есть устоявшийся процесс тестирования доступности
Уровни Соответствия WCAG 2.2
Понимание Уровней Соответствия
| Уровень | Описание | Требования | Типичный Случай Использования |
|---|---|---|---|
| A | Минимальный уровень | Основные функции доступности | Базовое соответствие, минимальное юридическое требование |
| AA | Средний уровень | Рекомендуемый стандарт | Большинство веб-сайтов, отраслевой стандарт, юридическое требование во многих странах |
| AAA | Высший уровень | Улучшенная доступность | Правительственные сайты, специализированные приложения с фокусом на доступность |
Дополнения WCAG 2.2 (выпущено октябрь 2023): Внешний вид фокуса, движения перетаскивания, размер цели, постоянная помощь, избыточный ввод и критерии успеха доступной аутентификации.
Принципы WCAG (POUR)
Воспринимаемый: Информация должна быть представимой способами, которые пользователи могут воспринять
- Текстовые альтернативы для нетекстового контента
- Субтитры и транскрипты для мультимедиа
- Адаптируемая структура контента
- Различимый визуальный и аудио контент
Управляемый: Пользовательский интерфейс должен быть управляемым
- Доступность с клавиатуры
- Достаточно времени для чтения и использования контента
- Нет контента, вызывающего судороги
- Навигируемый и находимый контент
Понятный: Интерфейс должен быть понятным
- Читаемое текстовое содержимое
- Предсказуемая функциональность
- Помощь при вводе и предотвращение ошибок
Надежный: Контент должен работать с текущими и будущими вспомогательными технологиями
- Валидный, семантический HTML
- Правильное использование ARIA
- Совместимость со скринридерами и другими инструментами
Шаблон Отчета о Тестировании Доступности
Раздел Резюме
# ОТЧЕТ О ТЕСТИРОВАНИИ ДОСТУПНОСТИ
## Резюме
**Приложение**: Веб-Платформа E-Commerce v3.2
**Дата Тестирования**: 12 января 2026
**Тестер**: Алекс Родригес (Сертифицированный IAAP WAS)
**Целевое Соответствие**: WCAG 2.2 Уровень AA
**Общий Результат**: 78% Соответствие (Требуется Улучшение)
### Сводка Ключевых Находок
| Серьезность | Количество | Заблокированные Пользователи |
|-------------|------------|------------------------------|
| Критическая | 12 | ~20% пользователей с инвалидностью заблокированы |
| Высокая | 23 | Значительные затруднения |
| Средняя | 45 | Ухудшенный опыт |
| Низкая | 18 | Незначительные проблемы |
### Соответствие по Принципу POUR
| Принцип | Уровень A | Уровень AA | Уровень AAA |
|---------|-----------|------------|-------------|
| Воспринимаемый | 85% | 72% | 45% |
| Управляемый | 90% | 78% | 52% |
| Понятный | 88% | 81% | 60% |
| Надежный | 82% | 75% | N/A |
### Требуемые Немедленные Действия
1. Добавить alt текст ко всем изображениям продуктов (12 страниц затронуто)
2. Исправить ловушки клавиатуры в модальных диалогах (блокирует 15% пользователей с моторными нарушениями)
3. Обновить коэффициенты контрастности цвета (не проходит минимум 4.5:1)
### Рекомендация по Срокам
- P0 Критические: Исправить в течение 7 дней
- P1 Высокие: Исправить в течение 30 дней
- P2/P3: Включить в следующий цикл спринта
Раздел Области Тестирования
## Область Тестирования
### Протестированные Страницы
1. Главная страница (/)
2. Список Продуктов (/products)
3. Детали Продукта (/products/[id])
4. Корзина Покупок (/cart)
5. Оформление Заказа (/checkout)
6. Аккаунт Пользователя (/account)
7. Результаты Поиска (/search)
8. Центр Помощи (/help)
### Использованные Инструменты Тестирования
**Автоматизированные:**
- axe DevTools 4.8
- WAVE (WebAIM)
- Lighthouse (Chrome DevTools)
- IBM Equal Access Checker
**Ручные:**
- NVDA 2025.1 (Windows)
- JAWS 2025 (Windows)
- VoiceOver (macOS Sonoma, iOS 18)
- TalkBack (Android 15)
- Dragon NaturallySpeaking 16
### Матрица Покрытия Тестами
| Область | Автомат. | NVDA | VoiceOver | Клавиатура | Когнитив. |
|---------|----------|------|-----------|------------|-----------|
| Главная | ✓ | ✓ | ✓ | ✓ | ✓ |
| Продукты | ✓ | ✓ | ✓ | ✓ | ✓ |
| Оформление | ✓ | ✓ | ✓ | ✓ | ✓ |
| Аккаунт | ✓ | ✓ | Частично | ✓ | - |
Детальная Документация Проблем
Шаблон Критической Проблемы
### Проблема #1: Отсутствие Alt Текста для Изображений Продуктов
**Критерий WCAG**: 1.1.1 Нетекстовый Контент (Уровень A)
**Серьезность**: Критическая
**Затронутые Пользователи**: Пользователи скринридеров, пользователи с отключенными изображениями
**Бизнес-воздействие**: Не могут завершить основной процесс покупки
**Местоположение**: Страница `/products`, все карточки продуктов
**Текущее Состояние (Не соответствует)**:
```html
<img src="/images/product-123.jpg" />
Ожидаемое Состояние (Соответствует):
<img src="/images/product-123.jpg"
alt="Синяя хлопковая футболка с круглым вырезом, размер M, $29.99" />
Шаги Воспроизведения:
- Перейти на /products используя NVDA + Firefox
- Нажать B для навигации по изображениям
- NVDA объявляет: “графика” (без описания)
Воздействие на Пользователя:
- Пользователи скринридеров: Не могут идентифицировать продукты
- Пользователи с отключенными изображениями: Нет информации о продукте
- Воздействие на SEO: Снижение видимости в поиске
Руководство по Исправлению:
- Добавить описательный alt текст включая: название продукта, ключевые визуальные характеристики, цена
- Для декоративных изображений использовать
alt="" - Для сложных изображений использовать
aria-describedbyдля расширенных описаний
Тест Проверки:
// Проверка правила axe-core
const results = await axe.run(document, {
rules: ['image-alt']
});
expect(results.violations).toHaveLength(0);
Приоритет: P0 - Критический Оценка Трудозатрат: 2-3 дня (300+ изображений) Назначено: Фронтенд-команда
### Шаблон Проблемы Высокого Приоритета
```markdown
### Проблема #2: Ловушка Клавиатуры в Модальных Диалогах
**Критерий WCAG**: 2.1.2 Без Ловушки Клавиатуры (Уровень A)
**Серьезность**: Критическая
**Затронутые Пользователи**: Пользователи только клавиатуры, моторные нарушения (~15% пользователей с инвалидностью)
**Местоположение**: Модальное окно Добавить в Корзину, Всплывающее окно Входа
**Описание**:
Фокус захватывается внутри модальных диалогов. Нажатие Escape или Tab не закрывает модальное окно и не позволяет навигацию наружу.
**Видео-доказательство**: [Ссылка на запись экрана, показывающую ловушку клавиатуры]
**Шаги Воспроизведения**:
1. Перейти на страницу продукта используя клавишу Tab
2. Нажать Enter на кнопке "Добавить в Корзину"
3. Модальное окно открывается, фокус перемещается внутрь
4. Нажать клавишу Escape → СБОЙ (модальное окно остается открытым)
5. Нажать Tab повторно → СБОЙ (фокус циклится внутри модального окна)
**Анализ Корневой Причины**:
Компонент модального окна без:
- Обработчика клавиши Escape
- Ловушки фокуса с механизмом выхода
- Возврата фокуса к элементу-триггеру при закрытии
**Код Исправления**:
```javascript
class AccessibleModal {
constructor(modalElement, triggerElement) {
this.modal = modalElement;
this.trigger = triggerElement;
this.focusableElements = this.getFocusableElements();
this.firstFocusable = this.focusableElements[0];
this.lastFocusable = this.focusableElements[this.focusableElements.length - 1];
}
open() {
this.modal.setAttribute('aria-hidden', 'false');
this.modal.style.display = 'block';
this.firstFocusable.focus();
this.addEventListeners();
}
close() {
this.modal.setAttribute('aria-hidden', 'true');
this.modal.style.display = 'none';
this.trigger.focus(); // Вернуть фокус
this.removeEventListeners();
}
handleKeydown = (e) => {
if (e.key === 'Escape') {
this.close();
return;
}
if (e.key === 'Tab') {
if (e.shiftKey && document.activeElement === this.firstFocusable) {
e.preventDefault();
this.lastFocusable.focus();
} else if (!e.shiftKey && document.activeElement === this.lastFocusable) {
e.preventDefault();
this.firstFocusable.focus();
}
}
}
}
Приоритет: P0 - Критический Оценка Трудозатрат: 1 день
### Шаблон Проблемы Контрастности Цвета
```markdown
### Проблема #3: Недостаточный Контраст Цвета
**Критерий WCAG**: 1.4.3 Контраст (Минимум) (Уровень AA)
**Серьезность**: Высокая
**Затронутые Пользователи**: Слабое зрение, дальтонизм, пожилые пользователи, мобильные пользователи на улице
**Элементы с Нарушениями**:
| Элемент | Передний план | Фон | Фактический | Требуемый | Разница |
|---------|--------------|-----|-------------|-----------|---------|
| Вторичная кнопка | #999999 | #FFFFFF | 2.8:1 | 4.5:1 | -1.7 |
| Метка формы | #AAAAAA | #FFFFFF | 2.3:1 | 4.5:1 | -2.2 |
| Ссылка подвала | #888888 | #F5F5F5 | 3.2:1 | 4.5:1 | -1.3 |
| Текст placeholder | #CCCCCC | #FFFFFF | 1.6:1 | 4.5:1 | -2.9 |
**Исправление - Обновленная Цветовая Палитра**:
```css
:root {
/* Старый → Новый (с коэффициентом контрастности) */
--text-secondary: #595959; /* Было #999999 → 7.0:1 ✓ */
--text-label: #4A4A4A; /* Было #AAAAAA → 9.7:1 ✓ */
--text-footer: #545454; /* Было #888888 → 7.5:1 ✓ */
--text-placeholder: #767676; /* Было #CCCCCC → 4.5:1 ✓ */
}
Инструмент Тестирования: Использовать WebAIM Contrast Checker или DevTools браузера Приоритет: P1 - Высокий Оценка Трудозатрат: 3 дня (обзор дизайна + реализация + QA)
## Методология Тестирования
### Интеграция Автоматизированного Тестирования
```javascript
// accessibility-tests.js - интеграция CI/CD
const { AxePuppeteer } = require('@axe-core/puppeteer');
const puppeteer = require('puppeteer');
const WCAG_TAGS = ['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22aa'];
async function runAccessibilityAudit(urls) {
const browser = await puppeteer.launch();
const results = [];
for (const url of urls) {
const page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle0' });
const axeResults = await new AxePuppeteer(page)
.withTags(WCAG_TAGS)
.analyze();
results.push({
url,
violations: axeResults.violations,
passes: axeResults.passes.length,
timestamp: new Date().toISOString()
});
// Фейлить CI если найдены критические нарушения
const critical = axeResults.violations.filter(v => v.impact === 'critical');
if (critical.length > 0) {
console.error(`КРИТИЧНО: ${url} имеет ${critical.length} критических нарушений`);
process.exitCode = 1;
}
}
await browser.close();
return results;
}
// Интеграция с GitHub Actions
// .github/workflows/accessibility.yml
Чек-лист Ручного Тестирования
## Чек-лист Ручного Тестирования Доступности
### Навигация с Клавиатуры
- [ ] Все интерактивные элементы доступны через клавишу Tab
- [ ] Логичный порядок табуляции следует визуальной компоновке
- [ ] Индикаторы фокуса видны (минимальный контраст 3:1)
- [ ] Нет ловушек клавиатуры
- [ ] Ссылки пропуска присутствуют и функциональны
- [ ] Модальные диалоги захватывают и возвращают фокус корректно
### Тестирование со Скринридером
- [ ] Все изображения имеют соответствующий alt текст
- [ ] Метки форм правильно ассоциированы (`for`/`id` или обертка)
- [ ] Сообщения об ошибках объявляются с `role="alert"`
- [ ] Динамический контент объявляется с ARIA live регионами
- [ ] ARIA landmarks присутствуют (banner, main, navigation, contentinfo)
- [ ] Заголовки создают логическую структуру документа
### Визуальное Тестирование
- [ ] Контраст цвета соответствует 4.5:1 для обычного текста, 3:1 для крупного
- [ ] Текст остается читаемым при 200% масштабе
- [ ] Нет информации, передаваемой только цветом
- [ ] Контент перестраивается при ширине 320px без горизонтальной прокрутки
- [ ] Фокус виден на всех интерактивных элементах
### Формы
- [ ] Все поля имеют видимые ассоциированные метки
- [ ] Обязательные поля помечены (не только цветом звездочки)
- [ ] Сообщения об ошибках конкретны и полезны
- [ ] Атрибуты autocomplete присутствуют где применимо
### Мультимедиа
- [ ] Видео имеют точные субтитры
- [ ] Аудио контент имеет транскрипты
- [ ] Автовоспроизведение может быть приостановлено в течение 3 секунд
- [ ] Нет мигающего контента >3 раз в секунду
Измерение Успеха
| Метрика | До | После | Как Отслеживать |
|---|---|---|---|
| Автоматические нарушения | 98 | 0 критических | axe-core в CI |
| Соответствие WCAG AA | 65% | 95%+ | Ежемесячные аудиты |
| Завершение задач скринридером | 45% | 90% | Пользовательское тестирование |
| Время навигации клавиатурой | 3x мыши | 1.5x мыши | Хронометраж задач |
| Жалобы на доступность | 12/мес | <1/мес | Тикеты поддержки |
Предупреждающие знаки что не работает:
- Автоматическое сканирование показывает 0 проблем, но жалобы пользователей продолжаются (отсутствует ручное тестирование)
- Процент соответствия застопорился (команда не приоритизирует исправления доступности)
- Новые функции постоянно вводят нарушения (отсутствует доступность в процессе дизайна/разработки)
Подходы с Использованием ИИ
Инструменты ИИ трансформировали тестирование доступности, но с четкими ограничениями. Текущие показатели обнаружения ИИ по типу проблемы:
- Отсутствующий alt текст: 95%+
- Контраст цвета: 90%+
- Отсутствующие метки форм: 90%+
- Иерархия заголовков: 85%+
- Доступность клавиатуры: 70%+
- Корректность ARIA: 60-80%
- Оценка качества контента: 30-50%
Что ИИ делает хорошо:
- Быстрое сканирование больших сайтов на распространенные нарушения
- Обнаружение отсутствующих атрибутов (alt, метки, ARIA)
- Математическая проверка коэффициентов контрастности
- Идентификация структурных проблем (уровни заголовков, landmarks)
- Генерация предложений кода исправления
Что все еще требует людей:
- Оценка точности описания изображений alt текстом
- Тестирование реального потока навигации клавиатурой
- Оценка когнитивной нагрузки и понятности
- Проверка качества объявлений скринридера
- Тестирование с реальными комбинациями вспомогательных технологий
Полезный промпт для анализа доступности:
Проанализируй этот HTML на проблемы соответствия WCAG 2.2 AA:
[вставить HTML]
Для каждой найденной проблемы:
1. Указать конкретный критерий успеха WCAG
2. Объяснить воздействие на пользователя
3. Предоставить пример соответствующего кода
4. Оценить серьезность (Критическая/Высокая/Средняя/Низкая)
Чек-лист Лучших Практик
| Практика | Почему Важно |
|---|---|
| Тестировать с реальными вспомогательными технологиями | Автоматические инструменты пропускают 60-70% проблем реального пользовательского опыта |
| Включать шаги воспроизведения | Разработчики не могут исправить то, что не могут воспроизвести |
| Предоставлять код исправления | Уменьшает переписку и ускоряет исправления |
| Документировать затронутые группы пользователей | Создает эмпатию и ясность приоритизации |
| Интегрировать в CI/CD | Предотвращает регрессию, ловит проблемы рано |
| Тестировать после каждого крупного релиза | Функции меняются, доступность может сломаться |
| Включать бизнес-влияние | Связывает доступность с доходом и рисками |
Заключение
Тестирование доступности — это непрерывный процесс, требующий автоматизированных инструментов, ручного тестирования со вспомогательными технологиями и четкой документации. Цель отчета о тестировании доступности — не просто перечислить нарушения, а обеспечить быстрое и эффективное исправление.
Лучшие отчеты сочетают количественные данные (проценты соответствия, подсчет нарушений) с качественным контекстом (воздействие на пользователя, шаги воспроизведения, исправления кода). Это сочетание дает командам разработки все необходимое для создания действительно доступных приложений.
Связанные статьи:
- Тестирование Доступности Мобильных Приложений: WCAG для iOS и Android - Платформо-специфичное тестирование доступности
- Лучшие Практики Проектирования Тест-Кейсов - Структурирование эффективных сценариев тестирования
- Руководство по Исследовательскому Тестированию - Обнаружение проблем через направленное исследование
- Отчетность с Allure Framework - Визуальная документация тестов
- Непрерывное Тестирование в DevOps - Интеграция доступности в CI/CD