Полное руководство по визуальному отчёту об ошибках
Каждый разработчик получал такой отчет об ошибке. «Страница выглядит странно». «Произошла ошибка». «Не работает». Затем следуют три минуты переписки: «Какая страница? Какая ошибка? Что вы нажали?» Исправление ошибки может занять две минуты, но на ее понимание уходит десять.
Один аннотированный скриншот устраняет почти все эти трудности. Проблема видна. Местоположение очевидно. Шаги пронумерованы. Разработчик открывает проблему, видит, что именно не так, и немедленно приступает к ее исправлению.
Это руководство охватывает все, что вам нужно знать о визуальном отчете об ошибках: почему это работает, как делать это хорошо, методы аннотирования, которые экономят больше всего времени, и какие инструменты использовать.
Почему скриншоты лучше текста для отчетов об ошибках
Текстовые отчеты об ошибках страдают от трех фундаментальных проблем:
Неоднозначность. «Кнопка на странице настроек не работает» может означать любую из 15 кнопок. «Кнопка отправки на панели настроек уведомлений» сужает круг, но все равно требует от разработчика перейти туда, найти кнопку и попытаться воспроизвести. Скриншот со стрелкой, указывающей на кнопку, мгновенно устраняет неоднозначность.
Отсутствие контекста. Составители отчетов об ошибках описывают то, что, по их мнению, является релевантным, что часто не соответствует тому, что нужно разработчику. Скриншот захватывает все, что видно — сообщения об ошибках, URL, состояние браузера, окружающие элементы пользовательского интерфейса — независимо от того, подумал ли составитель упомянуть их или нет. Многие ошибки диагностируются по чему-то видимому на скриншоте, что составитель никогда не упоминал.
Сложность воспроизведения. «Я нажал и получил ошибку» не помогает разработчику воспроизвести проблему. Серия пронумерованных скриншотов, показывающих каждый шаг — «1. Открыл настройки, 2. Нажал экспорт, 3. Получил это диалоговое окно ошибки» — превращает расплывчатый отчет в воспроизводимый тестовый случай.
Исследования Microsoft и Цюрихского университета показали, что отчеты об ошибках с визуальными вложениями решаются на 13-18% быстрее, чем отчеты, содержащие только текст. В крупных организациях с сотнями отчетов об ошибках в неделю эта экономия времени огромна.
Анатомия эффективного скриншота отчета об ошибке
Не все скриншоты одинаково полезны. Необработанный, неаннотированный скриншот лучше, чем ничего, но аннотированный скриншот лучше необработанного. Вот что отличает хорошие визуальные отчеты об ошибках от отличных:
1. Захватите правильную область
Используйте захват области, а не захват всего экрана. Цель состоит в том, чтобы показать достаточно контекста для определения местоположения проблемы, но не настолько много, чтобы зрителю приходилось ее искать. Для ошибки пользовательского интерфейса захватите компонент и его непосредственное окружение. Для диалогового окна ошибки захватите диалоговое окно с достаточным фоном, чтобы показать, что его вызвало.
2. Укажите на проблему
Используйте стрелку или круг, чтобы точно указать, где находится проблема. Даже если ошибка кажется вам очевидной, помните, что у разработчика может быть открыто десять других проблем. Стрелка устраняет любую двусмысленность в вашем отчете.
3. Добавьте контекст с помощью текстовых аннотаций
Короткая текстовая метка может предотвратить много путаницы. «Ожидалось: синий. Фактически: зеленый» рядом с неправильным цветом. «Здесь должно быть 'Export', а не 'Expprt'» рядом с опечаткой. «Это загружается через 8 секунд» на медленном компоненте. Делайте метки краткими — максимум одно предложение.
4. Пронумеруйте шаги
Для ошибок, требующих последовательности действий для воспроизведения, пронумерованные аннотации бесценны. «Шаг 1: Нажмите «Настройки». Шаг 2: Переключите темный режим. Шаг 3: Прокрутите до конца. Шаг 4: Этот элемент исчезает». Каждое число на скриншоте соответствует действию, создавая визуальное руководство по воспроизведению.
5. Скройте конфиденциальную информацию
Перед прикреплением скриншота к любому баг-трекеру проверьте наличие видимых конфиденциальных данных: адресов электронной почты, ключей API, токенов, личных пользовательских данных, внутренних URL-адресов или содержимого базы данных. Используйте инструмент размытия или пикселизации, чтобы скрыть все, что не должно быть в отчете об ошибке. Это особенно важно для скриншотов, которые могут попасть в публичные проблемы GitHub. Наше руководство по безопасности скриншотов подробно рассматривает этот вопрос.
Методы аннотирования по типу ошибки
Ошибки макета и CSS
Обведите прямоугольниками неправильно выровненные элементы. Используйте линии, чтобы показать ожидаемое выравнивание. Добавьте текстовые метки с конкретными значениями: «Ожидаемый отступ 16px, фактический 0px». Если вы можете открыть DevTools и зафиксировать вычисленные стили, включите это как второй скриншот.
Функциональные ошибки
Пронумеруйте шаги для воспроизведения. Зафиксируйте состояние до и после неисправного действия. Если есть сообщение об ошибке, убедитесь, что оно полностью видно и выделено прямоугольником. Включите консоль браузера, если вы видите там ошибки — разработчики будут искать ошибки JavaScript, сбои сети и проблемы CORS.
Ошибки контента и текста
Обведите неправильный текст. Добавьте текстовую аннотацию с ожидаемым содержимым. Для опечаток достаточно стрелки, указывающей на конкретное слово. Для отсутствующего содержимого нарисуйте прямоугольник там, где должно появиться содержимое, и пометьте его «Отсутствует: [описание]».
Ошибки производительности
Ошибки производительности трудно зафиксировать визуально. Лучше всего сделать скриншот вкладки «Сеть» браузера, показывающей медленные запросы, или вкладки «Производительность», показывающей длительные задачи. Аннотируйте с помощью временных меток: «Этот запрос занимает 8.2 секунды». Для прерывистых анимаций запись экрана полезнее, чем скриншот.
Межбраузерные ошибки
Сделайте два скриншота: один из браузера, где все работает, и один из браузера, где есть проблема. Разместите их рядом или сложите вертикально с метками: «Chrome 120 (правильно)» и «Firefox 121 (с ошибкой)». Визуальное сравнение сразу делает проблему очевидной.
Лучшие практики для команд
Стандартизируйте свой инструмент для скриншотов. Когда все в команде используют один и тот же инструмент, скриншоты выглядят единообразно, и каждый знает, какие функции аннотирования доступны. Maxisnap Maxisnap является хорошим выбором для команд, потому что его инструменты аннотирования охватывают все распространенные сценарии использования (стрелки, числа, текст, размытие), и он достаточно легкий, чтобы никто не жаловался на потребление ресурсов.
Установите правила аннотирования. Красные стрелки для «это ошибка». Зеленые стрелки для «ожидаемое поведение». Синие прямоугольники для «соответствующего контекста». Пронумерованные круги для шагов воспроизведения. Эти правила не обязательно формально документировать — достаточно пятиминутного обсуждения в команде. После их установления каждый отчет об ошибке становится быстрее как создавать, так и читать.
Включите информацию об окружении. Возьмите за привычку фиксировать адресную строку, версию браузера или индикатор ОС на своих скриншотах. Этот контекст часто вырезается при захвате области, но может стать решающим фактором между воспроизведением ошибки и часом безуспешных попыток. В качестве альтернативы, включите детали окружения в текст отчета об ошибке вместе со скриншотом.
Используйте ссылки для загрузки, а не вложения файлов. Ссылка на скриншот в комментарии Jira загружается мгновенно. Вложение PNG размером 5 МБ требует клика и загрузки. Такие инструменты, как Maxisnap с автозагрузкой автоматически генерирует ссылки для обмена, что позволяет легко вставлять URL скриншота в любой баг-трекер, канал Slack или электронное письмо. Настройка загрузки по SFTP занимает пять минут и дает вам постоянную ссылку для каждого снимка.
Рекомендации по инструментам
Лучший инструмент для визуального отчета об ошибках обладает тремя характеристиками: быстрый захват с помощью горячей клавиши, немедленное аннотирование (без переключения на отдельный редактор) и быстрое распространение (загрузка или буфер обмена).
- Maxisnap — Лучше всего подходит для команд, которым нужен легкий, управляемый с клавиатуры захват с немедленным аннотированием и загрузкой на сервер. 11 инструментов аннотирования, включая нумерованные шаги и размытие. Бесплатно для личного использования.
- Snagit — Лучше всего подходит для организаций, которым нужны премиальные функции аннотирования и которые готовы платить $62.99. Нумерация шагов и инструменты интеллектуального перемещения отлично подходят для документации.
- ShareX — Лучше всего подходит для разработчиков, которым нужна максимальная настраиваемость и которые не боятся сложности. Бесплатный и с открытым исходным кодом.
- Loom — Лучше всего, когда скриншотов недостаточно и вам нужен быстрый видеообзор. Сочетание записи экрана и повествования мощно для сложных ошибок. (Если вы переходите с Monosnap, см. наш сравнение Maxisnap и Monosnap.)
Рентабельность инвестиций в хорошие скриншоты ошибок
Визуальный отчет об ошибках — это не просто хорошая практика, он оказывает измеримое влияние на скорость разработки. Рассмотрим математику:
- Текстовый отчет об ошибке требует в среднем 2-3 обмена уточнениями до начала работы: ~15 минут накопленного времени ожидания
- Аннотированный скриншот устраняет эти обмены: экономия ~15 минут на каждую ошибку
- Команда, подающая 50 ошибок в неделю, экономит ~12.5 часов времени на уточнения еженедельно
- За год это более 600 часов сэкономленного времени разработчиков
И этот расчет учитывает только время, потраченное на уточнения. Он не включает стоимость прерывания фокуса — каждый обмен уточнениями требует от репортера и разработчика переключения контекста, что обходится в дополнительные 10-15 минут продуктивного времени.
Начало работы
Если вы еще не используете аннотированные скриншоты в своих отчетах об ошибках, начните сегодня. Загрузите инструмент для создания скриншотов с поддержкой аннотаций, потратьте пять минут на изучение горячие клавиши, и попробуйте аннотировать свой следующий отчет об ошибке вместо того, чтобы писать абзац описания.
В первый раз, когда разработчик ответит «Исправлено, спасибо — отличный скриншот» вместо «Можете уточнить, какую кнопку вы имеете в виду?», вы никогда не вернетесь к текстовым отчетам об ошибках.