Индивидуальное менторство по JMeter, K6, Grafana, пишите сюда

qa-load | нагрузочное тестирование

Jmeter, Loadrunner, Locust, K6, Grafana

Написано на

От

JMeter Controllers: Подробное руководство с примерами

Apache JMeter — это мощный инструмент для нагрузочного тестирования и анализа производительности веб-приложений. Одной из ключевых особенностей JMeter является его гибкость в создании сложных сценариев тестирования, которая достигается благодаря использованию контроллеров. Контроллеры в JMeter позволяют управлять порядком выполнения запросов, организовывать логику тестов и создавать сложные сценарии. В этой статье мы подробно рассмотрим различные типы контроллеров, их назначение и примеры использования.

1. Что такое контроллеры в JMeter?

Контроллеры в JMeter — это элементы, которые определяют порядок и логику выполнения запросов (samplers) в тестовом плане. Они позволяют организовывать запросы в группы, управлять потоком выполнения, повторять действия, создавать условия и многое другое. Контроллеры являются основой для создания сложных сценариев тестирования.

2. Типы контроллеров в JMeter

Контроллеры в JMeter делятся на две основные категории:

  • Логические контроллеры (Logic Controllers): Управляют порядком выполнения запросов и логикой теста.
  • Контроллеры модулей (Module Controllers): Позволяют повторно использовать фрагменты тестового плана.

Далее мы рассмотрим наиболее популярные логические контроллеры и их применение.


3. Логические контроллеры

3.1. Simple Controller (Простой контроллер)

Назначение: Простой контроллер используется для группировки запросов и других элементов. Он не добавляет никакой дополнительной логики, но помогает организовать тестовый план.

Пример использования:

  • Группировка запросов, связанных с авторизацией пользователя.
  • Организация запросов по функциональным блокам (например, «Поиск», «Корзина», «Оформление заказа»).

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > Simple Controller.

3.2. Loop Controller (Циклический контроллер)

Назначение: Позволяет повторять выполнение всех дочерних элементов заданное количество раз или бесконечно.

Пример использования:

  • Повторение сценария авторизации 10 раз.
  • Бесконечное выполнение запросов для имитации длительной нагрузки.

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > Loop Controller.
  3. Укажите количество повторений в поле Loop Count (или выберите «Forever» для бесконечного цикла).

3.3. If Controller (Условный контроллер)

Назначение: Выполняет дочерние элементы только в том случае, если выполняется определенное условие.

Пример использования:

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

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > If Controller.
  3. В поле Condition укажите условие (например, ${variable} == "value").

3.4. Transaction Controller (Контроллер транзакций)

Назначение: Группирует несколько запросов в одну транзакцию, что позволяет измерять общее время выполнения группы запросов.

Пример использования:

  • Измерение времени выполнения всего процесса оформления заказа.
  • Группировка запросов, связанных с одной пользовательской операцией.

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > Transaction Controller.
  3. Добавьте запросы внутрь контроллера.

3.5. Random Controller (Случайный контроллер)

Назначение: Выполняет один из дочерних элементов случайным образом.

Пример использования:

  • Имитация случайных действий пользователя (например, переход на разные страницы сайта).
  • Тестирование различных сценариев с разной вероятностью.

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > Random Controller.
  3. Добавьте несколько запросов внутрь контроллера.

3.6. Throughput Controller (Контроллер пропускной способности)

Назначение: Управляет количеством выполнений дочерних элементов в зависимости от заданной пропускной способности.

Пример использования:

  • Ограничение количества выполнений определенного запроса.
  • Имитация нагрузки с определенной интенсивностью.

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > Throughput Controller.
  3. Укажите значение пропускной способности в поле Throughput.

3.7. While Controller (Цикл While)

Назначение: Выполняет дочерние элементы до тех пор, пока выполняется определенное условие.

Пример использования:

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

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > While Controller.
  3. Укажите условие в поле Condition.

3.8. Interleave Controller (Чередующийся контроллер)

Назначение: Поочередно выполняет дочерние элементы при каждом проходе.

Пример использования:

  • Имитация чередующихся действий пользователя (например, переход между страницами).
  • Тестирование нескольких сценариев поочередно.

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > Interleave Controller.
  3. Добавьте несколько запросов внутрь контроллера.

3.9. Once Only Controller (Контроллер «Только один раз»)

Назначение: Выполняет дочерние элементы только один раз за все время выполнения теста.

Пример использования:

  • Инициализация данных (например, авторизация пользователя).
  • Выполнение одноразовых действий (например, создание тестовых данных).

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > Once Only Controller.
  3. Добавьте запросы внутрь контроллера.

3.10. Switch Controller (Переключающий контроллер)

Назначение: Выполняет один из дочерних элементов в зависимости от значения переменной или индекса.

Пример использования:

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

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > Switch Controller.
  3. Укажите значение переменной или индекс в поле Switch Value.

4. Контроллеры модулей

4.1. Module Controller (Контроллер модулей)

Назначение: Позволяет повторно использовать фрагменты тестового плана, определенные в других контроллерах.

Пример использования:

  • Повторное использование сценария авторизации в разных тестах.
  • Организация модульной структуры тестового плана.

Как добавить:

  1. Правой кнопкой мыши на тестовом плане или другом контроллере.
  2. Выберите Add > Logic Controller > Module Controller.
  3. Выберите фрагмент тестового плана в поле Module to Run.

5. Заключение

Контроллеры в JMeter — это мощный инструмент для создания сложных и гибких сценариев тестирования. Они позволяют управлять порядком выполнения запросов, организовывать логику теста, повторять действия и создавать условия. В этой статье мы рассмотрели основные типы контроллеров и их применение. Используя эти знания, вы сможете создавать более эффективные и реалистичные тестовые сценарии для анализа производительности ваших приложений.

Если у вас есть вопросы или вы хотите углубиться в какую-то конкретную тему, не стесняйтесь задавать их в нашем уютном чате! Удачного тестирования!


ПОДПИСЫВАЙСЯ НА ТЕЛЕГРАМ

ПОДПИСЫВАЙСЯ ВО ВКОНТАКТЕ