Почему Тестирование Обработки Ошибок Важно

Пользователи неизбежно столкнутся с ошибками — удалённые страницы, невалидные формы, сетевые таймауты и серверные сбои. Как приложение обрабатывает ошибки, определяет доверие пользователей и устойчивость к атакам.

Обработка ошибок — одна из наиболее часто упускаемых областей тестирования. Разработчики фокусируются на happy path, а ошибки тестируются в последнюю очередь.

Категории HTTP-Кодов

ДиапазонКатегорияЗначение
2xxУспехЗапрос выполнен
3xxПеренаправлениеКлиент должен предпринять действие
4xxОшибка клиентаЗапрос невалиден
5xxОшибка сервераСервер не смог выполнить валидный запрос

Ключевые Коды для Тестирования

КодЗначениеКогда тестировать
200OKКаждый успешный запрос
301Перемещено навсегдаМиграции URL, HTTPS-редиректы
400Плохой запросНевалидные данные
401Не авторизованОтсутствующая/невалидная аутентификация
403ЗапрещеноВалидная auth, но недостаточно прав
404Не найденоНесуществующие URL
429Слишком много запросовRate limiting
500Внутренняя ошибкаНеобработанные исключения
503Сервис недоступенОбслуживание, перегрузка

Тестирование Кастомных Страниц Ошибок

Страница 404

  • Несуществующий URL показывает кастомную 404 (не дефолтную серверную)
  • Сохраняется брендинг сайта (шапка, подвал, стили)
  • Навигация доступна
  • Строка поиска присутствует
  • Ссылки на популярные страницы
  • Возвращается HTTP-код 404 (не 200)
  • Работает на всех поддерживаемых языках

Страница 500

  • Дружественное сообщение без технических деталей
  • Нет stack traces, ошибок БД, путей к файлам
  • Контактная информация или ссылка на поддержку

Страница 403

  • Объясняет отказ в доступе без раскрытия причин
  • Предлагает войти в систему

Тестирование Ошибок Валидации Форм

Клиентская Валидация

СценарийОжидаемое поведение
Обязательное поле пустое«Это поле обязательно» рядом с полем
Невалидный формат email«Введите корректный email»
Слишком короткий пароль«Пароль должен содержать минимум 8 символов»
Пароли не совпадают«Пароли не совпадают»

Серверная Валидация

  • Отключение JavaScript и отправка форм по-прежнему показывает ошибки
  • Прямые API-запросы возвращают корректные сообщения

Безопасность

Что НЕ должны раскрывать ответы об ошибках: stack traces, SQL-ошибки, пути к файлам, версии сервера, внутренние IP.

Логин должен говорить «Неверный email или пароль» (не «Email не найден»).

Упражнение: Аудит Обработки Ошибок

Протестируйте обработку ошибок веб-приложения.

Часть 1: Страницы HTTP-Ошибок

ТестURL/ДействиеОжидаемоФактическиСтатус
Страница 404/несуществующая-страницаКастомная 404 с навигацией
404 возвращает кодПроверить response codeHTTP 404
404 на другом языке/ru/несуществующая404 на корректном языке
Страница 403Доступ к админке без authКастомная 403 или redirect
Страница 500Вызвать серверную ошибку500 без stack trace

Часть 2: Валидация Форм

ПолеЗначениеОжидаемое сообщение
Emailпусто«Email обязателен»
Email«не-email»«Введите корректный email»
Пароль«123»«Минимум 8 символов»
Обязательное полепропустить«Это поле обязательно»

Часть 3: Безопасность Сообщений

ПроверкаПройдено/Нет
Нет stack traces ни в одном ответе
Нет ошибок БД видимых пользователям
Нет путей к файлам
Нет версии сервера в заголовках
Ошибка логина не раскрывает существование email
Решение: Типичные Баги Обработки Ошибок

Баг 1: Страница 404 возвращает HTTP 200. Поисковые системы индексируют «не найдено» как реальный контент.

Баг 2: Stack trace виден на продакшене при 500. Серверная ошибка раскрывала полный стек.

Баг 3: Ошибки валидации исчезают при скролле. Ошибки вверху формы пропадали.

Баг 4: Логин раскрывает существование email. «Аккаунт не найден» помогает атакующим.

Баг 5: API возвращает SQL-запрос. Невалидный запрос раскрывал детали БД.

Баг 6: Страница ошибки без навигации. Только «Страница не найдена» без ссылок.

Автоматизация

test('страница 404 возвращает корректный код', async ({ page }) => {
  const response = await page.goto('/несуществующая-страница');
  expect(response.status()).toBe(404);
  await expect(page.locator('nav')).toBeVisible();
});

Ключевые Выводы

  • Обработка ошибок часто недотестирована — включайте её в стандартный план тестирования
  • Кастомные страницы ошибок должны сохранять брендинг и предоставлять навигацию
  • Сообщения об ошибках должны быть понятными: объяснять проблему и как исправить
  • Никогда не раскрывайте технические детали в продакшен-ответах
  • Предотвращайте утечку информации через ответы об ошибках
  • Проверяйте, что HTTP-коды соответствуют типу ошибки