#jmeter #jmeter-plugins #jmeter-5.0 #jsr223 #threadgroup
Вопрос:
В Jmeter я использую группу потоков параллелизма ${__tstFeedback(ThroughputShapingTimer,1,10,10)}
в сочетании с таймером формирования пропускной способности для динамического изменения целевой пропускной способности на протяжении всего теста.
Я хочу иметь тестовый элемент JSR223 (утверждение или постпроцессор, это имеет значение?) в котором можно написать пользовательскую логику, чтобы не регистрировать какую-либо конкретную ошибку, но только если она возникает ближе к концу тестового сценария, и я не хочу жестко указывать значение времени.
Например, если я получаю a java.net.SocketException
в последние 2 минуты запланированного времени выполнения, я хочу не регистрировать его, но я хочу регистрировать его в остальное время. Для этого я полагаю, что мне нужен какой-то способ определить дату, когда тест должен закончиться с начала теста, оценить ее и вычесть из нее 2 минуты, а затем сравнить текущее время с этим временем, а затем, если текущее время выше, начать выполнять некоторую логику, чтобы исключить результат из журнала.
Обновление: В группе потоков «Обычный» или «По умолчанию» я заметил, что могу сделать это, чтобы получить начальную продолжительность:
String groupDuration = ctx.getThreadGroup().getDuration();
log.info(groupDuration)
Но для группы потоков параллелизма это работает по-другому.
Я был бы признателен за любую информацию, которая поможет мне достичь этой цели.
Комментарии:
1. В вашей функции запланированной обратной связи максимальное количество разрешенных потоков равно 10. Было бы лучше установить максимально допустимые потоки на более высокое значение. (например, 1000). JMeter создаст потоки только тогда, когда они необходимы для поддержания требуемой пропускной способности.
${__tstFeedback(tst-name,1,1000,10)}
. Документация
Ответ №1:
Если ваша группа потоков параллелизма настроена с Таймером формирования пропускной способности и Функцией обратной связи по расписанию, запланированная продолжительность тестирования доступна через свойство, предоставляемое Таймером формирования пропускной способности.
props.get('elementName_totalDuration')
Элемент экспортирует следующее свойство, к которому вы можете получить доступ с помощью функции __P или с помощью реквизитов тестовых элементов JSR223.get(«имя свойства»).
elementName_totalDuration — Общая продолжительность как сумма столбца «Длительность,сек»
Имя элемента будет именем вашего таймера формирования пропускной способности
ПРИМЕЧАНИЕ. Следует установить Время удержания целевой скорости на значение, равное или большее общей продолжительности, указанной в расписании таймера формирования пропускной способности. Следовательно, установите это значение на очень высокое значение, чтобы избежать завершения теста до запланированной продолжительности в таймере формирования пропускной способности. например, Установите целевую скорость удержания t0 1440 минут.
Использование группы потоков параллелизма с таймером формирования пропускной способности и функцией обратной связи
Когда эта группа потоков используется с Таймером формирования пропускной способности, вы можете заменить целевое значение параллелизма вызовом функции tstFeedback для динамического поддержания количества потоков, необходимого для достижения целевого RPS. При использовании этого подхода оставьте поля Время нарастания группы потоков параллелизма и Количество шагов нарастания пустыми, но обязательно установите Время удержания Целевой скорости равным или большим, чем общая продолжительность, указанная в расписании таймера формирования пропускной способности.
Ответ №2:
Для динамических групп потоков и производных можно использовать следующую функцию:
ctx.getThreadGroup().getHold()
Если вам нужно определить, в минутах это или секундах, вы можете использовать
ctx.getThreadGroup().getUnitStr()
Пример:
Дополнительная информация о скриптах Groovy в JMeter: Apache Groovy — Почему и как Вы должны его использовать
Ответ №3:
Вы можете отфильтровать результаты после теста с помощью инструмента «Результаты фильтрации».
Если вы хотите удалить фазу нарастания, вы можете использовать фильтры смещения
Использование --end-offset 120
параметра (секунды)
Комментарии:
1. Если я правильно понимаю, этот инструмент требует наличия входного файла .jtl для обработки, а затем он выдаст отредактированную версию входного файла на основе параметров, заданных в командной строке. И затем этот новый файл можно использовать для создания отчета jmeter. Не могли бы вы, пожалуйста, подтвердить, что мое понимание правильное?
2. @JustNatural в принципе да, ввод и вывод могут быть в формате csv
3. Таким образом, для этого требуется дополнительный ручной шаг. Можно ли каким-либо образом вызвать команду для создания обновленного файла журнала в конце тестового сценария для автоматизации преобразования исходного файла? Если да, то как?
4. @JustNatural да, вы можете вызвать оба в пакетном файле/скрипте
5. @JustNatural это другой вопрос, который вы можете погуглить или задать новый вопрос