Как с помощью DevTools определить, где находится ошибка: на клиенте или сервере?

«Как с помощью DevTools определить, где находится ошибка: на клиенте или сервере?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

DevTools (вкладки Network и Console) — ключевой инструмент для локализации источника ошибки.

Признаки серверной ошибки (Backend):

  • Вкладка Network: Запросы возвращают статус 5xx (500, 502, 503) или 4xx (например, 401, 403, 404, если сервер их генерирует).
  • Вкладка Console: Ошибки, связанные с CORS, или сообщения о неудачных запросах к API.
  • Ответ сервера: В теле ответа (Preview/Response) может быть стектрейс или сообщение об ошибке от бэкенда (например, от Django или Spring).

Признаки клиентской ошибки (Frontend):

  • Вкладка Console: JavaScript-ошибки (TypeError, ReferenceError, Uncaught Promise rejection).
  • Вкладка Sources: Можно поставить точку останова (breakpoint) и отладить выполнение скрипта.
  • Вкладка Elements: Неправильно применённые стили или некорректная структура DOM.

Практическая проверка:

  1. Откройте вкладку Network и найдите проблемный запрос.
  2. Проверьте его Status и Response.
  3. Если статус 5xx или в ответе ошибка сервера — проблема на бэкенде.
  4. Если статус 200/OK, но данные не отображаются или ломают интерфейс — проблема в клиентском коде, который эти данные обрабатывает.

Быстрый тест из Console:

// Выполните запрос вручную, чтобы изолировать проблему
fetch('/api/endpoint')
  .then(response => {
    console.log('Статус:', response.status); // Проверяем статус
    return response.json();
  })
  .then(data => console.log('Данные с сервера:', data)) // Проверяем данные
  .catch(error => console.error('Ошибка сети/парсинга:', error));

Если этот запрос завершается с ошибкой или возвращает некорректные данные — проблема на стороне сервера или сети. Если данные валидны, но интерфейс их не показывает — ищите ошибку в клиентском JavaScript.