Apache JMeter — это мощный инструмент для нагрузочного тестирования и анализа производительности веб-приложений. Одной из ключевых особенностей JMeter является его гибкость в создании сложных сценариев тестирования, которая достигается благодаря использованию контроллеров. Контроллеры в JMeter позволяют управлять порядком выполнения запросов, организовывать логику тестов и создавать сложные сценарии. В этой статье мы подробно рассмотрим различные типы контроллеров, их назначение и примеры использования.
1. Что такое контроллеры в JMeter?
Контроллеры в JMeter — это элементы, которые определяют порядок и логику выполнения запросов (samplers) в тестовом плане. Они позволяют организовывать запросы в группы, управлять потоком выполнения, повторять действия, создавать условия и многое другое. Контроллеры являются основой для создания сложных сценариев тестирования.
2. Типы контроллеров в JMeter
Контроллеры в JMeter делятся на две основные категории:
- Логические контроллеры (Logic Controllers): Управляют порядком выполнения запросов и логикой теста.
- Контроллеры модулей (Module Controllers): Позволяют повторно использовать фрагменты тестового плана.
Далее мы рассмотрим наиболее популярные логические контроллеры и их применение.
3. Логические контроллеры
3.1. Simple Controller (Простой контроллер)
Назначение: Простой контроллер используется для группировки запросов и других элементов. Он не добавляет никакой дополнительной логики, но помогает организовать тестовый план.
Пример использования:
- Группировка запросов, связанных с авторизацией пользователя.
- Организация запросов по функциональным блокам (например, «Поиск», «Корзина», «Оформление заказа»).
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > Simple Controller
.
3.2. Loop Controller (Циклический контроллер)
Назначение: Позволяет повторять выполнение всех дочерних элементов заданное количество раз или бесконечно.
Пример использования:
- Повторение сценария авторизации 10 раз.
- Бесконечное выполнение запросов для имитации длительной нагрузки.
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > Loop Controller
. - Укажите количество повторений в поле
Loop Count
(или выберите «Forever» для бесконечного цикла).
3.3. If Controller (Условный контроллер)
Назначение: Выполняет дочерние элементы только в том случае, если выполняется определенное условие.
Пример использования:
- Выполнение запроса только если переменная содержит определенное значение.
- Пропуск части сценария, если пользователь не авторизован.
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > If Controller
. - В поле
Condition
укажите условие (например,${variable} == "value"
).
3.4. Transaction Controller (Контроллер транзакций)
Назначение: Группирует несколько запросов в одну транзакцию, что позволяет измерять общее время выполнения группы запросов.
Пример использования:
- Измерение времени выполнения всего процесса оформления заказа.
- Группировка запросов, связанных с одной пользовательской операцией.
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > Transaction Controller
. - Добавьте запросы внутрь контроллера.
3.5. Random Controller (Случайный контроллер)
Назначение: Выполняет один из дочерних элементов случайным образом.
Пример использования:
- Имитация случайных действий пользователя (например, переход на разные страницы сайта).
- Тестирование различных сценариев с разной вероятностью.
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > Random Controller
. - Добавьте несколько запросов внутрь контроллера.
3.6. Throughput Controller (Контроллер пропускной способности)
Назначение: Управляет количеством выполнений дочерних элементов в зависимости от заданной пропускной способности.
Пример использования:
- Ограничение количества выполнений определенного запроса.
- Имитация нагрузки с определенной интенсивностью.
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > Throughput Controller
. - Укажите значение пропускной способности в поле
Throughput
.
3.7. While Controller (Цикл While)
Назначение: Выполняет дочерние элементы до тех пор, пока выполняется определенное условие.
Пример использования:
- Повторение запросов до получения определенного ответа от сервера.
- Имитация поведения пользователя, который повторяет действие до успешного завершения.
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > While Controller
. - Укажите условие в поле
Condition
.
3.8. Interleave Controller (Чередующийся контроллер)
Назначение: Поочередно выполняет дочерние элементы при каждом проходе.
Пример использования:
- Имитация чередующихся действий пользователя (например, переход между страницами).
- Тестирование нескольких сценариев поочередно.
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > Interleave Controller
. - Добавьте несколько запросов внутрь контроллера.
3.9. Once Only Controller (Контроллер «Только один раз»)
Назначение: Выполняет дочерние элементы только один раз за все время выполнения теста.
Пример использования:
- Инициализация данных (например, авторизация пользователя).
- Выполнение одноразовых действий (например, создание тестовых данных).
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > Once Only Controller
. - Добавьте запросы внутрь контроллера.
3.10. Switch Controller (Переключающий контроллер)
Назначение: Выполняет один из дочерних элементов в зависимости от значения переменной или индекса.
Пример использования:
- Выбор сценария в зависимости от роли пользователя.
- Переключение между различными запросами на основе условий.
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > Switch Controller
. - Укажите значение переменной или индекс в поле
Switch Value
.
4. Контроллеры модулей
4.1. Module Controller (Контроллер модулей)
Назначение: Позволяет повторно использовать фрагменты тестового плана, определенные в других контроллерах.
Пример использования:
- Повторное использование сценария авторизации в разных тестах.
- Организация модульной структуры тестового плана.
Как добавить:
- Правой кнопкой мыши на тестовом плане или другом контроллере.
- Выберите
Add > Logic Controller > Module Controller
. - Выберите фрагмент тестового плана в поле
Module to Run
.
5. Заключение
Контроллеры в JMeter — это мощный инструмент для создания сложных и гибких сценариев тестирования. Они позволяют управлять порядком выполнения запросов, организовывать логику теста, повторять действия и создавать условия. В этой статье мы рассмотрели основные типы контроллеров и их применение. Используя эти знания, вы сможете создавать более эффективные и реалистичные тестовые сценарии для анализа производительности ваших приложений.
Если у вас есть вопросы или вы хотите углубиться в какую-то конкретную тему, не стесняйтесь задавать их в нашем уютном чате! Удачного тестирования!