Lorsque vous montez un site web classique, il est souvent possible d'avoir une idée de la charge utilisateur que peut supporter ce dernier en recoupant les informations sur l'hébergement, le serveur web et les technologies utilisées.

Mais dans certains cas, et notamment pour des APIs qui doivent traiter un certains nombre de données ou effectuer de gros calculs, il est difficile d'arriver à avoir une estimation de la charge supportable sans effectuer de test.

Un stress test consiste donc à soumettre des requêtes à un site (ou une api) en continu jusqu'au point de rupture où ce dernier ne sera plus en mesure de répondre.

Dans certains cas il est possible d'effectuer un test avec un simple script maison, mais si les requêtes doivent contenir des payloads conséquents, il y a des chances pour que votre machine n'arrive pas à suivre la cadence et donc n'atteigne jamais le point de rupture.

Voilà pourquoi je me suis mis en quête d'un outil basique, rapide à prendre en main et surtout qui ne me couterait pas un bras pour effectuer quelques tests de charge sur mes APIs, et j'ai trouvé loader.io

Application Load Testing Tools for API Endpoints with loader.io
Free tool for web application load testing that allows for the simulation of concurrent connections to your web application’s APIs

Les avantages

J'ai eu la chance de tomber sur un outil qui me convenait sans avoir à en essayer des centaines, mais cela veut aussi dire que je n'ai pas beaucoup de point de comparaison.

Néanmoins j'ai pu relever quelques spécificités de loader.io que j'apprécie particulièrement et qui m'ont donné envie de continuer à l'utiliser de manière plus régulière, les voici :

  • Une offre gratuite sans limite de nombre de tests (mais une limite de 10 000 clients pendant 1 minute par test)
  • L'outil est propulsé par l'entreprise SendGrid, une plateforme d'envoi d'email marketing et transactionnel possédant suffisamment de puissance serveur pour un outil comme celui-ci
  • L'envoi des requêtes est immédiat, il n'y aucune file d'attente pour le démarrage des test.

Le fonctionnement

Comme je vous l'ai annoncé, l'outil est très basique, tant dans son utilisation que dans son interface. La première étape consiste à valider que vous êtes propriétaire du domaine sur lequel vous allez effectuer vos tests.

La validation permet d'éviter tout risque de détournement de la plateforme afin de créer une attaque par DoS !

Pour cela, Loader vous donne la possibilité d'effectuer soit une validation DNS, soit une validation en créant une route spécifique sur votre serveur. C'est cette deuxième solution que j'ai choisi, étant donné que j'exploite mon API directement avec l'url fournie par Heroku, pour laquelle je n'ai pas accès au DNS.

La validation s'effectue en quelques minutes et c'est à partir de ce moment-là que vous allez pouvoir créer votre premier test !

Une fois le test créé, il vous reste à le configurer avec votre url, les options HTTP, le corps de la requêtes, etc...

Mais surtout le nombre de clients et le temps du test désirés, limités en version gratuite mais bien suffisant pour tester les "bottlenecks" de votre API.

Un "bottleneck" ou goulot d'étranglement en français est un point logiciel qui peut ralentir (voir stopper) l'exécution du programme souvent dû à un temps de traitement trop long des informations envoyées.

Votre test configuré, il ne vous reste plus qu'à l'exécuter et à regarder les résultats en direct grâce aux différents graphes et visualisations des réponses de l'API.

Lorsqu'il est terminé, vous aurez accès à une analyse plus détaillée des statistiques comme le taux d'erreurs, la charge moyenne de retour (payload), le temps moyen de réponse, etc...

Petit détail non négligeable, il est possible de définir une limite du taux d'erreur au delà duquel le test sera avorté pour éviter de surcharger sans raison votre serveur, sûrement dû à un problème dans le code ou dans la configuration du test.

J'espère que cet article vous aura plu, à bientôt sur le blog !

À propos de l'auteur

Hello, je suis Nicolas Brondin-Bernard, ingénieur web indépendant depuis 2015 passionné par le partage de d'expériences et de connaissances.

Aujourd'hui je suis aussi coach pour développeurs web juniors, tu peux me contacter sur nicolas@brondin.com, sur mon site ou devenir membre de ma newsletter pour ne jamais louper le meilleur article de la semaine et être tenu au courant de mes projets !


Photo by cloudvisual.co.uk on Unsplash