Jmeter, как перебрать список различных свойств в одной группе потоков или контроллере? - PullRequest
0 голосов
/ 27 июля 2011

Как сделать базовый цикл по различным свойствам для фиксированного набора контроллеров?Контроллер цикла запускает заданную группу определенное количество раз, однако не использует свойства.

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

property x
do module (points to controllers)
next property

Скажем, у меня есть список из 44 символов, и я хочу просмотреть эти символы в $ {name}, пока я делаю тест.Я бы очень не хотел создавать 44 набора контроллеров для одной смены персонажа.

Обратите внимание Я не могу добавить дополнительные файлы на свой компьютер.Он должен работать через имеющиеся в наличии контроллеры.Я использую Jmeter 2.4 r961953

Спасибо

Ответы [ 2 ]

9 голосов
/ 16 марта 2012

Я немного подробнее расскажу о методе BeanShell.Я предполагаю, что вы хотели бы сделать это в одной пользовательской ветке, в этом случае мое предложение будет следующим:

Создать Loop Controller .

  • ЛогикаController-> Loop Controller

Внутри Loop Controller добавьте следующие записи:

  • Элемент конфигурации -> Счетчик
  • Препроцессоры ->Препроцессор BeanShell
  • Sampler -> yourSampler

Элемент Counter будет использоваться в качестве индекса, который будет использоваться для выбора действительного значенияиз нашего массива, следовательно, нам нужно указать Reference Name для Counter - скажем, это будет loopCounter.

Теперь нам нужно переключиться на BeanShell препроцессор и определения массива значений.Замечательно, что у нас есть переменная vars, и она дает нам CRUD-доступ к переменным, используемым в сценарии:

String[] varArray = {"Value1", "Value2"};
idx = Integer.parseInt(vars.get("loopCounter"))-1;
vars.put("myVariable", varArray[idx]);

И на последнем этапе, внутри mySampler мы можемиспользуйте переменную обычным способом JMeter: ${myVariable}

JMeter API может быть очень полезным, если вы хотите более сложное решение.

2 голосов
/ 28 июля 2011

Существует несколько способов циклически проходить по разным значениям без добавления внешних файлов:

  • Используйте бобовый контроллер и напишите javascript, чтобы установить переменную
  • Используйте счетчик для увеличения на единицу
  • Использовать параметры пользователя

Вы можете настроить его так, чтобы каждый цикл получал свое значение.

Проверьте различные контроллеры конфигурации , чтобы найти тот, который лучше всего подходит для вас.

EDIT: Я имел в виду пользовательские параметры , а не пользовательские переменные.

Параметр пользователя

Вам понадобится одна строка для каждой переменной с 44 столбцами. Извините за путаницу.

Структура параметров пользователя

test plan
 - Thread Group looped 44 times
 -- User parameter
 -- Request

Метод Beanshell

В качестве альтернативы, вы можете сделать массив в javascript в связи со счетчиком. Сэмплеры Beanshell имеют доступ к переменным и свойствам Jmeter, что позволяет сэмплеру Beanshell считывать значение счетчика. Это может быть быстрее и понятнее, чем использование пользовательских параметров.

Структура из бобов

test plan
 - Thread Group looped 44 times
 -- Counter
 -- Request
 ---- Beanshell pre-processor

Псевдокод Beanshell будет

def counter = value of Jmeter Counter
def array = array of values

declare  the variable "sampler_value" to be used by sampler
def sampler_value = array @ counter

Счетчик с функцией CharAt

Если вам нужно только генерировать символы, вы можете использовать функцию javascript , чтобы использовать функцию charAt , используя значение из счетчика. Базовая структура будет: план испытаний - группа нитей зациклена 44 раза - Счетчик - Запрос

с запросом, использующим что-то вроде ${__javaScript(charAt(${counter})) в качестве значения параметра. Возможно, вам придется использовать JEXL вместо javaScript или evalVar / V / eval внутри функции charAt. * ​​1053 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...