← Назад к вопросам

Какая информация хранится в логах?

2.0 Middle🔥 142 комментариев
#Теория тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Информация в логах: структура, типы и назначение

В контексте QA Automation и разработки программного обеспечения, логи (журналы событий) — это хронологические, структурированные записи событий, происходящих в системе, приложении или инфраструктуре. Они являются критическим инструментом для мониторинга, отладки, аудита и анализа производительности. Информация в логах обычно включает следующие ключевые категории.

1. События уровня приложения

Это наиболее важные логи для автоматизации тестирования, так как они отражают бизнес-логику и поведение приложения.

  • Трассировка выполнения (Execution Trace): Записи о начале и завершении ключевых операций, методов или транзакций.
    2023-10-27 14:30:21,567 INFO  [com.app.service.UserService] - getUserProfile started for userId: 12345
    2023-10-27 14:30:21,589 INFO  [com.app.service.UserService] - getUserProfile completed successfully in 22ms
    
  • Ошибки и исключения (Errors & Exceptions): Полные стек -трейсы (stack traces), сообщения об ошибках, коды статусов HTTP (404, 500).
  • Входные и выходные данные: Параметры запросов (например, тела HTTP-запросов), ключевые данные ответов (маскированные, если содержат персональные данные).
  • Состояние приложения: Значения важных переменных, конфигураций, флагов функциональности.

2. События уровня системы и инфраструктуры

Эти логи помогают диагностировать проблемы среды выполнения, не связанные напрямую с кодом.

  • Использование ресурсов: Загрузка CPU, потребление памяти (RAM), дисковое I/O, использование сети.
  • События жизненного цикла: Запуск, остановка и перезагрузка сервисов, контейнеров или виртуальных машин.
  • Доступ и аутентификация: Попытки входа в систему (успешные и неудачные), изменения прав доступа.

3. Логи, специфичные для веб-приложений и API

  • Доступ к веб-серверу (Access Logs): Запись каждого HTTP-запроса (IP-адрес, метод, URL, статус ответа, user-agent, время выполнения).
    192.168.1.1 - - [27/Oct/2023:14:30:22 +0300] "GET /api/v1/users/12345 HTTP/1.1" 200 1423 "-" "Mozilla/5.0"
    
  • Логи балансировщиков нагрузки и прокси: Маршрутизация запросов, проблемы с health-check.

4. Логи базы данных (Database Logs)

  • Медленные запросы (Slow Query Log): Запросы, время выполнения которых превышает заданный порог — ключевой источник информации для оптимизации.
  • Ошибки подключения и выполнения запросов: Проблемы с коннектами, синтаксические ошибки в SQL, нарушения ограничений.

5. Логи фреймворков и инструментов автоматизации

Для QA Automation Engineer это, пожалуй, самый важный тип логов после логов приложения.

  • Результаты выполнения тестов: Статусы (PASS/FAIL/SKIP), время выполнения каждого тест-кейса.
  • Детали шагов теста: Какие действия были выполнены (например, "click on login button", "enter text into 'username' field").
  • Скриншоты и видео: Часто ссылки на медиафайлы, прикрепленные к логам при падении теста, хранятся в объектном хранилище, а в логи пишется путь или URL.
  • Логи драйверов (Selenium WebDriver, Appium): Подробное взаимодействие с браузером или мобильным устройством.
    # Пример логирования действия в автотесте
    [INFO] 2023-10-27 14:30:25 - Clicking element with locator: {"by": "id", "value": "submit_btn"}
    [DEBUG] 2023-10-27 14:30:25 - Executing script: arguments[0].click();
    

6. Мета-информация (Контекст)

Каждая запись в логе обязательно содержит служебные данные для корреляции и фильтрации:

  • Отметка времени (Timestamp): Точное время события, часто в UTC.
  • Уровень логирования (Log Level): Уровень серьезности события: DEBUG, INFO, WARN, ERROR, FATAL.
  • Источник (Logger Name): Имя класса, модуля или компонента, сгенерировавшего лог (например, com.example.api.AuthController).
  • Корреляционные идентификаторы (Correlation ID): Уникальный ID, который связывает все логи, относящиеся к одному конкретному запросу или транзакции, проходящей через распределенную систему (микросервисы). Это крайне важно для анализа сквозного выполнения.
  • ID потока/пользователя/сессии (Thread ID, User ID, Session ID): Для отслеживания действий в рамках одного потока или пользовательской сессии.

Принципы качественного логирования в контексте автоматизации:

  • Структурированный формат: Использование JSON или других машиночитаемых форматов для упрощения парсинга и анализа системами (например, ELK Stack, Splunk).
    {
      "timestamp": "2023-10-27T11:30:25.123Z",
      "level": "ERROR",
      "logger": "CheckoutService",
      "correlationId": "req-abc-123",
      "message": "Payment processing failed",
      "exception": "InsufficientFundsException",
      "userId": 12345,
      "orderId": 78901
    }
    
  • Баланс детализации: DEBUG — для деталей отладки, INFO — для отслеживания нормального workflow, ERROR — только для ошибок, требующих вмешательства.
  • Отсутствие чувствительных данных (PII): Пароли, токены, номера карт не должны попадать в логи. Используется маскирование.
  • Производительность: Логирование не должно становиться узким местом в производительности приложения или тестов.

Для автоматизатора анализ логов — это основной способ ретроспективного анализа падающих тестов, особенно в CI/CD пайплайне, когда нет прямого доступа к окружению. Умение быстро находить в логах корреляционный ID упавшего запроса, читать стектрейс и сопоставлять логи приложения с логами автотестов — ключевой навык для эффективного расследования дефектов.

Какая информация хранится в логах? | PrepBro