Перейти к основному содержимому

Вставка задержек между запросами в Apache JMeter

· 4 мин. чтения

1. Обзор

Когда мы тестируем с помощью Apache JMeter, мы можем захотеть добавить задержку между запросами, чтобы создать лучшую модель поведения нашего пользователя.

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

2. Вариант использования

Иногда мы можем захотеть добавить задержку между запросами:

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

3. Использование задержек

Во-первых, нам нужно определить профиль загрузки. Здесь мы можем преследовать различные цели:

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

Есть два варианта JMeter для моделирования этих вариантов использования:

  • Группа потоков — сколько параллельных пользователей
  • Таймер — задержки между запросами для каждого пользователя

4. План тестирования

4.1. Базовый план

Давайте создадим базовый план тестирования с одной группой потоков. Мы установим количество параллельных запросов, период нарастания и количество раз выполнения теста. Следует отметить, что один поток в нотации JMeter означает одного одновременно работающего пользователя.

./28db883f63ee9cf4b48a0dd447673dab.png

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

Чтобы создать более сложный профиль загрузки, мы также можем указать время жизни потока. Этот параметр означает 2 вещи:

  • Задержка запуска — сколько времени JMeter ожидает запуска потока
  • Продолжительность — как долго это длится

Счетчик циклов также является полезным параметром для указания количества повторений указанных HTTP-запросов.

4.2. Добавление запросов

Далее мы добавим два HTTP-запроса. Мы будем использовать онлайн REST API по адресу https://gorest.co.in/ для тестирования нашего скрипта. Настройки HTTP-запроса настраиваются в пользовательском интерфейсе:

./1a18350268b346bd871ef132559ed2d4.png

Давайте также добавим два утверждения, просто чтобы проверить, что запросы возвращают некоторые данные.

Нам нужно проверить, что наш тест работает без ошибок. По этой причине давайте добавим элемент View Results Tree , а затем запустим наш план тестирования.

Результат выполнения первого запроса отображается на панели View Results Tree .

./71cfac7c1676c1d4bdf4b96f4b03fbe3.png

Давайте посмотрим на вывод результатов Sampler для нашего второго запроса. Здесь Sample Start2021-05-17 15:00:40 , то же время, что и первый запрос. Это означает, что по умолчанию у нас нет никаких задержек между запросами.

Название потока: Группа потоков 1-1 Образец Начало:2021-05-17 15:00:40 SAMT

Имея это в виду, давайте посмотрим, как мы можем увеличить этот разрыв между запросами.

5. Добавление таймеров

5.1. Постоянный таймер

Чтобы добавить элемент таймера, нам нужно щелкнуть правой кнопкой мыши элемент группы потоков и выбрать « Добавить», «Таймер», «Постоянный таймер» .

./683282b5f566c98aee51c4f5c48b044c.png

Здесь мы добавили постоянный таймер с задержкой потока в три секунды в нашу группу потоков. Этот таймер добавляет задержку между каждым запросом.

Теперь давайте повторно запустим наш план тестирования и проверим дерево результатов просмотра. Мы должны увидеть, что запросы выполнялись с задержкой, которую мы установили в элементе таймера.

Название потока: Группа потоков 1-1 Пример начала: 2021-05-17 15:18:17 SAMT

И мы видим, что следующий HTTP-запрос был запущен через три секунды после первого.

Название потока: Группа потоков 1-1 Пример начала: 2021-05-17 15:18:20 SAMT

5.2. Альтернатива постоянному таймеру

В качестве альтернативы Constant Timer мы можем использовать Uniform Random Timer . Этот тип таймера можно добавить так же, как постоянный таймер.

В раскрывающемся меню он находится сразу после Constant Timer .

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

./d7bd6a7a09c918d8f950b6c3669ad5a9.png

Смещение постоянной задержки добавляет постоянную часть для каждой задержки. Random Delay Maximum помогает нам определить дополнительную случайную часть, которая будет добавлена к постоянному смещению задержки. Эти настройки позволяют нам обеспечить случайный фактор без того, чтобы задержка стала слишком маленькой.

Давайте запустим этот тест и посмотрим на элемент View Results Tree:

./e171ccfb1dff3aea331e310792393f06.png

Если мы внимательно посмотрим на точки Sample Start, то увидим, что случайные задержки были добавлены в соответствии с заданными параметрами Timer.

Название потока: Группа потоков 1-1 Пример начала: 2021-07-15 09:43:45 SAMT Название потока: Группа потоков 1-1 Пример начала: 2021-07-15 09:43:49 SAMT Название потока: Группа потоков 1-1 Пример начала: 2021-07-15 09:43:55 SAMT

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

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

В этом руководстве мы увидели, как можно вставить пользовательскую задержку между двумя запросами в Apache JMeter и использовать настройки группы потоков, чтобы добавить больше гибкости для созданной модели рабочей нагрузки.