Submitted Successfully!
To reward your contribution, here is a gift for you: A free trial for our video production service.
Thank you for your contribution! You can also upload a video entry or images related to this topic.
Version Summary Created by Modification Content Size Created at Operation
1 handwiki -- 962 2022-11-08 01:45:12

Video Upload Options

Do you have a full video?

Confirm

Are you sure to Delete?
Cite
If you have any further questions, please contact Encyclopedia Editorial Office.
HandWiki. Gatling. Encyclopedia. Available online: https://encyclopedia.pub/entry/33447 (accessed on 27 July 2024).
HandWiki. Gatling. Encyclopedia. Available at: https://encyclopedia.pub/entry/33447. Accessed July 27, 2024.
HandWiki. "Gatling" Encyclopedia, https://encyclopedia.pub/entry/33447 (accessed July 27, 2024).
HandWiki. (2022, November 08). Gatling. In Encyclopedia. https://encyclopedia.pub/entry/33447
HandWiki. "Gatling." Encyclopedia. Web. 08 November, 2022.
Gatling
Edit

Gatling is an open-source load- and performance-testing framework based on Scala, Akka and Netty. 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.

3.8.0 load testing performance-testing

1. 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

2. 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.[1] Here is an example of a simulation:[2]
class BasicSimulation extends Simulation { val httpConf = http .baseURL("http://computer-database.gatling.io") .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .doNotTrackHeader("1") .acceptLanguageHeader("en-US,en;q=0.5") .acceptEncodingHeader("gzip, deflate") .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0") val scn = scenario("BasicSimulation") .exec(http("request_1") .get("/")) .pause(5) setUp( scn.inject(atOnceUsers(1)) ).protocols(httpConf) }
  • Scenario: A scenario consists of a series of requests. Each scenario within a simulation can have its own injection profile.[3] Here is an example of a scenario:[2]
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:[2]
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:[2]
setUp( scn.inject(atOnceUsers(1)) ).protocols(httpConf)

3. Architecture

Gatling implemented a fully new architecture for a performance testing tool, in order to be more resource efficient.[4] It makes it possible to simulate a high number of requests per second with a single machine.[5]

4. Components

4.1. Recorder

Gatling comes up with a recorder to bootstrap a simulation.

4.2. Domain-Specific Language

Gatling is provided with a simple[6] and lightweight[7] Domain-specific language, in which simulations and scenarios are coded. This allows users to add custom behavior through many hooks.[8] This makes simulation scripts readable and easy to maintain.[9] This is an example of how Gatling's Domain-specific language looks like (see also § Terminology):

val scn = scenario("BasicSimulation") .exec(http("request_1") .get("/")) .pause(5)

4.3. HTML Reports

At the end of each test, Gatling generates an HTML report. Reports include:[10]

  • Active users over time
  • Response time distribution
  • Response time percentiles over time
  • Requests per second over time
  • Responses per second over time

5. 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.[11] Here is a non-exhaustive list of community protocols support:

  • MQTT
  • Advanced Message Queuing Protocol (AMQP)
  • ZeroMQ

6. Plugins

Gatling comes out with official and community plugins. It integrates with:

  • Integrated development environments (IDE), like Eclipse and IntelliJ IDEA
  • Build automation software, or Build tools, like Apache Maven and SBT
  • Continuous Integration solutions like Jenkins

Here is a non-exhaustive list of community plugins:

  • Gradle
  • Apache Kafka
  • Java Database Connectivity (JDBC)
  • Apache Cassandra
  • RabbitMQ
  • SQL

7. Continuous Integration

Automation with Gatling is related to its simulations' maintainability.[12] 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.

8. Major and Minor Releases[13]

Version Release date
3.0.0 23 October 2018
2.3.0 30 August 2017
2.2.0 15 April 2016
2.1.0 15 December 2014
2.0.0 6 October 2014
1.5.0 6 May 2013
1.4.0 20 December 2012
1.3.0 19 September 2012
1.2.0 31 May 2012
1.1.0 26 March 2012
1.0.0 13 January 2012

9. Licensing

Gatling is published under Apache License 2.0,[14] a permissive free software license written by the Apache Software Foundation (ASF).[15]

The source code is accessible on GitHub.

10. Gatling Enterprise

Gatling Enterprise is the commercial version of Gatling. Gatling Enterprise is proprietary software. It is distributed by Gatling Corp.

11. 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".

12. 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.

13. 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, 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,[16] devoted to complex systems and ICT.[17] Systematic Paris-Region gathers large groups, SMEs, universities and research labs to promote digital innovation. Gatling is a member of Systematic's Open Source Working Group and was elected member of Systematic'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.

References

