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

После выполнения нагрузочного тестирования в Gatling генерируется HTML-отчёт, который предоставляет детальную информацию о работе системы и результатах теста. Эти отчёты позволяют глубже проанализировать производительность приложения и выявить слабые места. Давайте разберём, как с ними работать и что они включают.

Основные компоненты HTML-отчёта Gatling

HTML-отчёт можно найти в папке target/gatling/<название-теста>. Он автоматически создаётся после выполнения теста и содержит несколько ключевых разделов для анализа:

1. Global Information (Общая информация)

Начинается с Response Time Ranges (Диапазоны времени отклика) и Number of Requests (Количество запросов)

Дополнительно указана информация по Gatling Version и Run Information (Информация о запуске)

  • Response Time Ranges - Столбчатая диаграмма: показывает распределение запросов по времени отклика.

  • Number of Requests - Круговая диаграмма: показывает соотношение успешных (OK, зелёный сектор) и неудачных (KO, красный сектор) запросов.

2. Requests Table (Таблица запросов)

Этот блок отчёта Gatling представляет таблицу запросов, отображающую ключевые метрики производительности для каждого HTTP-запроса, включая успешные (OK) и не успешные (KO) запросы.

  • Requests (Все запросы): Общее количество запросов (456), сгруппированных по статусам.

  • Executions (Выполнения): Количество успешных (OK), не успешных (KO) и их процентное соотношение и данных в секунду для каждого типа запроса..

  • Response Time (Min, Max, Mean): Минимальное, максимальное и среднее время отклика сервера.

3. Errors (Ошибки)

Этот блок отчёта Gatling представляет детализированную информацию об ошибках, обнаруженных во время выполнения теста.

Отображает:

  • Error: Полное описание ошибки.

  • Count: Общее количество ошибок.

  • Percentage: Процент ошибок по отношению к общему числу.

4. Active Users Over Time (График активных пользователей)

Данный блок отчёта отображает динамику активных пользователей в процессе выполнения тестирования Gatling.

Включает в себя:

  • Количество активных пользователей по времени:

    • Оранжевая линия (Active Users): Общее количество активных пользователей на всех этапах симуляции.

    • Зелёная линия (Users): Количество обычных пользователей.

    • Синяя линия (Admins): Количество пользователей с ролью администраторов.

  • Временная шкала:

    • Горизонтальная ось показывает время выполнения теста

    • Вертикальная ось отображает количество активных пользователей.

5. Response Time Distribution (Распределение времени отклика)

Этот блок отчёта Gatling представляет гистограмму, отображающую распределение запросов по времени их отклика. Это важный инструмент для анализа производительности приложения под нагрузкой.

Что включает в себя:

  • Горизонтальная ось:

    • Отображает диапазоны времени отклика (например, 133 мс, 270 мс, 406 мс и так далее).

    • Каждое значение — это определённый интервал времени отклика запроса.

  • Вертикальная ось:

    • Показывает процент запросов, которые попали в соответствующий диапазон времени отклика.

  • Цветовая дифференциация:

    • Зелёные столбцы (OK): Процент успешно выполненных запросов.

    • Красные столбцы (KO): Процент неудачных запросов.

6. Response Time Percentiles Over Time (OK): процентиль времени отклика по времени

Этот блок отчёта Gatling показывает, как изменяется время отклика успешных запросов (OK) по ключевым процентилям на протяжении всего тестирования.

Включает в себя:

  • Процентиль времени отклика:
    Разные уровни процентилей показывают, как распределяется время отклика успешных запросов:

    • min (Минимум) — нижняя граница времени отклика.

    • Зелёные и голубые зоны: Большинство запросов попадают в эти диапазоны.

    • Синие и фиолетовые зоны: Показывают время отклика для самых медленных запросов.

  • Активные пользователи (Active Users):

    • Оранжевая линия на графике показывает количество активных пользователей на каждом этапе тестирования.

    • Помогает сопоставить пиковые нагрузки с увеличением времени отклика.

