Как я могу создать увеличивающиеся случайные строки с помощью JMeter?

Вопрос или проблема

Я пытался создать шаг в своем тесте 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

  1. Создайте счетчик:
    Начните с добавления элемента "Counter" к вашему тесту. Это элемент будет использоваться для генерации последовательных чисел, которые мы затем обработаем в функции случайной строки.

    • Имя: counter
    • Начальное значение: 0
    • Инкремент: 1
  2. Создайте переменную для случайной строки:
    Вместо попытки использовать встроенную функцию случайной строки, мы создадим пользовательский процесс, который будет использовать 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, обеспечивая большую гибкость по сравнению с предопределенными функциями. Убедитесь, что вы протестировали это решение, чтобы убедиться в его функционировании в вашем конкретном сценарии. Более того, вы можете настраивать генерацию в соответствии с вашими требованиями, изменяя набор символов или правила генерации строк.

Оцените материал
Добавить комментарий

Капча загружается...