Locust est un outil open source de test de performances/charge pour HTTP et d'autres protocoles. Son approche conviviale pour les développeurs vous permet de définir vos tests dans du code Python standard.
Les tests antiacridiens peuvent être exécutés à partir de la ligne de commande ou à l'aide de son interface utilisateur Web. Le débit, les temps de réponse et les erreurs peuvent être visualisés en temps réel et/ou exportés pour une analyse ultérieure.
Vous pouvez importer des bibliothèques Python classiques dans vos tests et, grâce à l'architecture enfichable de Locust, elle est extensible à l'infini. Contrairement à la plupart des autres outils, la conception de votre test ne sera jamais limitée par une interface graphique ou un langage spécifique à un domaine.
Pour commencer tout de suite, rendez-vous sur la documentation.
Si vous souhaitez que vos utilisateurs effectuent des boucles, effectuent un comportement conditionnel ou effectuent des calculs, utilisez simplement les constructions de programmation classiques fournies par Python. Locust exécute chaque utilisateur dans son propre greenlet (un processus/coroutine léger). Cela vous permet d'écrire vos tests comme du code Python normal (bloquant) au lieu d'avoir à utiliser des rappels ou un autre mécanisme. Parce que vos scénarios sont « juste du python », vous pouvez utiliser votre IDE habituel et contrôler la version de vos tests sous forme de code normal (par opposition à certains autres outils qui utilisent des formats XML ou binaires).
à partir de l'importation de criquets HttpUser, tâche, betweenclass QuickstartUser(HttpUser):wait_time = between(1, 2)def on_start(self):self.client.post("/login", json={"username":"foo", " mot de passe":"bar"})@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):pour item_id dans range(10):self.client. get(f"/item?id={item_id}", nom="/item")
Locust facilite l'exécution de tests de charge répartis sur plusieurs machines. Il est basé sur les événements (en utilisant gevent), ce qui permet à un seul processus de gérer plusieurs milliers d'utilisateurs simultanés. Bien qu'il puisse exister d'autres outils capables d'effectuer plus de requêtes par seconde sur un matériel donné, la faible surcharge de chaque utilisateur Locust le rend très approprié pour tester des charges de travail hautement concurrentes.
Locust dispose d'une interface Web conviviale qui montre la progression de votre test en temps réel. Vous pouvez même modifier la charge pendant l'exécution du test. Il peut également être exécuté sans interface utilisateur, ce qui le rend facile à utiliser pour les tests CI/CD.
Même si Locust fonctionne principalement avec des sites/services Web, il peut être utilisé pour tester presque n'importe quel système ou protocole. Écrivez simplement un client pour ce que vous souhaitez tester, ou explorez certains créés par la communauté.
La base de code de Locust est intentionnellement réduite et ne résout pas tout immédiatement. Au lieu de cela, nous essayons de faciliter l'adaptation à toute situation que vous pourriez rencontrer, en utilisant du code Python standard. Rien ne vous empêche de :
Envoyez des données de reporting en temps réel à TimescaleDB et visualisez-les dans Grafana
Encapsulez les appels pour gérer les particularités de votre API REST
Utiliser une forme/un profil de charge totalement personnalisé
...
Documentation : docs.locust.io
Assistance/Questions : StackOverflow
Discussions Github : Discussions Github
Chat/discussion : Slack (inscription)
Responsable : Lars Holmberg
Interface utilisateur : Andrew Baldwin
Créateur original : Jonatan Heyman
Un grand merci à tous nos contributeurs
Open source sous licence MIT (voir le fichier LICENSE pour plus de détails).