Автотесты, CI и мониторинг

Sentry — ошибка у пользователя приходит дефектом

Ошибка уровня error или fatal становится дефектом выбранного проекта — с типом исключения, местом и ссылкой на issue. Одна ошибка — один дефект, повторные срабатывания дублей не плодят.

Что здесь обычно болит

Между Sentry и трекером почти всегда стоит человек. Он читает поток ошибок, решает, что из этого дефект, и переносит стек-трейс руками — обычно скриншотом. В результате половина ошибок прода не доезжает до тестирования вовсе, а те, что доехали, теряют контекст и через неделю неотличимы друг от друга.

Обратная крайность — автоматическое заведение задачи на каждую ошибку — за сутки превращает трекер в помойку из дублей.

Как это устроено в QA Деск

Ошибка уровня error или fatal в подключённом проекте Sentry становится дефектом выбранного проекта QA Деск: тип исключения, место возникновения, ссылка на issue. Одна ошибка — один дефект: повторные срабатывания правила дефект не дублируют, а из карточки дефекта можно привязать и уже существующую ошибку по id или ссылке.

Работает и облачный Sentry, и своя установка.

Подключение

  1. В Sentry выпустите Auth Token: Settings → Auth Tokens → Create New Token, право project:read. Это не «Security Token» из раздела Security & Privacy — тот нужен для карт источников и здесь не используется.
  2. В кабинете откройте Настройки → Sentry (нужно право управления пространством). В поле «Инсталляция» вставьте ссылку на проект из адресной строки целиком — адрес установки, организация и проект разберутся сами. Вставьте токен, выберите проект QA Деск и нажмите «Проверить и подключить».
  3. Скопируйте с карточки подключения адрес вебхука — он содержит секрет, публиковать его нельзя. Новый адрес выпускается в любой момент, старый перестаёт приниматься сразу.
  4. В Sentry включите плагин WebHooks: проект → Settings → Integrations → WebHooks → Enable, затем Configure plugin, и вставьте адрес в Callback URLs.
  5. Создайте правило: Alerts → Create Alert → Issues, условие «A new issue is created», действие «Send a notification via WebHooks». Без правила плагин не отправляет ничего — это самая частая причина тишины.
  6. Проверьте: Test Plugin или Send Test Notification. В проекте появится дефект, на карточке подключения — время последнего вебхука и число заведённых дефектов.

Подключение сохраняется только после того, как Sentry принял токен и показал ему проект. Отказ приходит с причиной и с названием поля, а не общим «ошибка».

Строже: подпись доставки

Вместо плагина можно завести Settings → Developer Settings → Internal Integration с Webhook URL, галочкой «Alert Rule Action», правом Issue & Event: Read и вебхуком issue: created. Его Client Secret вписывается на карточке подключения — тогда каждая доставка проверяется по подписи, и чужой запрос по угаданному адресу не заведёт дефект.

Что настраивается на карточке подключения

Среда, платформа и серьёзность заводимых дефектов. Уровни blocker и critical недоступны намеренно: у них обязательно вложение, а вебхук его не несёт — иначе приём падал бы на валидации в момент, когда с прода летят ошибки.

Кому это особенно окупается

  • продуктам на 1С-Битрикс и Laravel: PHP-исключение после обновления приходит раньше, чем жалоба клиента;
  • SPA на React и Vue: браузерные ошибки, которые не воспроизводятся локально;
  • командам без выделенного дежурного: поток ошибок сам превращается в очередь на триаж.

Чего в продукте нет

  • нет переноса всех событий и метрик Sentry — приезжает то, что нужно для дефекта;
  • нет обратной записи в Sentry: деск не резолвит issue и не меняет их;
  • нет автоматического закрытия дефекта, когда ошибка перестала повторяться, — закрывает тестировщик.

С чего начать

Подключите один проект и создайте правило только на новые issue. Через неделю станет видно, какой уровень шума приемлем, — и уже тогда стоит расширять условия правила, а не наоборот.

Попробуйте на своём проекте

Заведите проект, загрузите первый отчёт или заведите первый дефект — бесплатный тариф без карты. Нужно демо на ваших сценариях — напишите на hello@qadesk.ru.

Создать проект