Значения Beanshell не случайны для потока - PullRequest
1 голос
/ 12 февраля 2020

У меня проблема с попыткой рандомизировать некоторые значения. В этом случае я использую Случайный , чтобы выбрать заголовок из списка строк.

import java.util.Random;
titles = "Mr,Mrs,Sir,Ms,Dr";
String[] titles = titles.split(",");
Random random = new Random();
String randomValue = titles[random.nextInt(titles.length)];
vars.put("TITLE", randomValue);

Выше работает нормально для одного запуска потока, но если вы зацикливаетесь, то это перестает генерировать новые значения. Если я запускаю несколько потоков, он генерирует разные значения.

1 Ответ

1 голос
/ 12 февраля 2020

Я ожидаю, что ваш скрипт Beanshell где-то выйдет из строя, скорее всего, вы сталкиваетесь с условием гонки , когда пытаетесь перезаписать titles значение переменной чем-то, что меняет ее тип.

Вы можете изменить свой код так:

import java.util.Random;
titles = "Mr,Mrs,Sir,Ms,Dr";
String[] titles2 = titles.split(",");
Random random = new Random();
String randomValue = titles2[random.nextInt(titles2.length)];
vars.put("TITLE", randomValue);

, и это должно решить вашу проблему.

Лучшим решением было бы перейти на тестовый элемент JSR223 и Groovy язык как , рекомендуется делать это начиная с JMeter 3.1 , Groovy имеет лучшую производительность по сравнению с Beanshell, поэтому вы должны иметь возможность повторно использовать существующий код.

...