Gatling (logiciel)

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche
Gatling
Description de l'image Gatling-logo.png.

Informations
Créateur Stéphane Landelle
Première version
Dernière version 3.3.1 ()[1]Voir et modifier les données sur Wikidata
Écrit en ScalaVoir et modifier les données sur Wikidata
Type Test de performance, Logiciel Libre
Licence Licence Apache version 2.0Voir et modifier les données sur Wikidata
Site web gatling.ioVoir et modifier les données sur Wikidata

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

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[modifier | modifier le code]

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[modifier | modifier le code]

  • 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[modifier | modifier le code]

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[modifier | modifier le code]

"Recorder"[modifier | modifier le code]

Gatling intègre un enregistreur (appelée "Recorder") pour construire une simulation.

Domain-Specific Language (DSL)[modifier | modifier le code]

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[modifier | modifier le code]

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[modifier | modifier le code]

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[modifier | modifier le code]

Gatling a des extensions officielles et communautaires. Gatling s'intègre ainsi avec :

Voici une liste non exhaustive d'extensions communautaires :

Intégration continue[modifier | modifier le code]

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][modifier | modifier le code]

Version Date de publication
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[modifier | modifier le code]

Gatling est publiée sous la licence Apache License 2.0[16]. Le code source est accessible sur GitHub.

Gatling FrontLine[modifier | modifier le code]

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[modifier | modifier le code]

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[modifier | modifier le code]

Références[modifier | modifier le code]

  1. « https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/3.3.1/ »
  2. « Gatling has reached 800,000 downloads! », Gatling official website, Gatling (consulté le 1er septembre 2017)
  3. « Soirée de présentation Gatling FrontLine », Gatling Paris User Group, Meetup (website) (consulté le 1er septembre 2017)
  4. a b et c Rodrigo Tolledo, « Gatling: Take Your Performance Tests to the next Level », Blog, ThoughtWorks, (consulté le 1er septembre 2017)
  5. Lyudmil Latinov, « Performance testing with Gatling », Automation Rhapsody, (consulté le 1er septembre 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”. »
  6. a b c et d Gatling Corp, « Gatling Documentation, Quickstart », Gatling Corp (consulté le 12 janvier 2018)
  7. Lyudmil Latinov, « Performance testing with Gatling », Automation Rhapsody, (consulté le 1er septembre 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. »
  8. Siva Prasad Rao Janapati, « Gatling: A Lightweight Load Testing Tool », Performance Zone, DZone, (consulté le 1er septembre 2017) : « Gatling consumes fewer system resources to run a load test than other options. »
  9. Lyudmil Latinov, « Performance testing with Gatling », Automation Rhapsody, (consulté le 1er septembre 2017) : « It is capable of creating immense amount of traffic from a single node. »
  10. Sree Tejaswi, « An Introduction to Load Testing With Gatling », DevOps Zone, DZone, (consulté le 1er septembre 2017) : « It is an easy-to-install tool where simulations and scenarios are coded in a simple domain-specific language (DSL). »
  11. Sree Tejaswi, « An Introduction to Load Testing With Gatling », DevOps Zone, DZone, (consulté le 1er septembre 2017) : « You can thus generate readable and easy to maintain performance test code. »
  12. Sree Tejaswi, « An Introduction to Load Testing With Gatling », DevOps Zone, DZone, (consulté le 1er septembre 2017)
  13. « Gatling », Documentation, Gatling Corp (consulté le 1er septembre 2017) : « As the core engine is actually protocol agnostic, it is perfectly possible to implement support for other protocols. »
  14. Federico Toledo, « Gatling Tool Review for Performance Tests (Written in Scala) », Performance Zone, DZone, (consulté le 1er septembre 2017) : « 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 »
  15. « Milestones », Gatling's repository, GitHub (consulté le 1er septembre 2017)
  16. « License », Gatling's repository, GitHub (consulté le 1er septembre 2017)
  17. « takima, mastering technology : Développement Fullstack, DevOps, Big Data, Agilité », sur www.takima.fr (consulté le 11 juin 2018)
  18. (fr)Systematic Paris-Région

Liens externes[modifier | modifier le code]