Locust ist ein Open-Source-Leistungs-/Lasttest-Tool für HTTP und andere Protokolle. Dank des entwicklerfreundlichen Ansatzes können Sie Ihre Tests in normalem Python-Code definieren.
Locust-Tests können über die Befehlszeile oder über die webbasierte Benutzeroberfläche ausgeführt werden. Durchsatz, Reaktionszeiten und Fehler können in Echtzeit angezeigt und/oder zur späteren Analyse exportiert werden.
Sie können reguläre Python-Bibliotheken in Ihre Tests importieren und sind mit der steckbaren Architektur von Locust unbegrenzt erweiterbar. Anders als bei den meisten anderen Tools wird Ihr Testdesign niemals durch eine GUI oder eine domänenspezifische Sprache eingeschränkt.
Um sofort loszulegen, schauen Sie sich die Dokumentation an.
Wenn Sie möchten, dass Ihre Benutzer eine Schleife ausführen, bedingtes Verhalten ausführen oder Berechnungen durchführen, verwenden Sie einfach die regulären Programmierkonstrukte, die Python bereitstellt. Locust führt jeden Benutzer in seinem eigenen Greenlet (einem leichtgewichtigen Prozess/einer Coroutine) aus. Dadurch können Sie Ihre Tests wie normalen (blockierenden) Python-Code schreiben, anstatt Rückrufe oder andere Mechanismen verwenden zu müssen. Da Ihre Szenarien „nur Python“ sind, können Sie Ihre reguläre IDE verwenden und Ihre Tests als regulären Code versionieren (im Gegensatz zu einigen anderen Tools, die XML oder Binärformate verwenden).
from locust import HttpUser, task, betweenclass QuickstartUser(HttpUser):wait_time = between(1, 2)def on_start(self):self.client.post("/login", json={"username":"foo", " Passwort: „bar“})@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):for item_id in range(10):self.client. get(f"/item?id={item_id}", name="/item")
Mit Locust ist es einfach, Lasttests über mehrere Maschinen verteilt durchzuführen. Es ist ereignisbasiert (unter Verwendung von gevent), was es einem einzelnen Prozess ermöglicht, viele tausend gleichzeitige Benutzer zu verwalten. Während es möglicherweise andere Tools gibt, die in der Lage sind, auf einer bestimmten Hardware mehr Anfragen pro Sekunde zu bearbeiten, ist es aufgrund des geringen Overheads jedes Locust-Benutzers sehr gut zum Testen hochgradig gleichzeitiger Arbeitslasten geeignet.
Locust verfügt über eine benutzerfreundliche Weboberfläche, die den Fortschritt Ihres Tests in Echtzeit anzeigt. Sie können die Last sogar ändern, während der Test läuft. Es kann auch ohne Benutzeroberfläche ausgeführt werden, was die Verwendung für CI/CD-Tests erleichtert.
Obwohl Locust hauptsächlich mit Websites/Diensten arbeitet, kann es zum Testen fast aller Systeme und Protokolle verwendet werden. Schreiben Sie einfach einen Client für das, was Sie testen möchten, oder erkunden Sie einige, die von der Community erstellt wurden.
Die Codebasis von Locust ist bewusst klein gehalten und löst nicht alles sofort. Stattdessen versuchen wir, die Anpassung an jede Situation zu erleichtern, indem wir regulären Python-Code verwenden. Nichts hindert Sie daran:
Senden Sie Echtzeit-Berichtsdaten an TimescaleDB und visualisieren Sie sie in Grafana
Wrap-Aufrufe, um die Besonderheiten Ihrer REST-API zu berücksichtigen
Verwenden Sie eine völlig individuelle Lastform/-profil
...
Dokumentation: docs.locust.io
Support/Fragen: StackOverflow
Github-Diskussionen: Github-Diskussionen
Chat/Diskussion: Slack (Anmeldung)
Betreuer: Lars Holmberg
Benutzeroberfläche: Andrew Baldwin
Ursprünglicher Schöpfer: Jonatan Heyman
Vielen Dank an alle unsere Mitwirkenden
Open Source, lizenziert unter der MIT-Lizenz (Einzelheiten finden Sie in der LIZENZ- Datei).