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

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

Jmeter, Loadrunner, Locust, K6, Grafana

Написано на

От

Полное руководство по Thread Group в JMeter

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

Что такое Thread Group?

Thread Group в JMeter служит контейнером для компонентов теста и управляет потоками исполнения, которые имитируют действия пользователей. Каждый поток представляет одного пользователя, который выполняет серию операций, заданных в тестовом плане.

Вот так выглядит Thread Group в Jmeter по умолчанию

Основные настройки Thread Group в Jmeter

Name — имя вашей группы потоков, тут можете выбирать что угодно, главное чтобы было понятно и вам и вашей команде.

Comments — можете добавить какой-то комментарий сюда, который будет как-то описывать ваш Thread Group.

Action to be taken after a Sampler error — важная настройка в рамках Thread Group, который определяет, как JMeter должен реагировать, когда во время выполнения теста происходит ошибка в Sampler’е. Sampler в JMeter — это компонент, который выполняет задачу тестирования, например, отправку HTTP запроса. Если при выполнении этой задачи происходит ошибка, JMeter может выполнить одно из следующих действий, на выбор:

Continue:

  • Продолжить тестирование. JMeter будет продолжать исполнение следующих Sampler’ов в тестовом плане, игнорируя ошибку. Это подходит для сценариев, где не критично, если некоторые запросы терпят неудачу.

Start next thread loop:

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

Stop Thread:

  • Остановить поток (пользователя). JMeter остановит текущий поток, который столкнулся с ошибкой, но другие потоки будут продолжать работу. Этот вариант подходит, если вы хотите прекратить тестирование для конкретного пользователя при возникновении ошибки.

Stop Test:

  • Остановить все тестирование немедленно. Это полезно для сценариев, где важно, чтобы все части теста работали без ошибок, и дальнейшее выполнение теста при наличии ошибки не имеет смысла.

Stop Test Now:

  • Немедленно остановить все тестирование, без ожидания завершения текущих Sampler’ов. Это более резкий вариант остановки теста, который используется для моментальной приостановки всех действий.

Выбор действия зависит от целей тестирования и того, как критичны ошибки в контексте вашего тестового сценария. Например, если вы тестируете стабильность и надежность системы, может быть рациональным остановить тест при первой же ошибке, используя «Stop Test». Если же важно собрать статистику по всем пользователям независимо от индивидуальных ошибок, можно выбрать «Continue».

Thread Properties в JMeter описывают настройки и параметры, которые определяют поведение потоков (threads) в рамках Thread Group. Потоки в JMeter представляют собой виртуальных пользователей, которые выполняют заданные действия (сэмплеры) согласно тестовому плану. Каждый поток независимо исполняет задачи в соответствии с конфигурацией, заданной в Thread Group. Настройка этих свойств позволяет контролировать, как именно будет генерироваться нагрузка на тестируемую систему.

Основные свойства потоков включают:

Number of Threads (users):

  • Определяет количество виртуальных пользователей или потоков, которые будут созданы JMeter. Это основной параметр, определяющий масштаб теста.

Ramp-Up Period (in seconds):

  • Время, в течение которого должны быть созданы все потоки. Например, если указать 100 потоков с Ramp-Up Period равным 100 секундам, то JMeter будет стартовать по одному пользователю каждую секунду. Это позволяет избежать внезапного всплеска нагрузки на начальном этапе тестирования.

Loop Count:

  • Количество итераций, которое каждый поток должен выполнить в рамках тестового плана. Можно установить фиксированное число итераций или выбрать «Forever» для бесконечного выполнения теста до его ручной остановки.

Specify thread lifetime:

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

Delay Thread creation until needed:

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

Same user on each iteration:

  • Если эта опция активирована, каждый поток будет использовать один и тот же пользовательский контекст (например, сессию) для всех итераций цикла. Это полезно для сценариев, где необходимо сохранение состояния между итерациями.

Эти настройки определяют, как потоки будут взаимодействовать с тестируемой системой, и позволяют адаптировать процесс тестирования под специфические требования проекта или эксперимента. Корректная настройка этих параметров критически важна для получения релевантных и точных результатов тестирования.

Duration (seconds)

Этот параметр определяет продолжительность работы потоков. Если вы установите значение Duration, это будет означать, что после истечения указанного количества секунд, даже если не все потоки завершили свои итерации, выполнение потоков будет остановлено. Это полезно, когда вам нужно ограничить время тестирования определённой длительностью, например, чтобы симулировать нагрузку на систему в течение конкретного временного окна.

Пример использования: если у вас задача провести нагрузочный тест веб-сервера на 30 минут, вы устанавливаете Duration в 1800 секунд (30 минут). После этого времени все активные потоки будут остановлены, и тест завершится.

Startup delay (seconds)

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

Пример использования: если установить Startup delay в 10 секунд для теста с 10 потоками, каждый следующий поток будет запускаться с задержкой в 10 секунд относительно предыдущего. Это значит, что первый поток стартует сразу, второй — через 10 секунд после начала теста, третий — через 20 секунд и так далее.

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

Итог

Thread Group в JMeter — это фундаментальный элемент, который задаёт основные параметры исполнения тестов и имитирует действия реальных пользователей. Он даёт возможность не просто проверить, как ваша система справляется с нагрузкой, но и как она реагирует на различные сценарии использования с учетом конкретных временных рамок и поведения пользователей. Благодаря гибким настройкам, как Duration и Startup delay, можно точно моделировать повседневную операционную активность и выявлять потенциальные узкие места и проблемы производительности, прежде чем они станут критичными.

Использование Thread Group позволяет увидеть не только «сухие» цифры производительности, но и получить представление о том, как изменения в инфраструктуре или коде приложения могут повлиять на конечного пользователя. Это ключ к оптимизации IT-систем и повышению удовлетворённости и лояльности пользователей.


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

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