Защо автоматизираното тестване на достъпността пропуска половината ви проблеми
Автоматизираните проверки са полезни, бързи и необходими. Те обаче са непълни по замисъл.
Съдържание
- Неудобната истина за автоматизираното тестване на достъпността
- В какво автоматизираните тестове са добри
- Къде автоматизацията се проваля
- Фалшивото успокоение на високия резултат
- Категориите, които най-често се пропускат
- 1. Поведение на клавиатурата и фокуса
- 2. Смислени имена и описания
- 3. Обработка на грешки
- 4. Визуална адаптация
- 5. Яснота на съдържанието
- По-добър процес на тестване
- Пускайте автоматизирани проверки непрекъснато
- Добавете ръчно тестване с клавиатура
- Тествайте с поне един екранен четец
- Преглеждайте съдържание и състояния
- Включвайте потребители с увреждания, когато залогът е висок
- Как да тълкувате автоматизираните резултати отговорно
- Практичният стандарт: автоматизирайте очевидното, ръчно тествайте преживяването
Неудобната истина за автоматизираното тестване на достъпността
Автоматизираното тестване на достъпността е един от най-добрите навици, които един уеб екип може да изгради. То открива липсващи етикети на формуляри, текст с нисък контраст, невалиден ARIA, дублирани ID, празни бутони и други дефекти, които никога не бива да стигат до продукционна среда.
То също така често се разбира погрешно.
Успешен автоматизиран отчет за достъпност не означава, че една страница е достъпна. Означава, че инструментът не е намерил подмножеството проблеми, които знае как да открива. Това подмножество е ценно, но ограничено. Много проблеми с достъпността зависят от смисъл, ред, намерение, контекст и човешко взаимодействие. Софтуерът може да инспектира маркирането. Той не може надеждно да разбере дали преживяването работи за човек, който използва екранен четец, клавиатура, увеличение, гласово управление, субтитри или когнитивна подкрепа.
Затова твърдението, че автоматизираното тестване пропуска около половината ви проблеми, не е цинично. То е щедро. Някои категории проблеми са силно автоматизируеми. Други почти изобщо не са.
Практичният отговор не е да изоставите автоматизираните инструменти. А да ги поставите на правилното място: рано, често и като част от по-широк процес на тестване.
В какво автоматизираните тестове са добри
Автоматизираните инструменти са отлични в откриването на детерминирани неизправности. Ако дадено правило може да бъде изразено като машинно четимо условие, скенерът обикновено може да го провери бързо и последователно.
Често срещани примери включват:
- Изображения с липсващи атрибути
alt - Полета във формуляри без свързани етикети
- Бутони без достъпни имена
- Текст, който не покрива праговете за контраст
- Невалидни ARIA атрибути или роли
- Нива на заглавия, които прескачат по подозрителен начин
- Ориентири, които липсват или се дублират
- Връзки с празни достъпни имена
- Таблици без базова структура
Тези проверки си струва да се автоматизират, защото хората не са добри в повтаряща се инспекция. Никой не трябва ръчно да преглежда всяка страница за липсващи етикети, ако инструмент може да ги открие за милисекунди.
Автоматизираните проверки също правят достъпността по-лесна за обсъждане в инженерните процеси. Провален тест в CI е конкретен. Предупреждение в pull request е навременно. Линия на тенденция през шаблоните дава на екипа нещо, което да подобрява.
Проблемът започва, когато екипите третират тези проверки като доказателство за достъпност, а не като доказателство за базова хигиена.
Къде автоматизацията се проваля
Достъпността не е само свойство на кода. Тя е свойство на употребата.
Инструмент може да ви каже дали изображението има alt текст. Обикновено не може да ви каже дали този alt текст е полезен. Изображение на продукт може да се нуждае от подробно описание на продуктова страница, от никакво описание в декоративен hero блок и от напълно различно описание в помощна статия. Правилният отговор зависи от контекста. Затова екипите се нуждаят от редакционни насоки като прагматичен подход към alt текста за изображения, а не само от правило в linter.
Същият проблем се появява навсякъде.
Скенер може да потвърди, че всеки бутон има достъпно име. Той не винаги може да каже дали името има смисъл. Страница с пет бутона, наречени „Изпрати“, може да премине базово правило и въпреки това да е мъчителна за потребители на екранни четци. Модален прозорец може да има правилните ARIA атрибути, но да задържа фокуса неправилно. Персонализиращо падащо меню може да изглежда съвместимо в статичното маркиране и да се провали в момента, в който някой се опита да го използва с клавиатура.
Автоматизацията се затруднява с въпроси като:
- Съвпада ли редът на фокуса с визуалния и логическия ред?
- Може ли всяка задача да бъде завършена само с клавиатура?
- Специфични ли са съобщенията за грешки, навременни ли са и свързани ли са с полетата?
- Продължава ли страницата да работи, когато текстът бъде преоразмерен или увеличен?
- Смислен ли е редът на четене за помощните технологии?
- Разбираеми ли са инструкциите, без да разчитат на цвят или позиция?
- Комуникират ли субтитрите, транскрипциите и етикетите действително съдържанието?
- Държи ли се компонентът предсказуемо в различните си състояния?
Това не са крайни случаи. Те са централни за достъпността.
Фалшивото успокоение на високия резултат
Оценките за достъпност са съблазнителни, защото свиват сложна тема до число. Табло показва 98. Отчетът показва зелени отметки. Пускането изглежда по-безопасно.
Но резултатът измерва само това, което инструментът измерва.
Това прилича на тестването на производителност. Отчет на Lighthouse може да разкрие важни проблеми, но не е същото като да наблюдавате реален потребител, който се мъчи с бавно плащане на телефон от среден клас. Ако екипът ви вече използва одити на производителността, важи същият начин на мислене: прочетете отчета внимателно, след това приоритизирайте констатациите, които засягат реални потребители. Писали сме за това разграничение в как да четете отчет на Lighthouse, без да изпадате в паника.
Отчетите за достъпност изискват същата сдържаност. Чист автоматизиран скан е отправна точка. Не е сертификат.
Рискът е особено висок, когато екипите пускат сканирания само срещу статични страници. Съвременните интерфейси са със състояния: менюта се отварят, панели се плъзгат, toast съобщения се появяват, съобщенията за валидация се обновяват, табове сменят панели, филтри пренаписват съдържание, а удостоверяването променя всичко. Много сериозни дефекти в достъпността живеят именно в тези взаимодействия.
Ако скенерът ви вижда само първоначалния DOM, той пропуска продукта.
Категориите, които най-често се пропускат
1. Поведение на клавиатурата и фокуса
Достъпът с клавиатура е един от най-ясните примери защо автоматизацията е недостатъчна.
Инструмент може да открие дали даден елемент може да получи фокус. Той може да улови положителни стойности на tabindex или очевидни капани на фокуса. Но не може надеждно да прецени дали последователността при Tab се усеща последователна, дали фокусът се премества на правилното място след действие или дали затворен компонент връща фокуса към задействащия елемент.
Нужен е човек, който да натиска Tab, Shift+Tab, Enter, Space, Escape и клавишите със стрелки през реалния работен поток.
Това е особено важно за персонализирани контроли. Нативните HTML елементи носят години поведение за достъпност безплатно. Пресъздаването на бутони, select елементи, checkbox елементи, менюта и диалози с div означава, че вашият екип вече притежава това поведение. Ако преглеждате интерактивни компоненти, започнете с кратък списък за проверка за достъпни уеб бутони и приложете същата дисциплина към всяка персонализирана контрола.
2. Смислени имена и описания
Автоматизираните инструменти могат да откриват липса. Те са много по-слаби в откриването на качество.
Връзка, наречена „Прочетете още“, технически може да има достъпно име. Бутон с етикет OK може да е валиден. Подсказка във формуляр може да присъства. Но смислени ли са в контекст? Често не.
Достъпните имена трябва да казват на потребителите какво ще се случи или какво представлява елементът. Това изисква преценка. Изисква и тестване с интерфейса, не само с кода.
3. Обработка на грешки
Формулярите са пълни с проблеми с достъпността, които скенерите улавят само частично.
Инструмент може да маркира поле без етикет. Може да не улови, че съобщението за валидация се появява твърде късно, изчезва твърде бързо, не се обявява на екранните четци или казва „Невалидно въведени данни“, когато трябва да казва „Паролата трябва да бъде поне 12 знака“.
Добрата обработка на грешки е дизайн на взаимодействието. Тя се нуждае от ръчно тестване и в идеалния случай от потребителско тестване.
4. Визуална адаптация
WCAG включва изисквания около преоразмеряване на текст, пренареждане, контраст, отстояния и това да не се разчита на един-единствен сетивен сигнал. Част от това може да се провери автоматично, но истинският въпрос е дали интерфейсът остава използваем при променени условия.
Опитайте 200% увеличение. Опитайте преоразмеряване на текста в браузъра. Опитайте режим с висок контраст или forced colors mode. Опитайте тесни ширини на viewport. Опитайте reduced motion. Много сайтове, които изглеждат изпипани при настройки по подразбиране, се чупят бързо, когато потребителите заявят предпочитанията си.
5. Яснота на съдържанието
Никой автоматизиран инструмент за достъпност не може напълно да оцени дали съдържанието е разбираемо.
Той може да маркира липсващи заглавия или неясен текст на връзки. Не може да знае дали страницата обяснява процес ясно, дали етикетите съответстват на очакванията на потребителите или дали гъстият текст създава избегаемо когнитивно натоварване.
Достъпността не е само съвместимост с помощни технологии. Тя е и намаляване на триенето за хора под стрес, използващи непознат език, справящи се с ограничения на вниманието или навигиращи сложни задачи.
По-добър процес на тестване
Балансираният процес за достъпност има слоеве.
Пускайте автоматизирани проверки непрекъснато
Използвайте автоматизирани тестове в разработка, pull requests, прегледи на компоненти и CI. Те трябва да са скучни, бързи и недоговаряеми. Нови липсващи етикети и невалиден ARIA не трябва да чакат тримесечен одит, за да бъдат открити.
Третирайте тези неизправности като грешки от linting. Целта не е героизъм; целта е предотвратяване на регресии.
Добавете ръчно тестване с клавиатура
За всеки смислен потребителски поток тествайте без мишка. Това включва навигация, търсене, създаване на акаунт, плащане, филтриране, модални прозорци, менюта и изпращане на формуляри.
Като минимум проверете:
- Всеки интерактивен елемент е достижим
- Фокусът е видим по всяко време
- Редът на фокуса е логичен
- Очакваните клавиши работят
- Escape затваря затваряеми наслагвания
- Фокусът се управлява след отваряне и затваряне на компоненти
- Не съществува капан за клавиатурата
Само този навик улавя голям клас проблеми, които автоматизираните сканирания пропускат.
Тествайте с поне един екранен четец
Не е нужно да станете експертен потребител на екранен четец, за да научите полезни неща. Но ви е нужна скромност. Тестването с екранен четец има крива на обучение и начинаещите могат да диагностицират проблеми погрешно.
Все пак базовото тестване с VoiceOver, NVDA или JAWS може да разкрие счупени имена, объркващ ред на четене, необявени обновявания и проблеми с ориентири, които скенер може да не улови.
Съчетайте това със семантичен HTML. Колкото повече нативни елементи използвате, толкова по-малко крехка става достъпността ви.
Преглеждайте съдържание и състояния
Проверявайте празни състояния, състояния на зареждане, състояния с грешка, неактивни състояния, съобщения за успех и откази заради права. Грешките в достъпността често се крият извън щастливия път.
Преглеждайте и реалните думи. Етикетите, заглавията, инструкциите и съобщенията за грешки са част от интерфейса.
Включвайте потребители с увреждания, когато залогът е висок
За критични потоци ръчният експертен преглед не е достатъчен. Потребителското тестване с участници с увреждания открива проблеми, които екипите не предвиждат. Това е особено важно за обществени услуги, здравеопазване, финанси, образование и всеки поток, при който изключването има сериозни последици.
Автоматизираното тестване мащабира. Човешкото тестване разбира.
Как да тълкувате автоматизираните резултати отговорно
Не питайте: „Преминахме ли?“
Задавайте по-добри въпроси:
- Какви категории проблеми може да открива този инструмент?
- Кои шаблони и състояния сканира?
- Стартира ли след взаимодействия, или само при първоначално зареждане?
- Групирани ли са нарушенията по първопричина, или се броят повторно?
- Кои неизправности пречат на потребителите да завършват задачи?
- Какво все още изисква ръчен преглед?
Тази рамка променя разговора. Автоматизираните инструменти се превръщат в доказателство, не в авторитет.
Тя също помага на екипите да избягват ненужна работа. Поправянето на един компонент може да премахне стотици повторени нарушения. Обратно, страница само с един докладван проблем все пак може да съдържа сериозен капан за клавиатурата. Броят не е въздействие.
Практичният стандарт: автоматизирайте очевидното, ръчно тествайте преживяването
Най-добрите екипи по достъпност не са против инструментите. Те са против фантазиите.
Те автоматизират това, което машините могат да откриват надеждно. Ръчно тестват това, което зависи от поведение и смисъл. Използват стандарти като WCAG като обща базова линия, а не като заместител на използването на продукта.
Ако текущият ви процес е само автоматизирано сканиране преди пускане, подобрете го в този ред:
- Добавете автоматизирани проверки по-рано в разработката.
- Ръчно тествайте с клавиатура основните потоци.
- Прегледайте имена, етикети, грешки и инструкции.
- Тествайте общи компоненти с екранен четец.
- Включете експертно и потребителско тестване за високорискови пътувания.
Това не е съвършен процес. Реалистичен е. И ще открие много повече, отколкото един зелен резултат за достъпност някога би могъл.