Гатлинг (программное обеспечение)
Тип бизнеса | Частный |
---|---|
Тип сайта | с открытым исходным кодом Нагрузочное тестирование и тестирование производительности для веб-приложений |
Доступно в | Английский |
Основан | 1 июля 2015 г |
Штаб-квартира | Банье , Франция |
Обслуживаемая территория | По всему миру |
Основатель(и) | Стефан Ландель ( технический директор ) |
Промышленность | Программное обеспечение |
Продукты | Гатлинг, Гатлинг Энтерпрайз (Линия фронта) |
URL-адрес | гатлинг |
Запущен | 13 января 2012 г |
Текущий статус | Активный |
Написано в | Скала , Java , JavaScript |
Gatling — это среда нагрузочного тестирования и тестирования производительности, основанная на Scala , Akka и Netty . Первая стабильная версия была опубликована 13 января 2012 года. В 2015 году основатель Gatling Стефан Ландель создал компанию (названную «Gatling Corp»), занимающуюся разработкой проекта с открытым исходным кодом. По данным официального сайта Gatling Corp, Gatling был скачан более 20 000 000 раз (2024 г.). В июне 2016 года Gatling официально представила Gatling FrontLine (теперь Gatling Enterprise), версию Gatling Enterprise с дополнительными функциями. [1]
Программное обеспечение предназначено для использования в качестве инструмента нагрузочного тестирования для анализа и измерения производительности различных сервисов с упором на веб-приложения , API и микросервисы.
Гатлинг дважды упоминался в журнале ThoughtWorks Technology Radar, в 2013 и 2014 годах. [2] «как инструмент, который стоит попробовать», [2] с акцентом на «интересную предпосылку рассматривать ваши тесты производительности как производственный код ». [2]
Последним второстепенным выпуском является Gatling 3.11, опубликованный 23 апреля 2024 г. [3]
Обзор
[ редактировать ]Gatling Corp разрабатывает инструмент тестирования производительности веб-приложений с открытым исходным кодом Gatling и его корпоративную версию Gatling Enterprise. Цели проекта включают в себя:
- Высокая производительность
- Готовые HTML-отчеты
- Удобные для разработчиков DSL для Java, Scala, Kotlin, JavaScript и TypeScript.
Терминология
[ редактировать ]- Моделирование: файл моделирования включает в себя различные сценарии испытания, его параметризацию и профили введения . Технически говоря, симуляция — это класс Scala . [4] Вот примеры моделирования на Java и JavaScript: [5] [6]
//Java
public class ComputerDatabaseSimulation extends Simulation {
HttpProtocolBuilder httpProtocol =
http.baseUrl("https://computer-database.gatling.io")
.acceptHeader("application/json")
.contentTypeHeader("application/json");
ScenarioBuilder myFirstScenario = scenario("My First Scenario")
.exec(http("Request 1")
.get("/computers/"));
{
setUp(
myFirstScenario.injectOpen(constantUsersPerSec(2).during(60))
).protocols(httpProtocol);
}
}
//JavaScript
export default simulation((setUp) => {
const httpProtocol =
http.baseUrl("https://computer-database.gatling.io")
.acceptHeader("application/json")
.contentTypeHeader("application/json");
const myScenario = scenario("My Scenario")
.exec(http("Request 1")
.get("/computers/"));
setUp(
myScenario.injectOpen(constantUsersPerSec(2).during(60))
).protocols(httpProtocol);
});
- Сценарий: Сценарий состоит из серии запросов . Каждый сценарий в моделировании может иметь свой собственный профиль впрыска . [7] Вот пример сценария: [5] [6]
//Java
ScenarioBuilder myFirstScenario = scenario("My First Scenario")
.exec(http("Request 1")
.get("/computers/"));
{
setUp(
myFirstScenario.injectOpen(constantUsersPerSec(2).during(60))
).protocols(httpProtocol);
}
//JavaScript
const myScenario = scenario("My Scenario")
.exec(http("Request 1")
.get("/computers/"));
setUp(
myScenario.injectOpen(constantUsersPerSec(2).during(60))
).protocols(httpProtocol);
});
- Группа: группы можно использовать как подразделение сценария . Это также серия запросов , имеющая функциональное назначение (например, процесс входа в систему).
- Пожелание: Gatling способен моделировать сложное поведение пользователей. Для этого он генерирует соответствующие запросы в тестируемой системе. Вот пример запроса в Гатлинге: [5] [6]
//Java
.exec(http("Request 1")
.get("/computers/"));
//JavaScript
.exec(http("Request 1")
.get("/computers/"));
- Профиль внедрения. Профиль внедрения — это количество виртуальных пользователей, внедренных во время теста в тестируемую систему, и способ их внедрения. Вот пример профиля инъекции: [5]
//Java
setUp(
myFirstScenario.injectOpen(constantUsersPerSec(2).during(60))
).protocols(httpProtocol);
//JavaScript
setUp(
myScenario.injectOpen(constantUsersPerSec(2).during(60))
).protocols(httpProtocol);
Архитектура
[ редактировать ]Гатлинг реализовал совершенно новую архитектуру инструмента тестирования производительности, чтобы обеспечить более эффективное использование ресурсов. [8] Это позволяет моделировать большое количество запросов в секунду на одной машине. [9]
Компоненты
[ редактировать ]Регистратор
[ редактировать ]В комплект поставки Gatling входит записывающее устройство для запуска симуляции.
Язык, специфичный для предметной области
[ редактировать ]Гатлинг снабжен простым [10] и легкий [2] Специализированный язык , на котором кодируются симуляции и сценарии. Это позволяет пользователям добавлять собственное поведение с помощью множества хуков. [11] Это делает сценарии моделирования читабельными и простыми в обслуживании. [12]
В 2024 году Гатлинг представил новый DSL (SDK) для JavaScript и TypeScript. [13] SDK JavaScript и TypeScript использует GraalVM для трансляции кода JavaScript в Java и выполнения нагрузочных тестов на JVM . Добавление поддержки JavaScript и TypeScript делает Gatling первым на рынке многоязычным инструментом нагрузочного тестирования.
Гатлинга доменно-ориентированный язык Это пример того, как выглядит (см. также § Терминологию ):
val scn = scenario("BasicSimulation")
.exec(http("request_1")
.get("/"))
.pause(5)
HTML-отчеты
[ редактировать ]В конце каждого теста Гатлинг генерирует отчет в формате HTML. Отчеты включают в себя: [14]
- Активные пользователи с течением времени
- времени отклика Распределение
- времени ответа Процентили с течением времени
- Запросов в секунду с течением времени
- Ответов в секунду с течением времени
Поддержка протоколов и плагины
[ редактировать ]Он официально поддерживает следующие протоколы:
В документации Гатлинга указано, что он не зависит от протокола, что позволяет реализовать поддержку других протоколов. [15] Вот неисчерпывающий список поддерживаемых протоколов сообщества:
Плагины
[ редактировать ]Gatling выпускает официальные плагины и плагины сообщества. Он интегрируется с:
- Интегрированные среды разработки (IDE) , такие как Eclipse (программное обеспечение) и IntelliJ IDEA.
- Создайте программное обеспечение для автоматизации сборки или инструменты сборки, такие как Apache Maven , Gradle и sbt.
- непрерывной интеграции, Решения такие как Jenkins
Вот неполный список плагинов сообщества:
Непрерывная интеграция
[ редактировать ]Автоматизация с помощью Gatling связана с удобством сопровождения моделирования. [16] Интеграция с другими инструментами разработки, особенно в жизненном цикле DevOps , позволяет индустриализировать тесты производительности, то есть полностью автоматизировать проведение кампаний по тестированию производительности в процессе разработки программного обеспечения .
Основные и второстепенные релизы
[ редактировать ]Версия [17] | Дата выпуска |
---|---|
3.11.1 | 25 апреля 2024 г. |
3.10.3 | 21 декабря 2023 г. |
3.9.5 | 10 мая 2023 г. |
3.0.0 | 23 октября 2018 г. |
2.3.0 | 30 августа 2017 г. |
2.2.0 | 15 апреля 2016 г. |
2.1.0 | 15 декабря 2014 г. |
2.0.0 | 6 октября 2014 г. |
1.5.0 | 6 мая 2013 г. |
1.4.0 | 20 декабря 2012 г. |
1.3.0 | 19 сентября 2012 г. |
1.2.0 | 31 мая 2012 г. |
1.1.0 | 26 марта 2012 г. |
1.0.0 | 13 января 2012 г. |
Лицензирование
[ редактировать ]«Гатлинг» публикуется под лицензией Apache License 2.0 . [18] разрешительная , лицензия на бесплатное программное обеспечение написанная Apache Software Foundation (ASF). [19]
Исходный код доступен на GitHub .
Гатлинг Энтерпрайз
[ редактировать ]Gatling Enterprise — коммерческая версия Gatling. Gatling Enterprise является проприетарным программным обеспечением . Распространяется компанией Gatling Corp.
Компания
[ редактировать ]Gatling начался как проект с открытым исходным кодом в 2012 году. 3 года спустя, в 2015 году, его основатель Стефан Ландель создал специализированную компанию под названием Gatling Corp.
Истоки проекта с открытым исходным кодом
[ редактировать ]Gatling был разработан Стефаном Ланделем, когда он был техническим директором (CTO) французской ИТ-консалтинговой фирмы eBusiness Information.
Создание специализированной компании
[ редактировать ]В 2015 году была создана специализированная компания. Он предоставляет пользователям Gatling профессиональные услуги, а с 2016 года — корпоративную версию Gatling, Gatling FrontLine.
Компания базируется в Банье , Франция, недалеко от Парижа.
Gatling Corp является членом Systematic Paris-Region , Иль-де-Франс, бизнес-кластера созданного в 2005 году. [20] посвящен сложным системам и ИКТ . [21] Систематический Парижский регион объединяет большие группы, МСП, университеты и исследовательские лаборатории для продвижения цифровых инноваций. Гатлинг является членом рабочей группы по открытому коду Systematic и был избран членом Systematic совета директоров как представитель малого и среднего бизнеса в ноябре 2016 года.
Компания приняла участие в некоторых мероприятиях, таких как Парижский саммит по открытому коду (POSS, выпуски 2015, 2016 и 2017 годов), симпозиум Liferay 2016 года, встречи группы пользователей Java (JUG), Парижской группы пользователей Гатлинга и Нью-Йоркской конференции. Группа пользователей Гатлинга.
См. также
[ редактировать ]- Апач JMeter
- LoadRunner
- Бенчмаркинг веб-сервера
- Тестирование производительности программного обеспечения
- Проектирование производительности
- Тестирование программного обеспечения
- Селен
Ссылки
[ редактировать ]- ^ «Вечер презентации Gatling FrontLine» . Группа пользователей Gatling Paris (на французском языке). Встреча . Проверено 1 сентября 2017 г.
- ^ Jump up to: а б с д Родриго Толледо (12 мая 2014 г.). «Гатлинг: поднимите свои тесты производительности на новый уровень» . Блог . МысльВоркс . Проверено 1 сентября 2017 г.
- ^ «Что нового в версии 3.11» . 11 февраля 2023 г.
- ^ Людмил Латинов (9 июня 2017 г.). «Тестирование производительности с помощью Гатлинга» . Автоматизированная рапсодия . Проверено 1 сентября 2017 г.
«Моделирование» — это настоящий тест. Это класс Scala, расширяющий класс io.gatling.core.scenario.Simulation Гатлинга. В моделировании создан экземпляр объекта протокола HTTP и настроены с соответствующими значениями, такими как URL-адрес, параметры заголовка запроса, аутентификация, кэширование и т. д. Моделирование имеет один или несколько «сценариев».
- ^ Jump up to: а б с д Gatling Corp. «Документация Gatling. Создайте свою первую симуляцию на основе Java» . Компания Гатлинг . Проверено 12 января 2018 г.
- ^ Jump up to: а б с «Создайте свою первую симуляцию на основе JavaScript» . Документация Гатлинга . 16 декабря 2023 г. Проверено 23 июля 2024 г.
- ^ Людмил Латинов (9 июня 2017 г.). «Тестирование производительности с помощью Гатлинга» . Автоматизированная рапсодия . Проверено 1 сентября 2017 г.
Сценарий представляет собой серию HTTP-запросов с разными действиями (POST/GET) и параметрами запроса. Сценарий — это фактический путь выполнения пользователя. Он настроен с учетом количества пользователей и схемы нарастания нагрузки. Это делается в методе моделирования «setUp». Несколько сценариев могут образовывать одну симуляцию.
- ^ Шива Прасад Рао Джанапати (1 февраля 2017 г.). «Гатлинг: легкий инструмент нагрузочного тестирования» . Зона производительности . ДЗона . Проверено 1 сентября 2017 г.
Гатлинг потребляет меньше системных ресурсов для запуска нагрузочного теста, чем другие варианты.
- ^ Людмил Латинов (9 июня 2017 г.). «Тестирование производительности с помощью Гатлинга» . Автоматизированная рапсодия . Проверено 1 сентября 2017 г.
Он способен создавать огромный объем трафика из одного узла.
- ^ Шри Теджасви (4 января 2017 г.). «Введение в нагрузочное тестирование с помощью Gatling» . Зона DevOps . ДЗона . Проверено 1 сентября 2017 г.
Это простой в установке инструмент, в котором моделирование и сценарии написаны на простом предметно-ориентированном языке (DSL).
- ^ «Шпаргалка» . 20 апреля 2021 г.
- ^ Шри Теджасви (4 января 2017 г.). «Введение в нагрузочное тестирование с помощью Gatling» . Зона DevOps . ДЗона . Проверено 1 сентября 2017 г.
Таким образом, вы можете генерировать читаемый и простой в обслуживании код теста производительности.
- ^ «JavaScript SDK | Блог Гатлинга» . gatling.io . Проверено 24 мая 2024 г.
- ^ Шри Теджасви (4 января 2017 г.). «Введение в нагрузочное тестирование с помощью Gatling» . Зона DevOps . ДЗона . Проверено 1 сентября 2017 г.
- ^ «Гатлинг» . Документация . Компания Гатлинг . Проверено 1 сентября 2017 г.
Поскольку основной механизм фактически не зависит от протокола, вполне возможно реализовать поддержку других протоколов.
- ^ Федерико Толедо (12 июля 2016 г.). «Обзор инструмента Gatling для тестов производительности (написано на Scala)» . Зона производительности . ДЗона . Проверено 1 сентября 2017 г.
Язык Scala и DSL Гатлинга в значительной степени ориентированы на облегчение сопровождения тестов, что идеально, если вы сосредотачиваетесь на непрерывной интеграции.
- ^ «Вехи» . Репозиторий Гатлинга . Гитхаб . Проверено 1 сентября 2017 г.
- ^ «Лицензия» . Репозиторий Гатлинга . Гитхаб . Проверено 1 сентября 2017 г.
- ^ Права на новые медиа (12 сентября 2008 г.). «Руководство по лицензированию открытого исходного кода» . Калифорнийская Западная юридическая школа . Проверено 28 ноября 2015 г.
«BSD-подобные» лицензии, такие как лицензии BSD, MIT и Apache, чрезвычайно либеральны и требуют немного больше, чем приписывание исходных частей лицензионного кода первоначальным разработчикам в вашем собственном коде и/или документации.
- ^ (на французском языке) Систематический Париж-Регион. Архивировано 17 февраля 2013 г. на archive.today.
- ^ (на французском языке) Кто мы?