JMeter: агрегированный отчет не создан с использованием CMDRunner или JMeterPluginsCMD - PullRequest
0 голосов
/ 12 февраля 2020

Я запускаю свой файл .jmx из командной строки и сохраняю метрики в файл .jtl. Мой файл .jmx имеет следующую структуру:

  • Группа потоков, в которой находятся мои тесты в селене
  • Группа потоков tearDown, где у меня есть:
    1. Образец BeanShell Sampler который проверяет файл .jtl, если он не пустой, если да, я добавил Thread.sleep ();
    2. Образец процесса ОС, который запускает cmd.exe с файлом bat, где у меня есть код, который генерирует агрегированный файл .csv.
    3. И, наконец, у меня есть 2 сэмплера BeanShell, которые манипулируют файлом .CSV.

Я попытался сгенерировать агрегированный CSV файл с использованием обоих методов:

код с использованием cmdRunner:

java -jar "C:\apache-jmeter-5.2.1\lib\cmdrunner-2.2.jar" --tool Reporter --generate-csv "C:\LoadTesting\aggregate.csv" --input-jtl "C:\LoadTesting\log.jtl" --plugin-type AggregateReport

код с использованием JMeterPluginsCMD:

JMeterPluginsCMD.bat --generate-csv "C:\LoadTesting\aggregate.csv" --input-jtl "C:\LoadTesting\log.jtl" --plugin-type AggregateReport

Когда я запускаю файл .JMX из командной строки, например:

jmeter -n -t "C:/LoadTesting/MyTest.jmx" -f -l "C:/LoadTesting /log.jtl" -j jmeter.log

Файл aggregate.csv содержит только заголовок и строку с Total, но если я выполню одну из вышеуказанных команд, файл будет сгенерирован правильно.

У вас есть идеи, почему моя ОС Process Sampler не работает так, как я ожидаю? У кого-нибудь есть предложения что проверить или как это отладить?

1 Ответ

0 голосов
/ 13 февраля 2020

Прежде всего, это может быть проблема с дополнительным пространством:

jmeter -n -t "C:/LoadTesting/MyTest.jmx" -f -l "C:/LoadTesting /log.jtl" -j jmeter.log
                                                              ^should this whitespace be here?

, если нет, скорее всего, ваша ОС Process Sampler где-то как-то дает сбой, вы можете временно настроить JMeter чтобы сохранить данные ответов для неудачных (или даже для всех) сэмплеров , добавив следующие свойства в сценарий запуска:

jmeter -Jjmeter.save.saveservice.output_format=xml -Jjmeter.save.saveservice.response_data=true -n -t "C:/LoadTesting/MyTest.jmx" -f -l "C:/LoadTesting /log.jtl" -j jmeter.log

таким образом, ваш файл log.jtl будет иметь формат XML, но он будет содержать выходные данные OS Sampler. Если ваша логика Beanshell c основана на формате CSV, вы можете использовать Слушатель, такой как Simple Data Writer или Flexible File Writer вместо

Другие пункты:

  1. Вместо ожидания завершения файла журнала вы можете установить для свойства jmeter.save.saveservice.autoflush значение true, чтобы JMeter сохранял результаты в файле .jtl, как только они будут готовы / доступны
  2. You может переместить ваши логи постобработки c в tearDown Группа потоков
  3. Начиная с JMeter 3.1 рекомендуется использовать тестовые элементы JSR223 и Groovy language , поэтому рассмотрите возможность миграции от Beanshell на следующую доступную возможность (то есть прямо сейчас)
...