Logo Ekwateur
compteur de voiture représentant le gatling et test de performance
compteur de voiture représentant le gatling et test de performance

Gatling et tests de performance

Dans l’article précédent, nous avons vu l’importance de la randomization lors de tests de performance. Aujourd’hui nous allons parler de l’outil utilisé pour réaliser ces tests : J’ai nommé Gatling.


Gatling, qu’est-ce que c’est ?

Gatling est un outil français, basé sur la JVM (Java Virtual Machine) et scala, permettant de réaliser des « injections » sur nos applications afin de :

  • Mesurer le temps de réponse de l’application et de ses différentes méthodes.
  • Tester sa résistance à la charge (si 50 000 personnes visitent mon site en même temps, mon application est-elle toujours capable de répondre en moins d’une seconde ?)

Note : Pour les personnes qui ne sont pas familières avec le domaine des tests de charge, « injecter » consiste à envoyer un grand nombre de requêtes à une application afin de simuler un grand nombre d’utilisateurs.

Gatling est un projet open Source avec plus de 4,5 Millions de téléchargements. https://gatling.io/open-source/. Il existe également une version payante de l’outil.

Inscrivez-vous à notre newsletter et recevez une sélection d’articles sur la transition énergétique.

Points forts de Gatling

Gatling est très facile d’utilisation et son langage est très intuitif. Une simple connaissance de Java suffit pour s'en servir.

Gatling permet de réaliser des scénarios (appels de différentes fonctions dans un ordre et avec des données précises). Ainsi, il est possible de simuler le parcours d’un utilisateur qui va envoyer différentes requêtes dans un certain ordre. C’est une fonctionnalité basique pour un tel outil (SoapUI et Postman le font également), bien qu' importante.

A mon sens, le point le plus fort de Gatling tient en deux choses : la randomization des appels (dont nous venons de voir l’importance) et l’usage de données extraites d’un fichier en paramètre.

En une seule ligne de code, vous pouvez extraire les données d’un fichier type csv (Excel) et piocher aléatoirement une ligne de données qui sera utilisée pour votre requête.

Ainsi, si vous fournissez à Gatling plusieurs fichiers différents (cinq par exemple) et que l’un d’eux possède un nombre suffisant de données, vous allez pouvoir construire facilement 10 000 requêtes différentes qui appelleront pourtant la même fonction (endpoint).

Dernier point à noter : Gatling permet de jouer plusieurs scénarios en parallèle. En effet, il est peu probable que tous les utilisateurs fassent en même temps le même type de « parcours ». Pour mieux coller à la réalité, il est donc important de pouvoir simuler plusieurs utilisateurs faisant des choses totalement différentes les uns des autres.

D’un point de vue un peu plus « DevOps » et un peu moins « écriture de tests » voici ce que l’on peut retenir de Gatling :

Gatling est facile à installer sur un serveur. Il existe même des versions de Gatling FrontLine en achat direct depuis le MarketPlace AWS sans contrainte d'installation. En outre, il permet de réaliser des ouvertures/fermetures de connexions, ce qui n’est pas souvent le cas de ces outils qui cachent la partie réseau.

Nous avons parlé de tout le processus permettant de mettre en place les tests, alors, que ce passe-t-il une fois que nous avons finalement lancé les tests ?

Vous obtenez un tableau de bord fort sympathique avec tout un tas de graphiques que vous allez pouvoir analyser :

Capture d'écran de l'outil Gatling

Quelques difficultés rencontrées

En informatique, plus un outil est utilisé avec une grosse communauté, plus il vous sera facile de trouver de l’aide à son sujet.

Si vous avez l’habitude de travailler avec du Java, php, C, C++ ou autre langage populaire, toutes les questions que vous pouvez vous poser on (très certainement) déjà été posées et ont obtenu une réponse (voir même plusieurs) sur internet.

Dans ces conditions, lorsque vous avez une question, vous tapez votre requête dans un moteur de recherche, vous cliquez sur l’un des trois premiers résultats, vous copiez/collez le code de la solution et le tour est joué !

Pour Gatling, les choses ne seront pas aussi simples. En effet, le monde des tests de performance est relativement petit, en conséquence, Gatling n’est pas si utilisé que ça. Votre principale source d’aide sera donc la documentation (plutôt fournie) dans laquelle vous allez devoir creuser au besoin. Et malheureusement, si les choses sont formulées d’une manière que vous ne comprenez pas, aucune autre source ne sera disponible pour vous expliquer la chose différemment.

Ainsi, j’ai trouvé difficile de comprendre comment utiliser les feeders (ce n’est pourtant pas compliqué) et comment construire les Array de Map nécessaires à ces mêmes feeders (dans ce cas précis, une connaissance plus approfondie de Scala m’aurait été utile).

Fort heureusement, en cas de vrai blocage, vous pouvez toujours demander de l’aide à l’équipe de Gatling qui est très à l’écoute. Iels sont disponibles via mail et téléphone. En outre, iels peuvent même venir faire une présentation de Gatling dans vos locaux ! En tous cas, iels l’ont fait pour nous 😉.

Merci à Stéphane et Jérémy.

Nos derniers articles de la catégorie

Voir plus d'articles