JMeter - запуск разных запросов на каждой итерации

В настоящее время я использую JMeter для имитации 5 пользователей, запускающих запросы каждые 40 секунд. Я создал 100 разных запросов, но каждые 40 секунд каждый пользователь запускает все 100 запросов. Я хочу сделать это таким образом, чтобы каждые 40 секунд каждый пользователь запускал только 1 запрос, и этот запрос должен отличаться от предыдущего запроса. Я хотел бы знать, какой контроллер использовать (или что-то еще) для реализации этого сценария.

Спасибо


person user1066568    schedule 01.12.2011    source источник


Ответы (2)


Попробуйте использовать случайный контроллер.

Самый простой способ реализовать свой сценарий:

Thread Group
Number of Threads = 5
Loop Count = N
    . . .
    Random Controller
        HTTP Request 001
        HTTP Request 002
        HTTP Request 003
        . . .
        . . .
        HTTP Request 100
    Test Action
    Target = Current Thread
    Action = Pause
    Duration = 40000
    . . .

Это будет повторять 5 потоков N раз.
Random Controller будет СЛУЧАЙНО получать HTTP-запрос на каждом шаге из «пула запросов» - все сэмплеры, добавленные как дочерние к Random Controller.
Test Action приостанавливает поток на 40 секунд.

Обновлено:
рабочая иллюстрация для схемы выше:

Пример случайного контроллера

Thread Group
Number of Threads = 5
Ramp-Up Period = 0
Loop Count = 10

Constant Timer
Thread Delay (in ms) = 40000

Вы можете скачать рабочий пример для описанной схемы отсюда: rc-plan. jmx.
Он работает так, как вы хотите (по крайней мере, для меня, Jmeter 2.5.1): он случайным образом выбирает ОДИН запрос из пула запросов (в примере - 10 запросов) для КАЖДОГО пользователя (здесь - 5 пользователей ) на КАЖДОМ шаге (здесь - 10 циклов) и приостанавливает каждый поток на 40 секунд (постоянный таймер).

Вы также можете заглянуть в этот архив рассылки: Их способ случайным образом выбрать URL?.
Ситуация, похожая на вашу, кажется, описана здесь.

... Согласно официальной документации «Взаимодействие между несколькими контроллерами может привести к сложному поведению. Это особенно верно для случайного контроллера».

person Aliaksandr Belik    schedule 01.12.2011
comment
Будет ли приведенная выше настройка заставлять каждый поток запускать один запрос (случайно выбранный из пула запросов) каждые 40 секунд или все 100 запросов каждые 40 секунд? Я попробовал, и он по-прежнему запускал все 100 каждые 40 секунд. Не могли бы вы прислать мне образец плана тестирования, который вам подходит? Большое спасибо за вашу помощь, Alies - person user1066568; 02.12.2011
comment
Попробуйте это: filehat.com/en/file/27104/ rc-plan-jmx.html. Как у меня работает нормально (Jmeter 2.5.1). - person Aliaksandr Belik; 02.12.2011
comment
Спасибо вам большое за это, Alies. - person user1066568; 06.12.2011

Другой вариант для вас - заранее создать файл CSV с параметрами для ваших запросов и использовать Конфигурация набора данных CSV для параметризации одного HTTP-запроса.

Это, очевидно, зависит от того, насколько разные ваши HTTP-запросы, но если это соответствует вашим требованиям, есть некоторые потенциальные бонусы с сохранением 1 HTTP-запроса в вашем плане тестирования по сравнению со 100.

Остальные детали будут такими же, как изложил @Alies Belik - одна группа потоков, настроенная для вашего необходимого количества потоков и циклов, с постоянным таймером в конце для вашей 40-секундной паузы.

person brentj    schedule 03.12.2011