2015-06-16 6 views
-1

У меня есть JMeter тесты, которые есть следующие действия:JMeter переменная сфера ниток

  • Это делает запрос GET. Запрос возвращает некоторый идентификатор, который извлекается с помощью Regular Expression Extractor и устанавливается в переменной myId.
  • Другой запрос GET выполняется с использованием этого идентификатора, сохраненного в myId. Важно, чтобы тот же идентификатор использовался как возвращаемый запросом ранее. Не любой другой идентификатор!

Этот простой сценарий отлично работает. Но когда я увеличиваю «количества потоков (пользователей)» от 1 до (скажем) 5, я бегу в проблемы параллелизма:

enter image description here

  • Thread 1 делает запрос GET и присваивает идентификатор myId.
  • Нить 2 делает запрос GET и присваивает ID myId.
  • Теперь поток 1 снова запускается и выполняет второй запрос GET, но с неправильным идентификатором, так как поток 2 изменил его. Теперь все ломается.

Как этого избежать?

+0

Переменные не разделяются между потоками. Второй поток не должен мешать вашему идентификатору потока-1. Скорее всего, вы повторите попытку или не сможете правильно восстановить идентификатор во второй итерации потока-1. Можете ли вы попробовать выполнить только один поток, но несколько циклов? – RaGe

+0

Да, это было полезно, но оказалось, что проблема была где-то еще: я выполнил вход в систему перед моими испытаниями и сделал выход в цикле. Я все равно соглашусь с ответом, поскольку проблема решена, и Debug Sampler был хорошим намеком. –

ответ

1

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

Что вы можете сделать, чтобы проверить это, чтобы положить в умолчанию поле Значение:

nv_myId

согласно:

Вы может использовать Debug Sampler t o показать содержимое переменных

Смежные вопросы