Gatling (logiciel)
# 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 13 janvier 2012. 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 (août 2017). En juin 2016, Gatling a officiellement présenté Gatling FrontLine, une version Entreprise avec de nouvelles fonctionnalités.

Gatling a été mentionné deux fois par ThoughtWorks dans son Technology Radar, en 2013 et 2014, évoquant notamment la possibilité de manipuler les tests de performance comme du code.

La dernière version stable est Gatling 2.3. Elle a été publiée le 30 août 2017.

## 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. Voici un exemple de simulation :
* 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. Voici un exemple de scénario :
* 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 :
* 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 :

## Architecture

Gatling présente une nouvelle architecture pour un outil de test de performance, afin d'utiliser plus efficacement les ressources. Cela permet de simuler un grand nombre de requêtes par seconde avec une seule machine.

## 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 et épuré, pour coder les simulations et les scénarios. Les scripts de simulation sont ainsi simple à lire et simple à maintenir. Voici un exemple du Domain-Specific Language (DSL) de Gatling :

### Les rapports HTML

A la fin de chaque test, Gatling génère un rapport HTML, qui représente :

* 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 :

* HTTP
* WebSockets
* Server-sent events
* JMS

La documentation de Gatling présente l'outil comme étant agnostique, ce qui permet d'implémenter le support d'autres protoles. Voici une liste non exhaustive de supports communautaires de protocoles :

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

## 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 :

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

## Intégration continue

L'automatisation avec Gatling est rendue possible grâce à la maintenabilité de ses simulations. 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

| Version | Date de publication |
| - | - |
| 3.9.5 | 10 mai 2023 |
| 3.0.0 | 23 octobre 2018 |
| 2.3.0 | 31 août 2017 |
| 2.2.0 | 15 avril 2016 |
| 2.1.0 | 15 décembre 2014 |
| 2.0.0 | 6 octobre 2014 |
| 1.5.0 | 6 mai 2013 |
| 1.4.0 | 20 décembre 2012 |
| 1.3.0 | 19 septembre 2012 |
| 1.2.0 | 31 mai 2012 |
| 1.1.0 | 26 mars 2012 |
| 1.0.0 | 13 janvier 2012 |

## Licence

Gatling est publiée sous la licence Apache License 2.0. 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, 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. 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 Novembre 2016.

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.

