Для многопоточности одно и то же значение переменной передается из одного потока в другой в jmeter - PullRequest
0 голосов
/ 09 июля 2019

Я установил количество пользователей на 5, и у меня есть 3 потока, работающих в плане тестирования.Моя проблема, когда я передаю переменную из одного потока в другой, для всех 5 пользователей она передает одно и то же значение вместо 5 значений diff.Я использую утверждение оболочки Bean для передачи переменной в другой поток

Использовал утверждение beanshell для передачи переменных

${__setProperty(name, ${name})};
${__setProperty(range, ${range})};

и использовал функцию свойства в следующем потоке

  "name": "${__property(name)}",
  "range": "${__property(range)}",

Если вы видите, что полезная нагрузка, имя и диапазон значений всегда одинаковы для 5 пользователей:

Данные POST:

{
  "name": "testA",
  "range": "range-A",
 }

Ожидаемый результат - 5 пользователей должны иметь имена разностей

{
   "name": "testA",
   "range": "range-A",
}

{
  "name": "testB",
  "range": "range-B",
 }

{
  "name": "testC",
  "range": "range-C",
 }

1 Ответ

0 голосов
/ 10 июля 2019

-Используйте Groovy вместо бобов оболочки для производительности.

-Используйте препроцессоры или постпроцессоры вместо утверждения бобовой оболочки.

-Если предполагается, что это 5 пользователей и 3 группы потоков, а не 5 пользователей и 3 потока.

-Естьразница в свойствах и переменных, как описано ниже: -

Свойства не совпадают с переменными.Переменные локальные для потока;свойства общие для всех потоков

Таким образом, если ваша переменная установки является свойством, она становится общей для всех, и каждый поток получит одно и то же значение.

Чтобы передать значение из первой группы потоков в следующую, вы также можете использовать InterThread-Communication

Учитывая, что вы знаете, какие значения необходимо отправить, используйте CSV Data set config .Если данные извлекаются из пост-запроса, используйте пост-процессор для извлечения значения и передачи его дальше.

Надеюсь, это поможет.

...