Вопрос или проблема
Я пытался создать шаг в своем тесте JMeter, чтобы смоделировать увеличивающуюся строку на протяжении всего теста. Я видел функцию randomString, которая кажется идеальной, но я не могу найти способ изменить первый параметр.
У меня есть счетчик в тесте, который начинается с 0 и увеличивается на 1 на каждой итерации, поэтому моя первая мысль была использовать что-то вроде:
${__RandomString(${counter},abcdefjhijklmnopqrtsuvwxyz1234567890,nameOfOutput)}
Но это продолжает давать сбой во время выполнения, говоря мне, что счетчик является строкой.
Я также пытался использовать более общий RandomString с:
${__RandomString(${__Random(100,4500,)},abcdefjhijklmnopqrtsuvwxyz1234567890,nameOfOutput)}
что работает нормально, но мой JMeter возвращает код ошибки 500 при выполнении этого шага (хотя он и предоставляет случайную строку) по следующей причине:
2024-10-22 16:52:03,247 ERROR o.a.j.p.j.s.JSR223Sampler: Проблема в JSR223 скрипте Создать случайную строку, сообщение: javax.script.ScriptException: groovy.lang.MissingPropertyException: Нет такого свойства: jv03nn8zfzntdzates8i4w9s160owr2xx4rtor4x3tnec4h8xpidmv4760o84n49x39kuyzy55ybjoe8f6p58b7o9btjp0ocntnr2wshj069qhli3awf96f31b7pjae8jpck1q4o9xqthey5dko38djydh0hdun4y7n4ccblvetzuoo41jw7ssn3jx3sjjk63s2w12b634luln6p8bdu65sjqz48t92j6vytpqjcfblo3avbj0ef9c7ozzva08mia5syjae0tc50oi5p3f1jys для класса: Script15
javax.script.ScriptException: groovy.lang.MissingPropertyException: Нет такого свойства: jv03nn8zfzntdzates8i4w9s160owr2xx4rtor4x3tnec4h8xpidmv4760o84n49x39kuyzy55ybjoe8f6p58b7o9btjp0ocntnr2wshj069qhli3awf96f31b7pjae8jpck1q4o9xqthey5dko38djydh0hdun4y7n4ccblvetzuoo41jw7ssn3jx3sjjk63s2w12b634luln6p8bdu65sjqz48t92j6vytpqjcfblo3avbj0ef9c7ozzva08mia5syjae0tc50oi5p3f1jys для класса: Script15
Что я делаю не так?
Ответ или решение
Чтобы создавать возрастающие случайные строки в JMeter, следует учесть некоторые особенности работы с функциями и переменными. Я постараюсь изложить готовое решение, используя ваши начальные данные и идеи.
Шаги для создания возрастающей случайной строки в JMeter
-
Создайте счетчик:
Начните с добавления элемента "Counter" к вашему тесту. Это элемент будет использоваться для генерации последовательных чисел, которые мы затем обработаем в функции случайной строки.- Имя:
counter
- Начальное значение: 0
- Инкремент: 1
- Имя:
-
Создайте переменную для случайной строки:
Вместо попытки использовать встроенную функцию случайной строки, мы создадим пользовательский процесс, который будет использовать JSR223 Sampler и Groovy. Это даст нам большую гибкость и позволит избежать ошибок, связанных с типами данных.
Пример кода в JSR223 Sampler
Создайте новый "JSR223 Sampler" и используйте следующий код:
import org.apache.jmeter.functions.FunctionsManager
import org.apache.jmeter.engine.util.NoThreadContext
import java.security.SecureRandom
// Считываем текущий счетчик
int counterValue = vars.get("counter").toInteger()
// Определяем длину случайной строки на основе значения счетчика (например, длина строк будет увеличиваться от 1 до 10)
int length = counterValue % 10 + 1 // Ограничение длины для примера
// Символы, которые будут использоваться для генерации строки
String chars = "abcdefjhijklmnopqrtsuvwxyz1234567890"
SecureRandom random = new SecureRandom()
StringBuilder generatedString = new StringBuilder()
// Генерация случайной строки
for (int i = 0; i < length; i++) {
generatedString.append(chars[random.nextInt(chars.length())])
}
// Сохранение сгенерированной строки в переменной
vars.put("randomString", generatedString.toString())
Объяснение кода
- Считывание счетчика: мы получаем текущее значение счетчика и конвертируем его в целое число.
- Определение длины строки: в данном примере длина строки будет варьироваться от 1 до 10 символов. Вы можете изменить эту логику в зависимости от ваших требований.
- Генерация строки: используется
SecureRandom
для получения случайного символа из заданного набора символов и добавления его к строке. - Сохранение результата: после генерации строки мы сохраняем ее в переменной
randomString
, доступной для других элементов JMeter.
Использование сгенерированной строки
После выполнения вышеуказанного кода вы можете использовать переменную randomString
в следующих запросах. Например, в HTTP Request можно использовать ${randomString}
для передачи сгенерированной строки.
Заключение
Данный подход позволяет вам динамически генерировать увеличивающиеся случайные строки в рамках теста JMeter с использованием Groovy, обеспечивая большую гибкость по сравнению с предопределенными функциями. Убедитесь, что вы протестировали это решение, чтобы убедиться в его функционировании в вашем конкретном сценарии. Более того, вы можете настраивать генерацию в соответствии с вашими требованиями, изменяя набор символов или правила генерации строк.