Mostafa Rashed
Nous avons récemment présenté des façons d’effectuer des tests de charge sans passer par Jmeter. Après avoir essayé des solutions comme Selenium et Gatling, nous avons trouvé notre préférée : Locust. Dans cet article, nous expliquons pourquoi Locust était tout indiqué pour nos besoins et comment nous l’avons mis à notre main.
Notre cas d’utilisation
Dans le cadre d’un récent projet, nous avons priorisé les tests de charge après une refonte et un réusinage majeurs de l’infrastructure de notre client. Ce client, en l’occurrence, offre un service qui aide des milliers d’utilisateurs à se connecter à différentes institutions pour consulter et gérer leurs comptes de facturation.
Après avoir exploré différents outils pour les tests de charge, nous avons retenu Locust. Pour en savoir plus sur les autres outils mis à l’essai :
Le test de charge sans passer par Jmeter : Locust, Selenium, ou Gatling?
Dans notre cas d’utilisation, l’application testée permet aux clients de se connecter à leur compte et d’y gérer l’ensemble de leur facturation. Dans cet exemple, nous souhaitions tester le parcours utilisateur consistant à se connecter et télécharger une facture au format PDF. Ce test porte sur plusieurs appels d’API, le chargement de détails dynamiques sur la page et la récupération d’un document stocké sur les serveurs du client.
Voici les principales étapes :
- Authentification
- Sélection d’un compte de facturation
- Navigation jusqu’au portail des relevés de facturation
- Récupération de la liste de factures
- Téléchargement de la facture
Pour un utilisateur normal, l’authentification se fait au moyen d’un nom d’utilisateur et d’un mot de passe, à l’instar de n’importe quel autre site. Cependant, lors de l’appel d’API en arrière-plan, nous utilisons un jeton de sécurité généré de manière unique et intégré à la page HTML comme mesure de sécurité supplémentaire. Cette opération est généralement effectuée par le script qui accompagne la page Web. Comme nous n’utilisons pas un navigateur « sans tête », nous avons simulé l’appel d’API après le chargement de la page afin de nous authentifier correctement.
Utiliser BeautifulSoup avec Locust
C’est ici que BeautifulSoup entre en jeu. Grâce à BeautifulSoup, nous pouvons facilement éplucher le code HTML à la recherche du jeton et l’inclure avec les identifiants dans le corps de la requête POST en utilisant le client HTTP de Python. Nous simulons ainsi un utilisateur réel.
Nous imitons ensuite une fois de plus le script de la page :
- Récupération de la liste de comptes associés à l’utilisateur
- Sélection du compte au moyen d’une requête GET
- Génération de la liste des documents
- Sélection d’un document au hasard dans la liste et envoi d’une requête de téléchargement
- Fin du test
Comme vous pouvez le constater, Python m’a été très pratique pour la création du test. J’ai pu le lancer en mode distribué avec la CLI et simuler des centaines d’utilisateurs en quelques secondes.