  1. Lyudmil Latinov (9 June 2017). "Performance testing with Gatling". Automation Rhapsody. http://automationrhapsody.com/performance-testing-with-gatling/. Retrieved September 1, 2017. "“Simulation” is the actual test. It is a Scala class that extends Gatling’s io.gatling.core.scenario.Simulation class. Simulation has a HTTP Protocol object instantiated and configured with proper values as URL, request header parameters, authentication, caching, etc. Simulation has one or more “Scenario”." 
  2. Gatling Corp. "Gatling Documentation, Quickstart". Gatling Corp. https://gatling.io/docs/current/quickstart/. Retrieved January 12, 2018. 
  3. Lyudmil Latinov (9 June 2017). "Performance testing with Gatling". Automation Rhapsody. http://automationrhapsody.com/performance-testing-with-gatling/. Retrieved September 1, 2017. "Scenario is a series of HTTP Requests with different action (POST/GET) and request parameters. Scenario is the actual user execution path. It is configured with load users count and ramp up pattern. This is done in the Simulation’s “setUp” method. Several scenarios can form one simulation." 
  4. Siva Prasad Rao Janapati (1 February 2017). "Gatling: A Lightweight Load Testing Tool". Performance Zone. DZone. https://dzone.com/articles/gatling-light-weight-load-testing-tool. Retrieved September 1, 2017. "Gatling consumes fewer system resources to run a load test than other options." 
  5. Lyudmil Latinov (9 June 2017). "Performance testing with Gatling". Automation Rhapsody. http://automationrhapsody.com/performance-testing-with-gatling/. Retrieved September 1, 2017. "It is capable of creating an immense amount of traffic from a single node." 
  6. Sree Tejaswi (4 January 2017). "An Introduction to Load Testing With Gatling". DevOps Zone. DZone. https://dzone.com/articles/gatling-gun-is-now-a-prospecting-tool-for-testers. Retrieved September 1, 2017. "It is an easy-to-install tool where simulations and scenarios are coded in a simple domain-specific language (DSL)." 
  7. Rodrigo Tolledo (12 May 2014). "Gatling: Take Your Performance Tests to the next Level". Blog. ThoughtWorks. https://www.thoughtworks.com/insights/blog/gatling-take-your-performance-tests-next-level. Retrieved September 1, 2017. 
  8. "Cheat-Sheet". 20 April 2021. http://gatling.io/docs/current/cheat-sheet/. 
  9. Sree Tejaswi (4 January 2017). "An Introduction to Load Testing With Gatling". DevOps Zone. DZone. https://dzone.com/articles/gatling-gun-is-now-a-prospecting-tool-for-testers. Retrieved September 1, 2017. "You can thus generate readable and easy to maintain performance test code." 
  10. Sree Tejaswi (4 January 2017). "An Introduction to Load Testing With Gatling". DevOps Zone. DZone. https://dzone.com/articles/gatling-gun-is-now-a-prospecting-tool-for-testers. Retrieved September 1, 2017. 
  11. "Gatling". Documentation. Gatling Corp. http://gatling.io/docs/current/. Retrieved September 1, 2017. "As the core engine is actually protocol agnostic, it is perfectly possible to implement support for other protocols." 
  12. Federico Toledo (12 July 2016). "Gatling Tool Review for Performance Tests (Written in Scala)". Performance Zone. DZone. https://dzone.com/articles/gatling-tool-review-for-performance-tests-written. Retrieved September 1, 2017. "The language, Scala, and Gatling’s DSL are pretty focused on facilitating the maintainability of the tests, which is ideal if you are focusing on continuous integration" 
  13. "Milestones". Gatling's repository. GitHub. https://github.com/gatling/gatling/milestones?state=closed. Retrieved September 1, 2017. 
  14. "License". Gatling's repository. GitHub. https://github.com/gatling/gatling/blob/master/LICENSE.txt. Retrieved September 1, 2017. 
  15. New Media Rights (2008-09-12). "Open Source Licensing Guide". California Western School of Law. http://www.newmediarights.org/open_source/new_media_rights_open_source_licensing_guide. Retrieved 2015-11-28. "The ‘BSD-like’ licenses such as the BSD, MIT, and Apache licenses are extremely permissive, requiring little more than attributing the original portions of the licensed code to the original developers in your own code and/or documentation." 
  16. (in French)Systematic Paris-Région http://www.campus-paris-saclay.fr/La-FCS/Les-fondateurs/Systematic-Paris-Region
  17. (in French)Qui sommes-nous? http://www.systematic-paris-region.org/fr/le-pole
More
Information
Subjects: Others
Contributor MDPI registered users' name will be linked to their SciProfiles pages. To register with us, please refer to https://encyclopedia.pub/register :
View Times: 418
Entry Collection: HandWiki
Revision: 1 time (View History)
Update Date: 08 Nov 2022
1000/1000
Video Production Service