HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>После того, как окружение для нагрузочного тестирования на Gatling<a>подготовлено</a>, можно приступать к разработке скрипта нагрузки. Синтаксически, любой Gatling-скрипт состоит из 2-х частей: конфигурации и непосредственного профиля нагрузки. О них и поговорим.</p>
1 <p>После того, как окружение для нагрузочного тестирования на Gatling<a>подготовлено</a>, можно приступать к разработке скрипта нагрузки. Синтаксически, любой Gatling-скрипт состоит из 2-х частей: конфигурации и непосредственного профиля нагрузки. О них и поговорим.</p>
2 <h2>Конфигурация</h2>
2 <h2>Конфигурация</h2>
3 <p>Для задания конфигурации потребуется файл, содержащий данные о пользователях, которые нагрузят систему:</p>
3 <p>Для задания конфигурации потребуется файл, содержащий данные о пользователях, которые нагрузят систему:</p>
4 val users = ssv(fileName).circular<p>Что здесь что: •<strong>ssv</strong>(semicolon separated values ) - это формат файла, который совсем необязательно должен совпадать с его расширением (поддерживаются и другие форматы, о чём лучше почитать в<a>официальной документации</a>; •<strong>fileName</strong>- это строка, содержащая абсолютное имя файла (C:\data\users.csv ); •<strong>circular</strong>- это метод обхода значений в файле. В нашем примере, когда дойдём до последней строки с пользователем, произойдёт возврат в начало.</p>
4 val users = ssv(fileName).circular<p>Что здесь что: •<strong>ssv</strong>(semicolon separated values ) - это формат файла, который совсем необязательно должен совпадать с его расширением (поддерживаются и другие форматы, о чём лучше почитать в<a>официальной документации</a>; •<strong>fileName</strong>- это строка, содержащая абсолютное имя файла (C:\data\users.csv ); •<strong>circular</strong>- это метод обхода значений в файле. В нашем примере, когда дойдём до последней строки с пользователем, произойдёт возврат в начало.</p>
5 <p>Далее надо задать http-конифг, который будет работать для всех запросов:</p>
5 <p>Далее надо задать http-конифг, который будет работать для всех запросов:</p>
6 <p>Тут следует задать нужные хедеры, базовый URL и прочие настройки: к примеру, указать прокси либо отключить кеширование.</p>
6 <p>Тут следует задать нужные хедеры, базовый URL и прочие настройки: к примеру, указать прокси либо отключить кеширование.</p>
7 <p>Теперь приступаем к созданию сценария:</p>
7 <p>Теперь приступаем к созданию сценария:</p>
8 <p>Обратите внимание, что конфигурация должна содержаться в классе, расширяющий касс - Simulation.</p>
8 <p>Обратите внимание, что конфигурация должна содержаться в классе, расширяющий касс - Simulation.</p>
9 <p>Пример полного проекта можно посмотреть<a>здесь</a>. Таким образом создаётся сценарий, в котором используются пользователи и http-конфиг. В течение 20 минут скрипт прогонит профиль BasicLoad.start. В случае, если сервер виснет, на 21-й минуте прогон завершается в принудительном порядке. При этом будут получены все данные, успевшие попасть в лог.</p>
9 <p>Пример полного проекта можно посмотреть<a>здесь</a>. Таким образом создаётся сценарий, в котором используются пользователи и http-конфиг. В течение 20 минут скрипт прогонит профиль BasicLoad.start. В случае, если сервер виснет, на 21-й минуте прогон завершается в принудительном порядке. При этом будут получены все данные, успевшие попасть в лог.</p>
10 <h2>Профиль нагрузки</h2>
10 <h2>Профиль нагрузки</h2>
11 <p>Профиль нагрузки выглядит следующим образом:</p>
11 <p>Профиль нагрузки выглядит следующим образом:</p>
12 <p>Что есть что в этом коде: •<strong>exec</strong>представляет собой метод, по которому нагрузочный профиль выполняет лишь единичное действие. К примеру, отправляет запрос, открывает сокет, а также отправляет сообщение по сокету либо выполняет анонимную функцию; •<strong>http(samplerName: String).(get|post|put…)</strong>- выполняет отправку необходимого http-запроса. В функции метода http следует указывать относительный путь. Базовый url уже указан в процессе настройке http-конфига. Далее указываются параметры запроса - queryParam | formParam; •<strong>check</strong>- для проверки ответа. Мы можем выполнить проверку заголовка ответа. Также можно применять check, если надо проверить и сохранить тело ответа либо его отдельные элементы.</p>
12 <p>Что есть что в этом коде: •<strong>exec</strong>представляет собой метод, по которому нагрузочный профиль выполняет лишь единичное действие. К примеру, отправляет запрос, открывает сокет, а также отправляет сообщение по сокету либо выполняет анонимную функцию; •<strong>http(samplerName: String).(get|post|put…)</strong>- выполняет отправку необходимого http-запроса. В функции метода http следует указывать относительный путь. Базовый url уже указан в процессе настройке http-конфига. Далее указываются параметры запроса - queryParam | formParam; •<strong>check</strong>- для проверки ответа. Мы можем выполнить проверку заголовка ответа. Также можно применять check, если надо проверить и сохранить тело ответа либо его отдельные элементы.</p>
13 <p>Любые действия мы можем исполнить посредством конструкции:</p>
13 <p>Любые действия мы можем исполнить посредством конструкции:</p>
14 <p>Внутри данного блока разработчик ограничен лишь возможностями языка программирования Scala. Сессия, с которой осуществляется работа, уникальна для каждого пользователя (потока). Именно поэтому есть возможность задавать для сессии параметры через set - тогда они будут доступны в других exec-блоках. А получить доступ к заданным параметрам вы сможете с помощью вызова:</p>
14 <p>Внутри данного блока разработчик ограничен лишь возможностями языка программирования Scala. Сессия, с которой осуществляется работа, уникальна для каждого пользователя (потока). Именно поэтому есть возможность задавать для сессии параметры через set - тогда они будут доступны в других exec-блоках. А получить доступ к заданным параметрам вы сможете с помощью вызова:</p>
15 <p>либо:</p>
15 <p>либо:</p>
16 _.attributes.getOrElse("idSkill",None)<p>Хотите знать о Gatling больше? Этот инструмент проходят на курсе "<a>Нагрузочное тестирование</a>" в OTUS!</p>
16 _.attributes.getOrElse("idSkill",None)<p>Хотите знать о Gatling больше? Этот инструмент проходят на курсе "<a>Нагрузочное тестирование</a>" в OTUS!</p>
17 <p><em><a>Источник</a></em></p>
17 <p><em><a>Источник</a></em></p>
18  
18