Нагрузочное тестирование на Gatling: конфигурация и профиль нагрузки
После того, как окружение для нагрузочного тестирования на Gatling подготовлено, можно приступать к разработке скрипта нагрузки. Синтаксически, любой Gatling-скрипт состоит из 2-х частей: конфигурации и непосредственного профиля нагрузки. О них и поговорим.
Конфигурация
Для задания конфигурации потребуется файл, содержащий данные о пользователях, которые нагрузят систему:
val users = ssv(fileName).circular
Что здесь что: • ssv (semicolon separated values ) — это формат файла, который совсем необязательно должен совпадать с его расширением (поддерживаются и другие форматы, о чём лучше почитать в официальной документации; • fileName — это строка, содержащая абсолютное имя файла (C:\data\users.csv ); • circular — это метод обхода значений в файле. В нашем примере, когда дойдём до последней строки с пользователем, произойдёт возврат в начало.
Далее надо задать http-конифг, который будет работать для всех запросов:
Тут следует задать нужные хедеры, базовый URL и прочие настройки: к примеру, указать прокси либо отключить кеширование.
Теперь приступаем к созданию сценария:
Обратите внимание, что конфигурация должна содержаться в классе, расширяющий касс — Simulation.
Пример полного проекта можно посмотреть здесь. Таким образом создаётся сценарий, в котором используются пользователи и http-конфиг. В течение 20 минут скрипт прогонит профиль BasicLoad.start. В случае, если сервер виснет, на 21-й минуте прогон завершается в принудительном порядке. При этом будут получены все данные, успевшие попасть в лог.
Профиль нагрузки
Профиль нагрузки выглядит следующим образом:
Что есть что в этом коде: • exec представляет собой метод, по которому нагрузочный профиль выполняет лишь единичное действие. К примеру, отправляет запрос, открывает сокет, а также отправляет сообщение по сокету либо выполняет анонимную функцию; • http(samplerName: String).(get|post|put…) — выполняет отправку необходимого http-запроса. В функции метода http следует указывать относительный путь. Базовый url уже указан в процессе настройке http-конфига. Далее указываются параметры запроса — queryParam | formParam; • check — для проверки ответа. Мы можем выполнить проверку заголовка ответа. Также можно применять check, если надо проверить и сохранить тело ответа либо его отдельные элементы.
Любые действия мы можем исполнить посредством конструкции:
Внутри данного блока разработчик ограничен лишь возможностями языка программирования Scala. Сессия, с которой осуществляется работа, уникальна для каждого пользователя (потока). Именно поэтому есть возможность задавать для сессии параметры через set — тогда они будут доступны в других exec-блоках. А получить доступ к заданным параметрам вы сможете с помощью вызова:
"${idSkill}"
либо:
_.attributes.getOrElse("idSkill",None)
Хотите знать о Gatling больше? Этот инструмент проходят на курсе «Нагрузочное тестирование» в OTUS!