JMeter для записи результатов на почасовой основе

У меня есть JMeter проект с несколькими GET а также POST запросы и утверждения для них. я использую Aggregate results а также View results treСлушатели, но ни один из них не может хранить результаты на почасовой основе. Я старался JMeterPlugins-Standard а также JMeterPlugins-Extras пакеты и jp@gc - Graphs Generator слушатель, но все они используют агрегированные данные вместо почасовых. Поэтому я хотел бы получить количество успешных и неудачных запросов / подтверждений в час, возможно, гистограмма будет наиболее подходящей для этой цели.

4 ответа

Решение

Я собираюсь предложить нетрадиционное решение на уровне дизайна: динамически присвойте своим сэмплерам значение часа (или даты и часа), чтобы каждый час имя менялось, и, таким образом, они появлялись в другой категории, то есть:

Код для такого имени:

${__time(dd:hh,)} the rest of sampler name

Такой сэмплер будет выглядеть следующим образом в агрегированном отчете (здесь я смоделировал его с минутами / секундами, но то же самое произойдет с днями / часами, только в большем масштабе):

Плюсы и минусы такого подхода:

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

  • Не зависит от слушателя, может использоваться практически с любым слушателем или визуализатором

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

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

  • Вы можете получить те же данные, правильно агрегируя JTL или CSV (в зависимости от того, что вы используете) после выполнения, так что это не дает вам ничего, чего невозможно достичь с помощью стандартных методов

  • Сценарий нужно изменить, чтобы это произошло. если у вас есть 100 сэмплеров, это займет некоторое время. И если вы хотите изменить обратно...

Вы можете попробовать с Jmeter backend Listener, Он имеет интеграцию с графитом и Influxdb. После сохранения результатов в этой базе данных временных рядов вы можете отобразить результат в панели управления Grafana. Grafana имеет собственную фильтрацию отображения результатов по часам, месяцам, дням и т. Д.

Чтобы получить итоговые результаты за час, добавьте в свой план тестирования.

Генерирует сводку тестового прогона к файлу журнала и / или стандартному выводу

Интервал обновления в jmeter.properties к вашим потребностям,1 час, 3600 секунд:

 summariser.interval=3600 

Вы получите сводку за час ваших запросов.

Возможно, вы захотите использовать инструмент Filter Results, который имеет --start-offset а также --end-offset Параметры, вы можете "разрезать" ваш файл результатов на "интересные" куски и построить их в соответствии с вашими требованиями.

Вы можете установить Фильтр результатов с помощью Менеджера плагинов JMeter.

Инструмент результатов JMeter Filter


Также имейте в виду, что согласно JMeter Best Practices вы должны

  • Используйте как можно меньше слушателей; При использовании флага -l, как указано выше, все они могут быть удалены или отключены.
  • Не используйте прослушиватели " Просмотр дерева результатов " или "Просмотр результатов в таблице" во время нагрузочного теста, используйте их только на этапе создания сценариев для отладки сценариев.

Вы можете получить любую необходимую информацию из файла результатов.jtl, указать местоположение результатов теста через -l аргумент командной строки

Другие вопросы по тегам