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 Best Practices вы должны
- Используйте как можно меньше слушателей; При использовании флага -l, как указано выше, все они могут быть удалены или отключены.
- Не используйте прослушиватели " Просмотр дерева результатов " или "Просмотр результатов в таблице" во время нагрузочного теста, используйте их только на этапе создания сценариев для отладки сценариев.
Вы можете получить любую необходимую информацию из файла результатов.jtl, указать местоположение результатов теста через -l
аргумент командной строки