PROJET AUTOBLOG


Korben

Site original : Korben

⇐ retour index

Testez la montée en charge de votre serveur avec Locust

samedi 17 juillet 2021 à 09:00

Si vous voulez tester la résistance de votre serveur et l’évolution de ses performances lors d’une augmentation du trafic, rien de mieux qu’un outil de test de montée en charge.

Et c’est pourquoi je vous présente aujourd’hui Locust.

Locust est un outil de test de charge facile à utiliser qui vous permet d’écrire et de jouer des scénarios de test en Python. Ainsi, avec un peu de code, vous pouvez simuler des comportements utilisateurs, qui bouclent ou qui prennent des chemins conditionnels différents.

Locust est également distribué, ce qui signifie que vous pouvez lancer des tests de charges répartis sur plusieurs machines, ce qui permet de simuler des milliers d’utilisateurs simultanés.

Ce qui est sympa également, c’est que Locust possède une interface graphique qui vous affichera la progression de votre test en temps réel. Vous pourrez même modifier la charge pendant l’exécution du test et comme il peut également fonctionner en ligne de commandes, vous pouvez l’intégrer à vos process CI/CD.

Ne pensez pas non plus que Locust soit uniquement dédié à du test de site web. En écrivant un client spécifique, vous pourrez ainsi tester d’autres systèmes ou protocoles.

Pour installer Locust, il vous faudra Python >= 3.6 et lancer la commande suivante :

pip3 install locust

Vous aurez également besoin d’écrire un premier scénario de test. Voici un exemple :

import time
from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(1, 2.5)

    @task
    def hello_world(self):
        self.client.get("/hello")
        self.client.get("/world")

    @task(3)
    def view_items(self):
        for item_id in range(10):
            self.client.get(f"/item?id={item_id}", name="/item")
            time.sleep(1)

    def on_start(self):
        self.client.post("/login", json={"username":"foo", "password":"bar"})

Si vous regardez le code, vous pouvez voir qu’il y a 2 @task.

Ce sont les tâches qui seront effectuées par les utilisateurs simulés. Lorsque le QuickstartUser s’exécutera, il choisira au hasard l’une des tâches déclarées. Notez que la @task(3) a une pondération plus élevée, donc il y a 3 fois plus de chances que ce soit celle-ci qui soit choisie.

Ensuite, le reste n’est qu’une histoire de post et de get sur différents endpoints de votre site.

Bref, sauvegardez ce script sous la nom de fichier :

locustfile.py

Puis lancez locust :

locust -f locustfile.py

L’outil se lancera et vous donnera une URL à laquelle accéder avec votre ordinateur. Ensuite y’a plus qu’à mettre vos paramètres et à lancer le test.

Le test commencera alors en vrai. J’espère que votre serveur tiendra le coup 🙂

Et vous pourrez voir de beaux graphiques en temps réel, les erreurs rencontrées et bien sûr récupérer toutes les données pour les exploiter ensuite dans d’autres outils.

Locust est distribué sous licence libre et vous pouvez trouver son code en vous rendant sur le github.

Je vous invite également à lire la documentation ici.

Tu aimes ce site ?

Je mets tout mon cœur et toute mon énergie dans ce site depuis des années et si tu apprécies mon contenu, tu seras sûrement heureux ou heureuse d’apprendre que j’ai mis en place un soutien financier qui permet aux vrais de la première heure d’accéder en avant première aux contenus que je produis pour eux.

Tu auras accès à des vidéos, au groupe privé Discord, à ma veille techno exclusive et tu pourras échanger librement avec d’autres vrais fans.

On se voit de l’autre côté ?