среда, 18 апреля 2012 г.

Рандомные значения. Часть 1

Есть несколько вариантов генерации случаных значений. Самый просто способ - это использовать встроенные функции JMeter __Random и __RandomString. Первая функция генерирует рандомное значение в указанном диапазоне с в возможностью указания имени переменной для дальнейшего использования сгенерированного значения (${__Random(1,100,myRandom)}). Вторая функция генерирует рандомную строку указанной длины с использованием указанных символов также с возможностью указания имени(${__RandomString(5,abcdefghijk12345,myRandom)}).

В JMeter есть встроенная утилита для генерирования подобных функций (Option->Function Helper Dialog), в которой необходимо выбрать нужный тип, ввести входные значения и нажать кнопку [Generate].



Но у этих функий есть один минус. Если мы в User Defined Variables объявим переменную и в качестве значения укажем __Random или __RandomString, то это рандомное значение сгенерится один раз на весь тест план и для всех пользователей. То есть если  мы запускаем Thread Group для 10 юзеров и каждый обращается к рандомной переменной, то все они получат одно и то же значение. Поэтому для этих целей лучше использовать Random Variable (Add->Config Element->Random Variable).


Добавляем Random Variable и указываем в нем следующие параметры:
  • имя переменной для дальнейшего обращения (Variable Name)
  • формат (Output Format) (значение формата может состоять только из нулей, указывающих разрядность, или же с содержанием символов как перед нулями так и после)
  • минимальное значение (Minimum Value)
  • максимальное значение (Maximum Value)
  • основу для генерации рандомных значений, которой по умолчанию является текущее время в миллисекундах ( Seed for Rundom function)
Параметр "Per Thread (User)": если значение параметра False, то генератор общий для всех Thread Group, если значение True, то генератор свой для каждого пользователя.

И так мы имеем следующую картину:



Теперь при использовании нашей переменной myRandom мы всегда будем получать новое значение.

1 комментарий:

  1. ${__RandomString(5,abcdefghijk12345,myRandom)} будет генерить разные значения для нескольких Thread если не запихивать в User Defined Variables, а использовать напрямую в реквесте.
    И кстати значение сохраняется в переменную myRandom и её можно использовать в дальнейшем.

    ОтветитьУдалить