JMeter - запуск различных запросов на каждой итерации - PullRequest
8 голосов
/ 01 декабря 2011

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

Спасибо

Ответы [ 2 ]

13 голосов
/ 01 декабря 2011

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

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

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

Это будет повторять 5 потоков N раз.
СлучайноКонтроллер СЛУЧАЙНО забирает на каждом шаге http-запрос из «пула запросов» - все сэмплеры добавляются в качестве дочерних к произвольному контроллеру.
Тестовое действие приостанавливает поток на 40 секунд.

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

Random Controller example

<b>Thread Group</b>
Number of Threads = 5
Ramp-Up Period = 0
Loop Count = 10

<b>Constant Timer</b>
Thread Delay (in ms) = 40000

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

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

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

6 голосов
/ 03 декабря 2011

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

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

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

...