Gatling (logiciel)
Gatling est un outil open-source de test de charge et de performance pour applications web. Il utilise les technologies Scala, Akka et Netty. La première version a été publiée le . En 2015, le créateur de Gatling a créé la société Gatling Corp, dédiée au développement de ce projet open-source. Selon le blog officiel de Gatling Corp, Gatling a été téléchargé plus de 800 000 fois ()[2]. En , Gatling a officiellement présenté Gatling FrontLine, une version Entreprise avec de nouvelles fonctionnalités[3].
Créateur | Stéphane Landelle |
---|---|
Première version | |
Dernière version | 3.3.1 ()[1] |
Écrit en | Scala et Java |
Type | Test de performance |
Licence | Licence Apache version 2.0 |
Site web | gatling.io |
Gatling a été mentionné deux fois par ThoughtWorks dans son Technology Radar, en 2013 et 2014[4], évoquant notamment la possibilité de manipuler les tests de performance comme du code[4].
La dernière version stable est Gatling 2.3. Elle a été publiée le .
Vue d'ensemble
Gatling Corp développe l'outil de test de performance pour applications web, Gatling, et sa version entreprise, Gatling FrontLine. Le projet inclut :
- un outil de génération de charge puissant ;
- des rapports HTML générés automatiquement ;
- un enregistreur de scénario et un Langage dédié pour la personnalisation des scénarios.
Terminologie
- Simulation : Le fichier de simulation inclut les différents scénarios d'un test, ses paramètres et les profiles d'injection. D'un point de vue technique, une simulation est une classe Scala[5]. Voici un exemple de simulation[6] :
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)
}
- Scénario : Un scénario se compose d'une suite de requêtes. Chaque scénario au sein d'une simulation peut avoir son propre profil d'injection[7]. Voici un exemple de scénario[6] :
val scn = scenario("BasicSimulation")
.exec(http("request_1")
.get("/"))
.pause(5)
setUp(
scn.inject(atOnceUsers(1))
).protocols(httpConf)
- Groupe : Les groupes peuvent être utilisés comme une subdivision d'un scénario. Ils sont également une suite de requêtes, mais qui a un objectif fonctionnel (par exemple, le processus de login).
- Requête : Gatling peut simuler des comportements complexes d'utilisateurs. A cette fin, Gatling génère les requêtes associées au sein du système testé. Voici un exemple d'une requête Gatling[6] :
exec(http("request_1")
.get("/"))
.pause(5)
- Profil d'injection : Un profil d'injection est le nombre d'utilisateurs virtuels injectés pendant le test dans le système testé ainsi que leur mode d'injection. Voici un exemple de profil d'injection[6] :
setUp(
scn.inject(atOnceUsers(1))
).protocols(httpConf)
Architecture
Gatling présente une nouvelle architecture pour un outil de test de performance, afin d'utiliser plus efficacement les ressources[8]. Cela permet de simuler un grand nombre de requêtes par seconde avec une seule machine[9].
Composants
"Recorder"
Gatling intègre un enregistreur (appelée "Recorder") pour construire une simulation.
Domain-Specific Language (DSL)
Gatling intègre un Domain-Specific Language (DSL) simple[10] et épuré[4], pour coder les simulations et les scénarios. Les scripts de simulation sont ainsi simple à lire et simple à maintenir[11]. Voici un exemple du Domain-Specific Language (DSL) de Gatling :
val scn = scenario("BasicSimulation")
.exec(http("request_1")
.get("/"))
.pause(5)
Les rapports HTML
A la fin de chaque test, Gatling génère un rapport HTML, qui représente[12] :
- le nombre d'utilisateurs actifs au cours du temps
- la distribution des temps de réponse
- les centiles des temps de réponse au cours du temps
- le nombre de requêtes par seconde
- le nombre de réponses par seconde
Protocoles
Gatling supporte officiellement les protocoles suivants :
La documentation de Gatling présente l'outil comme étant agnostique, ce qui permet d'implémenter le support d'autres protoles[13]. Voici une liste non exhaustive de supports communautaires de protocoles :
Extensions
Gatling a des extensions officielles et communautaires. Gatling s'intègre ainsi avec :
- des Environnements de développement, comme Eclipse et IntelliJ IDEA
- des Moteurs de production (ou "outils de build"), comme Apache Maven et SBT
- des solutions d'intégration continue comme Jenkins
Voici une liste non exhaustive d'extensions communautaires :
Intégration continue
L'automatisation avec Gatling est rendue possible grâce à la maintenabilité de ses simulations[14]. L'intégration avec l'usine logicielle des développeurs, notamment dans le cycle devops, facilite l'industrialisation des tests de performance, c'est-à-dire d'automatiser complètement l'exécution des campagnes de test de performance dans le Cycle de développement (logiciel).
Versions majeures et mineures[15]
Version | Date de publication |
---|---|
3.9.5 | 10 mai 2023 |
3.0.0 | |
2.3.0 | |
2.2.0 | |
2.1.0 | |
2.0.0 | |
1.5.0 | |
1.4.0 | |
1.3.0 | |
1.2.0 | |
1.1.0 | |
1.0.0 |
Licence
Gatling est publiée sous la licence Apache License 2.0[16]. Le code source est accessible sur GitHub.
Gatling FrontLine
Gatling FrontLine est la version entreprise de Gatling. Gatling FrontLine est distribuée par Gatling Corp, sous une licence propriétaire.
Société Gatling Corp
Gatling est un projet open-source qui a débuté en 2012. 3 ans après, en 2015, son créateur, Stéphane Landelle, a créé la société dédiée "Gatling Corp". Auparavant, Stéphane Landelle était directeur technique de l'Entreprise de services du numérique Takima[17], qui a incubé le projet.
La société Gatling Corp, créée en 2015, propose des services professionnels autour de Gatling (consulting, formation), et, depuis 2016, une version entreprise, Gatling FrontLine.
La société est basée à Station F, le campus de startups créé par Xavier Niel et situé dans Paris.
Gatling Corp est membre de Systematic Paris-Region, un pôle de compétitivité du numérique francilien créé en 2005[18]. Systematic Paris-Region regroupe des grands groupes, des PME, des universités et des laboratoires de recherche pour promouvoir l'innovation numérique. Gatling est membre du Groupe de Travail du Logiciel Libre (GTLL) et a été élu au directoire de Systematic, en .
La société a participé à certains événements, comme le Paris Open Source Summit (POSS, en 2015, 2016 et 2017), le Symposium Liferay de 2016, le Paris Gatling User Group et le New York Gatling User Group.
Articles connexes
Références
- « https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/3.3.1/ »
- « Gatling has reached 800,000 downloads! », Gatling official website, Gatling (consulté le )
- « Soirée de présentation Gatling FrontLine », Gatling Paris User Group, Meetup (website) (consulté le )
- Rodrigo Tolledo, « Gatling: Take Your Performance Tests to the next Level », Blog, ThoughtWorks, (consulté le )
- Lyudmil Latinov, « Performance testing with Gatling », Automation Rhapsody, (consulté le ) : « “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”. »
- Gatling Corp, « Gatling Documentation, Quickstart », Gatling Corp (consulté le )
- Lyudmil Latinov, « Performance testing with Gatling », Automation Rhapsody, (consulté le ) : « 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. »
- Siva Prasad Rao Janapati, « Gatling: A Lightweight Load Testing Tool », Performance Zone, DZone, (consulté le ) : « Gatling consumes fewer system resources to run a load test than other options. »
- Lyudmil Latinov, « Performance testing with Gatling », Automation Rhapsody, (consulté le ) : « It is capable of creating immense amount of traffic from a single node. »
- Sree Tejaswi, « An Introduction to Load Testing With Gatling », DevOps Zone, DZone, (consulté le ) : « It is an easy-to-install tool where simulations and scenarios are coded in a simple domain-specific language (DSL). »
- Sree Tejaswi, « An Introduction to Load Testing With Gatling », DevOps Zone, DZone, (consulté le ) : « You can thus generate readable and easy to maintain performance test code. »
- Sree Tejaswi, « An Introduction to Load Testing With Gatling », DevOps Zone, DZone, (consulté le )
- « Gatling », Documentation, Gatling Corp (consulté le ) : « As the core engine is actually protocol agnostic, it is perfectly possible to implement support for other protocols. »
- Federico Toledo, « Gatling Tool Review for Performance Tests (Written in Scala) », Performance Zone, DZone, (consulté le ) : « The language, Scala, and the Gatling’s DSL are pretty focused on facilitating the maintainability of the tests, which is ideal if you are focusing on continuous integration »
- « Milestones », Gatling's repository, GitHub (consulté le )
- « License », Gatling's repository, GitHub (consulté le )
- « takima, mastering technology : Développement Fullstack, DevOps, Big Data, Agilité », sur www.takima.fr (consulté le )
- (fr)Systematic Paris-Région