#jmeter
#jmeter
Вопрос:
Я хотел бы знать, возможно ли сбросить контекст потока (все его переменные) в начале новой итерации.
Проблема, с которой я сталкиваюсь, заключается в том, что поток сохраняет все переменные (и их значения) из своих предыдущих итераций, и иногда это может привести к беспорядку.
Если я не ошибаюсь, в тестах производительности VisualStudio вы можете указать процент «новых пользователей», чтобы указать, сколько виртуальных пользователей будут сбрасывать свои контексты на следующей тестовой итерации.
Есть ли у нас что-то похожее на JMeter или нам нужно написать какой-то код для этого?
Заранее спасибо!
Ответ №1:
Я не уверен, что вы действительно хотите / нуждаетесь в этом, но вы можете удалить все переменные JMeter с помощью скрипта JSR223 с помощью метода remove:
for (Map.Entry entry : vars.entrySet()) {
vars.put(entry.getKey(), null);
}
Комментарии:
1. Привет, пользователь7294900, спасибо за ваш ответ. Я хочу удалить (а не просто очистить его значения) ВСЕ переменные, которые были созданы во время одной итерации потока, поэтому, когда этот же поток начнет новую итерацию, у него не будет переменных с пустыми значениями, но вместо этого будут созданы новые переменные.
Ответ №2:
Это зависит от типа создаваемых вами переменных и от того, как вы их используете.
Например:
Regular Expression Extractor
Здесь он создает переменную regex.var
, и если ответ соответствует выражению, ему будет присвоено некоторое значение. Если следующая итерация не соответствует выражению, оно все равно сохранит значение предыдущей итерации. Чтобы избежать этой проблемы, назначьте значение по умолчанию или установите флажок «Использовать пустое значение по умолчанию». так что каждая итерация в основном сбрасывает значение.
User Designed Variables
— Каждый поток будет иметь свою собственную копию переменной, и потоки могут изменять значение ее переменной на протяжении всего времени тестирования. Если вы хотите, чтобы это сбрасывалось для каждой итерации, это полностью ваша ответственность.
Я думаю, это может быть полезно.
Комментарии:
1. Привет, Винц, спасибо за ваш ответ. Мне действительно нужно удалить все переменные, а не только сбросить их значения, потому что для некоторых экстракторов RegularExpression / JSON я использую MatchNo как «-1», поэтому он создает ‘n’ переменных, и они будут сохранять значения, которые не будут использоваться. Кроме того, я считаю, что это может испортить некоторые функции, такие как, и я также использую их для выбора случайного значения из «$ {__V(extracted_item_ $ {__Random(1, $ {extracted_item_matchNr},)})}».