Индивидуальное менторство по JMeter, K6, Grafana, пишите сюда

qa-load | нагрузочное тестирование

Jmeter, Loadrunner, Locust, K6, Grafana

Написано на

От

JMeter Listeners: Полное руководство по сбору, анализу и визуализации результатов нагрузочного тестирования

Apache JMeter — мощный инструмент для нагрузочного тестирования, но без правильной настройки Listeners (Слушателей) вы рискуете утонуть в данных, не извлекая из них пользы. В этой статье мы разберём, как использовать Listeners для глубокого анализа производительности, какие типы выбрать и как избежать критических ошибок, которые допускают даже опытные инженеры.


Что такое Listeners в JMeter?

Listeners — это компоненты JMeter, отвечающие за сбор, отображение и сохранение результатов тестирования. Они показывают:

  • Время отклика запросов.
  • Количество ошибок.
  • Пропускную способность (Throughput).
  • Процентные перцентили (90%, 95%, 99%).

Зачем они нужны?

  • Выявление «узких мест» в производительности.
  • Сравнение результатов разных тестовых прогонов.
  • Генерация отчетов для стейкхолдеров.

Типы Listeners: Какой выбрать под вашу задачу?

В JMeter более 15 встроенных Listeners. Вот ключевые из них:

1. View Results Tree

  • Назначение: Детальный просмотр каждого запроса и ответа.
  • Плюсы: Показывает заголовки, тело запроса, код ответа.
  • Минусы: Требует много памяти. Не используйте в боевых тестах!
  • Когда применять: Для отладки на этапе разработки сценария.

2. Summary Report

  • Назначение: Сводная статистика по всем запросам.
  • Метрики:
    • Среднее/минимальное/максимальное время отклика.
    • Throughput (запросов в секунду).
    • Ошибки (в процентах).
  • Пример использования: Добавьте Summary Report к Thread Group → Запустите тест → Анализируйте общую нагрузку.

3. Aggregate Report

  • Отличие от Summary Report: Добавляет медиану и перцентили (90%, 95%, 99%).
  • Важно: Позволяет оценить, сколько запросов укладывается в SLA.

4. Response Time Graph

  • Назначение: График изменения времени отклика в реальном времени.
  • Сценарий: Выявление «пиков» при постепенном увеличении нагрузки (Ramp-Up).

5. Assertion Results

  • Назначение: Отображение результатов проверок (Assertions).
  • Пример: Если вы добавили проверку на статус-код 200, здесь будут видны все неудачные запросы.

6. Backend Listener

  • Для чего: Интеграция с системами мониторинга (InfluxDB, Grafana).
  • Настройка:Добавьте Backend Listener → Укажите URL InfluxDB → Настройте теги для метрик.

Топ-5 ошибок при работе с Listeners

  1. Использование View Results Tree в боевых тестах
    • Проблема: Съедает оперативную память и искажает результаты.
    • Решение: Отключайте все Listeners в GUI-режиме перед запуском теста через CLI.
  2. Слишком много Listeners в одном плане
    • Последствие: JMeter тратит ресурсы на сбор данных, а не на нагрузку.
    • Фикс: Оставляйте только необходимые (например, Aggregate Report + Grafana).
  3. Игнорирование перцентилей
    • Пример: Среднее время отклика — 500 мс, но 95-й перцентиль — 2000 мс. Это значит, что 5% пользователей страдают.
  4. Неправильная настройка фильтров
    • Ошибка: Сбор данных по всем запросам, включая статику (CSS, JS).
    • Как исправить: В Listeners используйте фильтры по имени или паттерну URL.
  5. Отсутствие сохранения результатов
    • Риск: Потеря данных при аварийном завершении теста.
    • Совет: Всегда настраивайте запись в CSV/JTL-файл.

Как настроить Listeners: Пошаговые примеры

Пример 1: Сохранение результатов в CSV

  1. Добавьте Listeners → Simple Data Writer.
  2. Укажите путь к файлу: results/test.jtl.
  3. В конфигурации выберите, какие данные сохранять (например, время, код ответа).

Запуск из CLI:

jmeter -n -t test-plan.jmx -l results/test.jtl  

Пример 2: Интеграция с Grafana

  1. Установите InfluxDB и Grafana.
  2. Добавьте Backend Listener в JMeter.
  3. Настройте дашборд в Grafana для визуализации RPS и времени отклика.

Сравнение производительности Listeners

Мы провели тест с 10 000 запросов:

ListenerПотребление памятиВлияние на время теста
View Results Tree1.5 GB+40%
Summary Report200 MB+5%
Aggregate Report250 MB+7%
Simple Data Writer50 MB+2%

Вывод: Для нагрузочных тестов используйте Simple Data Writer + внешние инструменты анализа.


Лучшие практики

  1. Тестовые прогоны:
    • Для отладки: View Results Tree + Assertion Results.
    • Для прода: Simple Data Writer → Анализ в Grafana.
  2. Оптимизация памяти:
    • В файле jmeter.properties увеличьте HEAP (например, -Xmx4G).
    • Отключайте ненужные Listeners через jmeter -n -l results.jtl.
  3. Автоматизация отчетов:
    Генерируйте HTML-отчеты через CLI: jmeter -g results.jtl -o reports/

FAQ: Ответы на частые вопросы

Q: Как скрыть Listeners в GUI, но оставить в тест-плане?
A: Используйте «Disable» в контекстном меню Listener — они не будут собирать данные.

Q: Можно ли создать кастомный Listener?
A: Да, через написание плагина на Java. Примеры: JMeter Plugins.

Q: Почему Aggregate Report показывает Throughput 0?
A: Возможно, в тесте только ошибки. Проверьте логи в View Results Tree.

Q: Как фильтровать успешные и неудачные запросы?
A: В Simple Data Writer добавьте фильтр:

sample_variables=success  

Заключение: Listeners — ваш гид в мире нагрузочного тестирования

Правильная настройка Listeners в JMeter — это 50% успеха анализа производительности. Помните:

  • Не используйте View Results Tree в продакшн-тестах.
  • Сохраняйте данные в CSV/JTL для последующего разбора.
  • Интегрируйтесь с Grafana для красивого и функционального мониторинга.

Если ваш отчёт показывает 100% ошибок — не паникуйте. Возможно, вы просто забыли выключить View Results Tree.


ПОДПИСЫВАЙСЯ НА ТЕЛЕГРАМ

ПОДПИСЫВАЙСЯ ВО ВКОНТАКТЕ