7. Number of Requests per Second (Запросы в секунду)

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

Показывает:

  • Синяя область (All):

    • Общее количество запросов, отправленных пользователями в каждую секунду теста.

    • Позволяет визуально оценить динамику нагрузки на сервер.

  • Оранжевая линия (Active Users):

    • Отображает количество активных пользователей на протяжении выполнения теста.

    • Используется для сопоставления роста числа пользователей и изменения количества запросов.

8. Number of Responses per Second (Ответы в секунду)

Этот блок отчёта Gatling показывает, как изменяется количество ответов сервера (успешных и не успешных) в течение выполнения теста.

Отображает:

  • Зелёная область (OK):

    • Отображает количество успешных ответов (200 OK) сервера в секунду.

  • Красная область (KO):

    • Показывает количество неудачных ответов (KO, например, ошибки 5xx или 4xx) в секунду.

  • Оранжевая линия (Active Users):

    • График количества активных пользователей во времени.

    • Используется для анализа зависимости между числом пользователей и ответами сервера.

  • Синяя линия (All):

    • Общее количество ответов (сумма успешных и неудачных) в секунду.

Интеграция отчётов Gatling с Grafana

Для улучшенного мониторинга тестов и удобной визуализации метрик можно настроить интеграцию Gatling с Grafana через Prometheus. Такой подход позволяет получать данные в реальном времени

Настройка Prometheus:

  • Скачайте и установите Prometheus:

curl -LO https://github.com/prometheus/prometheus/releases/download/<version>/prometheus-<version>.tar.gz
tar xvf prometheus-<version>.tar.gz
  • Настройте prometheus.yml: Добавьте задачу сбора данных с Gatling:

scrape_configs:
  - job_name: 'gatling'
    static_configs:
      - targets: ['localhost:9999']
  • Запустите Prometheus:

./prometheus --config.file=prometheus.yml

Включение метрик в Gatling:

  • В настройках Gatling активируйте отправку метрик в PushGateway:

MetricsSettings metrics = new MetricsSettings()
    .withPushGateway("http://localhost:9091")
    .withEnable(true);
  • Запустите PushGateway:

docker run -d -p 9091:9091 prom/pushgateway

Настройка Grafana для визуализации:

  • Установите Grafana и добавьте Prometheus в качестве источника данных:

    • Configuration > Data Sources > Prometheus.

    • Укажите URL: http://localhost:9090.

  • Импортируйте готовый дашборд Gatling:

    • В разделе Dashboards выберите Import.

    • Используйте ID готового дашборда 10885.

  • Анализируйте метрики: на дашборде будут отображаться графики времени отклика, количества запросов и ошибок в реальном времени.

Лёгкость интеграции с CI/CD

Одним из главных преимуществ Gatling является лёгкость интеграции в процессы CI/CD. Вот несколько шагов для настройки:

  1. Добавьте зависимость Gatling в ваш проект Maven:

<dependency>
    <groupId>io.gatling</groupId>
    <artifactId>gatling-maven-plugin</artifactId>
    <version>${gatling.plagin.version}</version>
</dependency>
  1. Настройте запуск тестов через Jenkins или GitLab CI:

  • Добавьте команду для запуска тестов в скрипты CI:

    mvn gatling:test
  1. Настройте публикацию отчётов:

    • Загружайте HTML-отчёты в артефакты сборки для анализа после выполнения тестов.

По итогу мы имеем:

Систему отчётов Gatling — не просто статистика, а комплексный инструмент для глубокого анализа производительности приложений. Наглядные графики позволяют увидеть все детали. От времени отклика до ошибок и стабильности при росте нагрузки.

Интеграция с Grafana даёт возможность анализировать метрики в реальном времени, а гибкость и лёгкость внедрения в CI/CD ускоряют процессы разработки и тестирования. Команды могут оперативно получать обратную связь, устранять узкие места и повышать стабильность приложения.

Вся информация по системе отчетов бралась из тестового проекта Gatling

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