Locust vs JMeter: Python-Skripte oder JMeter-Testpläne?
6 Min. Lesezeit
Locust und Apache JMeter sind beide kostenlose Open-Source-Lasttest-Tools, und welches besser passt, hängt vor allem davon ab, wie Ihr Team Tests bauen möchte. Nehmen Sie Locust, wenn Ihr Team Python schreibt und Testlogik als gewöhnlichen Code haben will, ausgeführt von leichtgewichtigen, ereignisbasierten Benutzern. Nehmen Sie JMeter, wenn Sie Protokolle jenseits von HTTP wie JDBC, JMS oder LDAP brauchen, Tests lieber in einer GUI bauen oder bereits eine Sammlung von .jmx-Testplänen haben.
Die Fakten in diesem Vergleich Locust vs JMeter stammen aus der Dokumentation und den Repositories der beiden Projekte, geprüft am 9. Oktober 2026.
| Locust | Apache JMeter | |
|---|---|---|
| Lizenz | MIT (Repository) | Apache 2.0 (Repository) |
| Laufzeit | Python 3.11 oder neuer | Java 8 oder neuer (Version 5.6.3) |
| Tests als | Python-Code in einem Locustfile | Testpläne aus einer GUI, gespeichert als XML-Dateien (.jmx) |
| GUI | Web-UI zum Starten, Anpassen und Beobachten eines laufenden Tests | Desktop-IDE zum Aufzeichnen, Bauen und Debuggen von Testplänen |
| Eingebaute Protokolle | HTTP und HTTPS; andere über einen Python-Client | HTTP(S), SOAP/REST, FTP, JDBC, LDAP, JMS, Mail, TCP, Shell-Befehle, Java-Objekte |
| Virtuelle Benutzer | Ein Greenlet pro Benutzer auf gevent (ereignisbasiert) | Ein Java-Thread pro Benutzer |
| Verteilter Modus | Ein Master und beliebig viele Worker | Ein Client steuert entfernte JMeter-Server |
| CI und Headless-Läufe | --headless, Exit-Code 1 bei fehlgeschlagenen Anfragen | CLI-Modus (jmeter -n) |
| Berichte | Live-Diagramme in der Web-UI, CSV-Dateien, HTML-Bericht | HTML-Dashboard, Live-Ergebnisse über einen Backend Listener |
Was ist der Unterschied zwischen Locust und JMeter?
In Locust ist ein Test ein Python-Programm. In JMeter ist ein Test ein Plan, den Sie in einer Desktop-GUI zusammenstellen und als Datei speichern, und daraus folgen die meisten anderen Unterschiede.
Das README von Locust beschreibt Tests, die mit ganz normalen Python-Schleifen, Bedingungen und Bibliotheken geschrieben werden. Installiert wird Locust mit pip install locust auf Python 3.11 oder neuer, so die Paket-Metadaten.
Ein JMeter-Test ist ein Baum aus Elementen: eine Thread Group für die Benutzer, Sampler für die Anfragen sowie Assertions und Listener für die Ergebnisse. JMeter 5.6.3, die aktuelle Version auf der Download-Seite, braucht Java 8 oder neuer. Das README im Entwicklungszweig von JMeter verlangt bereits Java 17 (geprüft am 10. Oktober 2026). Wenn ein Schritt echte Logik braucht, führt ein JSR223-Sampler ein Groovy-Skript innerhalb des Plans aus.
Wie schreibt man in beiden Tools einen Test?
In Locust schreiben Sie für jede Art von Benutzer eine Python-Klasse, deren Methoden als Tasks markiert sind. In JMeter fügen Sie in der GUI eine Thread Group und Sampler hinzu, speichern den Plan und starten ihn von der Kommandozeile.
Ein Locust-Benutzer, der zwischen den Tasks ein bis drei Sekunden wartet und die Benutzerliste dreimal so oft abruft wie einen einzelnen Benutzer:
from locust import HttpUser, task, between
class ApiUser(HttpUser):
wait_time = between(1, 3)
@task(3)
def list_users(self):
self.client.get("/api/users")
@task
def view_user(self):
self.client.get("/api/users/42", name="/api/users/[id]")
Headless gestartet mit 50 Benutzern, fünf neuen pro Sekunde, für fünf Minuten:
locust -f locustfile.py --headless -u 50 -r 5 \
--run-time 5m --host https://staging.example.com
In JMeter ist derselbe Test eine Thread Group mit 50 Threads und einer Ramp-up-Zeit, die zwei HTTP-Request-Sampler enthält. Die Einstiegsanleitung startet einen gespeicherten Plan im CLI-Modus, und -e -o erzeugt am Ende den HTML-Bericht:
jmeter -n -t api-users.jmx -l results.jtl -e -o report/
Die .jmx-Datei ist XML, wie die mit JMeter ausgelieferten Beispiele zeigen, und lässt sich in einem Pull Request schwerer prüfen als Python. JMeter kann einen Plan außerdem im Browser aufzeichnen; das Gegenstück bei Locust ist har2locust, ein Konverter von HAR-Aufzeichnungen zu Locustfiles im Beta-Stadium (geprüft am 9. Oktober 2026).
Welche Protokolle kann jedes Tool testen?
JMeter deckt von Haus aus deutlich mehr Protokolle ab. Locust bringt HTTP und HTTPS mit und erwartet für alles andere einen Python-Client, den Sie selbst mitbringen.
Das README von JMeter nennt HTTP und HTTPS, SOAP und REST, FTP, Datenbanken über JDBC, LDAP, JMS-Messaging, Mail über SMTP, POP3 und IMAP, TCP, native Befehle und Java-Objekte. Für JDBC und JMS brauchen Sie die Treiber-JARs Ihres Datenbank- oder JMS-Anbieters.
Die Seite zu weiteren Protokollen in der Locust-Dokumentation zeigt, wie Sie eine Protokollbibliothek kapseln, mit Beispielen für gRPC, XML-RPC und MQTT, und verweist für Kafka, Selenium und Playwright auf locust-plugins (geprüft am 9. Oktober 2026). Die Bibliothek muss mit gevent zusammenarbeiten, denn I/O in kompiliertem C-Code blockiert den ganzen Prozess; die Dokumentation nennt als Beispiel den PostgreSQL-Treiber psycopg2, der ein Zusatzpaket braucht. Für Lasttests gegen Datenbanken ist der JDBC-Sampler von JMeter der kürzere Weg.
Wie funktionieren virtuelle Benutzer in Locust und JMeter?
JMeter führt jeden virtuellen Benutzer als Java-Thread aus. Locust führt jeden Benutzer als Greenlet in der Event-Loop von gevent aus, was die Kosten pro Benutzer niedrig hält.
Jeder Thread in einer JMeter-Thread Group arbeitet den ganzen Plan unabhängig ab. JMeter startet standardmäßig mit 1 GB Heap, was laut Anleitung für größere Pläne und viele Threads nicht reichen kann.
Laut README kann ein einzelner Locust-Prozess viele Tausend gleichzeitige Benutzer bedienen. Die Dokumentation zur verteilten Last ergänzt, dass ein Python-Prozess nicht mehr als einen CPU-Kern voll ausnutzen kann. Sie starten deshalb einen Worker pro Kern, was --processes auf einem einzelnen Rechner für Sie erledigt.
Wie verteilt man einen Test auf mehrere Rechner?
Beide haben einen verteilten Modus eingebaut. Bei Locust steuert ein Master die Worker, die die Benutzer ausführen, und bei JMeter startet der Client den vollständigen Testplan auf jedem entfernten Server.
In Locust führt ein mit --master gestarteter Prozess die Web-UI aus und sagt den --worker-Prozessen, wann sie Benutzer starten und stoppen. Die Locust-Dokumentation beschreibt außerdem einen Kubernetes-Operator und Azure Load Testing, einen Microsoft-Dienst, der Locust-Tests in der Cloud ausführt (geprüft am 9. Oktober 2026).
Im Remote-Testmodus von JMeter steuert ein Client beliebig viele Server über RMI. Jeder Server führt den ganzen Plan aus, aus 1.000 Threads auf sechs Servern werden also 6.000 Threads. Alle Knoten sollten dieselbe JMeter- und Java-Version verwenden, RMI braucht einen Keystore, sofern SSL nicht deaktiviert ist, und Datendateien müssen Sie auf jeden Server kopieren.
Für JMeter-Testpläne gibt es einen dritten Weg. LoadFocus, der Herausgeber dieser Website, führt vorhandene JMeter-Testpläne unverändert aus 25 Cloud-Regionen aus, ganz ohne Remote-Server, die Sie einrichten müssten. Locust-Tests führt LoadFocus nicht aus, für Locust bleiben also die oben genannten Wege zur Skalierung.
Wie passen beide in die CI, und welche Berichte bekommen Sie?
Beide laufen headless von der Kommandozeile. Locust beendet sich zusätzlich mit Exit-Code 1, wenn Anfragen fehlschlagen, und JMeter liefert den umfangreicheren HTML-Bericht.
Die Headless-Dokumentation von Locust zeigt einen kurzen Event-Listener, der den Exit-Code anhand der Fehlerquote, der durchschnittlichen Antwortzeit oder des 95. Perzentils setzt, dazu ein Beispiel für GitHub Actions. Mit den Optionen --csv und --html speichert Locust nach dem Lauf Ergebnisse und einen Bericht.
Die JMeter-Dokumentation ist eindeutig: Lasttests laufen im CLI-Modus, die GUI ist zum Bauen und Debuggen da. Das README verweist für Maven, Gradle und Jenkins auf Bibliotheken von Drittanbietern. Das JMeter-Dashboard enthält eine APDEX-Tabelle, eine Statistiktabelle mit drei konfigurierbaren Perzentilen, Fehlerübersichten und Diagramme der Antwortzeit.
Welches Tool sollten Sie wählen?
Wählen Sie Locust, wenn Ihr Team Python schreibt und Lasttests wie den übrigen Code im Review prüfen will. Wählen Sie stattdessen JMeter, wenn Sie Protokolle jenseits von HTTP brauchen, wenn Ihre Tester lieber mit einer GUI arbeiten oder wenn Sie bereits .jmx-Pläne haben.
Locust passt zu Szenarien mit Schleifen, Verzweigungen und generierten Daten, zu Tests, die einen internen Python-Client für Ihre API wiederverwenden, und zu hoher Parallelität mit Benutzern, die die meiste Zeit warten.
JMeter ist die bessere Wahl für Tests mit JDBC, JMS, LDAP, FTP oder Mail, für die Locust einen selbst gepflegten Client bräuchte, und für Tester, die einen Ablauf im Browser aufzeichnen und visuell verfeinern. Ein Unternehmen, das JMeter bereits nutzt, behält außerdem seine Pläne und sein Know-how.
FAQ
Ist Locust schneller als JMeter? Das haben wir nicht selbst gemessen, deshalb nennen wir keinen Sieger. Fair vergleichen lässt sich das nur mit demselben Szenario in beiden Tools auf Ihrer eigenen Hardware.
Kann Locust JMeter-Dateien im .jmx-Format ausführen? Laut seiner Dokumentation nicht, denn sie beschreibt Tests ausschließlich als Python-Locustfiles. Wer einen JMeter-Testplan nach Locust überträgt, schreibt ihn in Python neu.
Kann LoadFocus Locust-Tests ausführen? Nein. LoadFocus führt JMeter- und k6-Skripte aus. Um einen Locust-Test über einen Rechner hinaus zu skalieren, nutzen Sie den Master-Worker-Modus von Locust, seinen Kubernetes-Operator oder Azure Load Testing.
Weiterlesen
- Locust-Lasttests: das Python-Tool im Überblick
- Gatling vs JMeter: Tests als Code oder GUI-Testplan?
- k6 vs Artillery: welches Lasttest-Tool passt zu Ihrem Team?
- k6 vs Locust: JavaScript-Skripte oder Python-Nutzer?
- Gatling vs Locust: JVM-Simulationen oder Python-Locustfiles?
- JMeter vs Postman: welches Tool für Lasttests?
Die technischen Aussagen in diesem Artikel wurden nicht unabhängig geprüft.