Что такое логи (log files) в контексте тестирования?

«Что такое логи (log files) в контексте тестирования?» — вопрос из категории Логирование и отчётность, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Логи (журналы событий) — это текстовые или структурированные файлы, в которые приложение, операционная система или сервис записывает информацию о своей работе, событиях, ошибках и действиях пользователей.

Для QA-инженера логи — это критически важный инструмент для:

  • Расследования дефектов: когда тест падает, особенно в автоматизированных или нагрузочных тестах, логи — это первый источник информации для понимания корневой причины (root cause).
  • Верификации корректности выполнения операций: например, проверка, что после отправки запроса в системе произошли соответствующие изменения, записанные в лог БД.
  • Мониторинга состояния системы во время выполнения тестов, особенно интеграционных или end-to-end.

Практический пример анализа логов: Допустим, автоматизированный UI-тест (на Selenium) падает при попытке добавить товар в корзину. Шаги расследования:

  1. Найти лог-файл приложения (например, application.log).
  2. Отфильтровать записи по времени падения теста и по ключевым словам ("addToCart", "ERROR", "Exception").
    # Пример поиска в логе (Linux/macOS)
    grep -A 5 -B 5 "ERROR.*addToCart" application.log | tail -20
  3. Часто можно найти стектрейс исключения, который прямо укажет на проблему: отсутствие элемента, ошибка в API-вызове или проблема с данными.

Типы логов, с которыми работает QA:

  • Логи приложения (разных уровней: DEBUG, INFO, WARN, ERROR).
  • Логи веб-сервера (например, access/error logs Nginx или Apache).
  • Логи базы данных (запросы, ошибки транзакций).
  • Логи контейнеров (Docker, Kubernetes).

Инструменты: Для работы с большими объемами логов используются системы централизованного логирования (ELK Stack — Elasticsearch, Logstash, Kibana; Splunk, Grafana Loki), которые позволяют агрегировать, искать и визуализировать логи со всех компонентов системы.