Gatling is an open-source load- and performance-testing framework based on
Scala,
Akka
Akka or AKKA may refer to:
Arts and entertainment
* ''Akka'' (film), a 1976 Indian Tamil film
* ''Akka'' (TV series), a 2014–2015 Indian Tamil soap opera
* Akka, a character in the children's novel ''The Wonderful Adventures of Nils'' by Selma ...
and
Netty
Netty may refer to:
* Netty (software), a Java project
* North East England ( Geordie) dialect for toilet or public convenience
*Netty (name)
See also
* Westoe Netty
*Nethy (disambiguation)
* Natty (disambiguation)
*Netta (disambiguation)
*Nett ...
. The first stable release was published on January 13, 2012. In 2015, Gatling's founder, Stéphane Landelle, created a company (named "Gatling Corp"), dedicated to the development of the open-source project. According to Gatling Corp's official blog, Gatling was downloaded more than 1,000,000 times (2021). In June 2016, Gatling officially presented Gatling FrontLine, Gatling's Enterprise Version with additional features.
The software is designed to be used as a
load testing tool for analyzing and measuring the performance of a variety of services, with a focus on
web applications.
Gatling was mentioned twice in
ThoughtWorks Technology Radar, in 2013 and 2014,
"as a tool worth trying",
with an emphasis on "the interesting premise of ''treating your performance tests as production code''".
The latest stable release is Gatling 3.8.0, published on July 06, 2022.
Overview
Gatling Corp develops the open-source performance testing tool for web applications, Gatling, and its enterprise version, Gatling FrontLine.
The Project's aims include;
* High performance
* Ready-to-present HTML reports
* Scenario recorder and developer-friendly DSL
Terminology
* Simulation: The simulation file includes the different ''scenarios'' of a test, its parametrization and the ''injection profiles''. Technically speaking, a simulation is a
Scala class. Here is an example of a simulation:
class BasicSimulation extends Simulation
* Scenario: A scenario consists of a series of ''requests''. Each scenario within a ''simulation'' can have its own ''injection profile''. Here is an example of a scenario:
val scn = scenario("BasicSimulation")
.exec(http("request_1")
.get("/"))
.pause(5)
setUp(
scn.inject(atOnceUsers(1))
).protocols(httpConf)
* Group: Groups can be used as a subdivision of a ''scenario''. It is also a series of ''requests'', that has a functional purpose (for instance, the login process).
* Request: Gatling is able to simulate complex users' behaviors. For this purpose, it generates the appropriate requests in the system under test. Here is an example of a request in Gatling:
exec(http("request_1")
.get("/"))
.pause(5)
* Injection profile: An injection profile is the number of virtual users injected during the test in the system under test and how they are injected. Here is an example of an injection profile:
setUp(
scn.inject(atOnceUsers(1))
).protocols(httpConf)
Architecture
Gatling implemented a fully new architecture for a performance testing tool, in order to be more resource efficient. It makes it possible to simulate a high number of requests per second with a single machine.
Components
Recorder
Gatling comes up with a recorder to bootstrap a simulation.
Domain-specific language
Gatling is provided with a simple and lightweight
Domain-specific language
A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging f ...
, in which simulations and scenarios are coded. This allows users to add custom behavior through many hooks. This makes simulation scripts readable and easy to maintain.
This is an example of how Gatling's
Domain-specific language
A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging f ...
looks like (see also ):
val scn = scenario("BasicSimulation")
.exec(http("request_1")
.get("/"))
.pause(5)
HTML reports
At the end of each test, Gatling generates an HTML report. Reports include:
* Active users over time
* Response time
distribution
* Response time
percentiles over time
* Requests per second over time
* Responses per second over time
Protocols support and plugins
It officially supports the following protocols:
*
HTTP
*
WebSockets
*
Server-sent events
*
JMS
Gatling documentation states that it is protocol agnostic, which makes it possible to implement other protocols' support. Here is a non-exhaustive list of community protocols support:
*
MQTT
*
Advanced Message Queuing Protocol (AMQP)
*
ZeroMQ
Plugins
Gatling comes out with official and community plugins. It integrates with:
*
Integrated development environments (IDE), like
Eclipse (software) and
IntelliJ IDEA
*
Build automation software, or Build tools, like
Apache Maven and
SBT
*
Continuous Integration solutions like
Jenkins
Jenkins may refer to:
People
* Jenkins (name), history of the surname
* List of people with surname Jenkins
* The Jenkins, country music group
Places United States
*Jenkins, Illinois
*Jenkins, Kentucky
*Jenkins, Minnesota
*Jenkins, Missouri
*Je ...
Here is a non-exhaustive list of community plugins:
*
Gradle
*
Apache Kafka
Apache Kafka is a distributed event store and stream-processing platform. It is an open-source system developed by the Apache Software Foundation written in Java and Scala. The project aims to provide a unified, high-throughput, low-latency plat ...
*
Java Database Connectivity (JDBC)
*
Apache Cassandra
*
RabbitMQ
*
SQL
Continuous integration
Automation with Gatling is related to its simulations' maintainability. The integration with other developer tools, especially in the
DevOps lifecycle, makes it possible to industrialize performance tests, that is to say to fully automate the execution of performance testing campaigns in the
software development process
In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software devel ...
.
Major and minor releases
Licensing
Gatling is published under
Apache License 2.0, a
permissive free software license written by the
Apache Software Foundation
The Apache Software Foundation (ASF) is an American nonprofit corporation (classified as a 501(c)(3) organization in the United States) to support a number of open source software projects. The ASF was formed from a group of developers of the A ...
(ASF).
The source code is accessible on
GitHub.
Gatling Enterprise
Gatling Enterprise is the commercial version of Gatling. Gatling Enterprise is
proprietary software. It is distributed by Gatling Corp.
Company
Gatling started as an open-source project in 2012. 3 years later, in 2015, its founder, Stéphane Landelle, created a dedicated company named "Gatling Corp".
Origins of the open-source project
Gatling was designed by Stéphane Landelle when he was the
Chief Technology Officer (CTO) of a French IT consulting firm, eBusiness Information.
Creation of a dedicated company
In 2015, a dedicated company was created. It provides Gatling's users with professional services and, since 2016, with an Enterprise Version of Gatling, Gatling FrontLine.
The company is based in
Bagneux Bagneux may refer to:
Communes in France
*Bagneux, Aisne
* Bagneux, Allier
*Bagneux, Hauts-de-Seine
* Bagneux, Indre
* Bagneux, Marne
* Bagneux, Meurthe-et-Moselle
* Bagneux-la-Fosse, Aube
Other
* Bagneux British Cemetery, département of the Somm ...
, France, near Paris. It is a subsidiary of the IT consulting firm where it was created, eBusiness Information.
Gatling Corp is a member of
Systematic Paris-Region, an
ÃŽle-de-France business cluster created in 2005, devoted to
complex system
A complex system is a system composed of many components which may interact with each other. Examples of complex systems are Earth's global climate, organisms, the human brain, infrastructure such as power grid, transportation or communication ...
s and
ICT
ICT may refer to:
Sciences and technology
* Information and communications technology
* Image Constraint Token, in video processing
* Immunochromatographic test, a rapid immunoassay used to detect diseases such as anthrax
* In-circuit test, in ...
.
Qui sommes-nous?
/ref> Systematic Paris-Region gathers large groups, SMEs, universities and research labs to promote digital innovation. Gatling is a member of Systematic
Systematic may refer to:
Science
* Short for systematic error
* Systematic fault
* Systematic bias, errors that are not determined by chance but are introduced by an inaccuracy (involving either the observation or measurement process) inheren ...
's Open Source Working Group and was elected member of Systematic
Systematic may refer to:
Science
* Short for systematic error
* Systematic fault
* Systematic bias, errors that are not determined by chance but are introduced by an inaccuracy (involving either the observation or measurement process) inheren ...
's board of directors, as a representative of SMEs, in November 2016.
The company took part in some events, like the Paris Open Source Summit (POSS, 2015, 2016 and 2017 editions), Liferay's 2016 Symposium, Java User Group (JUG)'s meetings, the Paris Gatling User Group and the New York Gatling User Group.
See also
* Apache JMeter
* LoadRunner
* Web server benchmarking
* Software performance testing
* Performance engineering
* Software testing
* Selenium
References
{{Reflist
*
Load testing tools
Java platform
Free software programmed in Scala