1. Обзор
В этом руководстве мы интегрируем нагрузочный тест в конвейер Jenkins с помощью Gatling . Прежде всего, давайте удостоверимся, что мы знакомы с концепцией Гатлинга.
2. Создайте проект Гатлинга с помощью Maven
Наша цель — вставить нагрузочный тест с Gatling в конвейер Jenkins CI/CD. Чтобы автоматизировать этот шаг проверки, мы можем упаковать инструмент с помощью Maven.
2.1. Зависимости
Gatling предоставляет подключаемый модуль Gatling Maven Plugin, который позволяет нам запускать нагрузочные тесты с помощью Gatling на этапе сборки Maven проекта. Таким образом, нагрузочный тест можно интегрировать в любой инструмент непрерывной интеграции.
Итак, давайте интегрируем Gatling в пример проекта Maven. Во-первых, нам нужны следующие зависимости в нашем файле pom.xml
:
<dependency>
<groupId>io.gatling.highcharts</groupId>
<artifactId>gatling-charts-highcharts</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>io.gatling</groupId>
<artifactId>gatling-app</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>io.gatling</groupId>
<artifactId>gatling-recorder</artifactId>
<version>3.3.1</version>
</dependency>
В дополнение к предыдущим зависимостям нам нужно указать gatling-maven-plugin
в разделе плагинов pom.xml
:
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
<version>3.0.5</version>
<configuration>
<simulationClass>org.foreach.${SimulationClass}</simulationClass>
</configuration>
</plugin>
Значение SimulationClass
представляет класс моделирования, используемый для выполнения нагрузочного теста. Версия Gatling и версия Gatling Maven Plugin не обязательно должны совпадать. Здесь мы можем найти последнюю версию Gatling , а по следующей ссылке мы можем найти последнюю версию плагина Gatling Maven.
2.2. Создание сценария
Моделирование состоит из сценария, который может содержать выполнение нескольких запросов.
Симуляции написаны на Scala с использованием DSL Gatling, который прост и интуитивно понятен.
2.3. Запуск сценария
После того, как мы написали код, необходимый для выполнения нагрузочного теста, мы можем собрать проект и запустить симуляцию:
mvn clean package
mvn gatling:test
Внутри сгенерированной целевой папки мы можем найти отчет о нагрузочном тесте, выполненном Gatling.
3. Интегрируйте Гатлинга с Дженкинсом
Интеграция Gatling в конвейер Jenkins позволяет нам выполнять нагрузочные тесты во время его выполнения .
Таким образом, мы можем убедиться, что изменения, внесенные в код, который мы выпускаем, не приводят к значительному снижению производительности.
Это повышает надежность и уверенность в новом коде, который будет выпущен .
3.1. Создайте файл Дженкинс
В рамках нашего проекта мы создаем Jenkinsfile
, инструктируя его, как запускать Gatling:
pipeline {
agent any
stages {
stage("Build Maven") {
steps {
sh 'mvn -B clean package'
}
}
stage("Run Gatling") {
steps {
sh 'mvn gatling:test'
}
post {
always {
gatlingArchive()
}
}
}
}
}
Скрипт разбит на два этапа:
- Соберите проект (Maven)
- Запускаем и архивируем наши сценарии (Gatling)
Затем мы фиксируем и отправляем тестовый код в нашу систему управления исходным кодом. После настройки Jenkins сможет читать и выполнять только что созданный скрипт.
3.2. Создайте конвейер
Используя этот JenkinsFile,
мы создадим собственный конвейер. Создать конвейер в Jenkins очень просто.
Давайте сначала перейдем на домашнюю страницу Jenkins и нажмем New Item
, выберем Pipeline
и дадим ему осмысленное имя. Чтобы узнать больше о создании конвейера в Jenkins, мы можем посетить наш учебник, посвященный этой теме .
Настроим только что созданный пайплайн. В разделе Pipeline
выбираем источник скрипта.
В частности, давайте выберем из выпадающего меню Pipeline script from SCM
, зададим URL-адрес нашего репозитория, зададим учетные данные, необходимые для извлечения исходного кода, укажем ветку, из которой нужно получить скрипт, и, наконец, укажем путь, по которому следует найдите наш недавно созданный Jenkinsfile
.
Окно должно выглядеть следующим образом:
3.3. Плагин Гатлинга Дженкинса
Перед запуском вновь созданного конвейера нам необходимо установить плагин Gatling Jenkins.
Плагин позволяет нам:
- Получайте и публикуйте подробные отчеты при каждом запуске конвейера
- Отслеживайте каждую симуляцию и предоставляйте графики тенденций
Команда gatlingArchive()
, вставленная в конвейер, является частью этого подключаемого модуля, и именно она позволяет нам включать только что упомянутые отчеты.
Давайте установим плагин и перезапустим Jenkins.
На этом конвейер с нашим нагрузочным тестом готов к запуску .
3.4. Разделение генерации нагрузки
Генерация нагрузки вызовов для выполнения теста — достаточно ресурсоемкая операция. По этой причине не рекомендуется выполнять эти операции на главном узле Jenkins, на котором запущен конвейер.
Мы будем использовать подчиненный узел Jenkins для выполнения некоторых шагов конвейера.
Предположим, мы правильно настроили один или несколько подчиненных узлов на Jenkins; Агент любая
команда , вставленная во вновь созданный конвейер, позволяет нам выделить узел-исполнитель и запустить указанный код на этом узле.
4. Запустите конвейер
Пришло время запустить наш конвейер.
Из дома Jenkins мы выбираем только что созданный конвейер и нажимаем Build Now
. Затем мы ждем, пока конвейер запустится. В конце выполнения мы должны увидеть диаграмму, подобную этой:
5. Просмотрите результат
На странице выполнения нашего конвейера мы можем увидеть, как был сгенерирован график, показывающий среднее время отклика, сгенерированное нашим нагрузочным тестом. График создается плагином Gatling Jenkins. Он будет содержать данные о последних 15 сборках, чтобы немедленно показать тенденции производительности наших выпусков.
Если мы нажмем кнопку Gatling
в меню слева, внутри страницы выполнения нашего конвейера, мы увидим графики, показывающие тенденцию наших последних 15 сборок.
В частности, у нас будет информация о:
- Среднее время отклика
- 95-й процентиль времени отклика и
- Процент обращений в «КО» (то есть «не ладно»)
Внизу страницы, после только что упомянутых графиков, мы найдем ссылки на отчеты Gatling, сгенерированные для каждой из сделанных сборок.
Нажимая на ссылки, мы можем просматривать непосредственно в Jenkins сгенерированные отчеты Gatling:
6. Заключение
В этом руководстве мы увидели, как вставить нагрузочные тесты, выполненные с помощью Gatling, в конвейер Jenkins. Мы начали с объяснения того, как сгенерировать нагрузочный тест с помощью Gatling, как создать файл Jenkins
для его запуска и как интегрировать его в конвейер Jenkins.
Наконец, мы показали, как плагин Gatling Jenkins полезен для создания отчетов Gatling непосредственно в нашем развертывании Jenkins.
Чтобы узнать больше о том, как структурировать тестовый сценарий для мониторинга производительности веб-сайта, давайте посетим еще один наш учебник Gatling .
Как всегда, полный исходный код руководства доступен на GitHub .