Gatling vs JMeter: Tests als Code oder GUI-Testplan?
7 Min. Lesezeit
Gatling und Apache JMeter sind beide kostenlose Open-Source-Lasttest-Tools, die auf der JVM laufen, und die Wahl hängt vor allem davon ab, wie Ihr Team Tests bauen möchte. Nehmen Sie Gatling, wenn Sie Tests als Code in Java, Kotlin, Scala, JavaScript oder TypeScript, offene Injektionsprofile und nach jedem Lauf einen HTML-Bericht wollen. Nehmen Sie JMeter, wenn Sie Protokolle wie JDBC, LDAP, FTP oder Mail ohne Zusatzaufwand brauchen, Tests lieber in einer GUI zusammenstellen oder bereits .jmx-Testpläne besitzen.
Die Fakten in diesem Vergleich Gatling vs JMeter stammen aus der Dokumentation und den Repositories der beiden Projekte, geprüft am 9. Oktober 2026.
| Gatling | Apache JMeter | |
|---|---|---|
| Lizenz | Apache 2.0; gRPC, MQTT und GraphQL unter einer eigenen Komponentenlizenz (Repository) | Apache 2.0 (Repository) |
| Laufzeit | JVM, OpenJDK LTS 11 bis 25 (Version 3.16.0) | JVM, Java 8 oder neuer (Version 5.6.3) |
| Tests geschrieben als | Code in Java, Kotlin, Scala, JavaScript oder TypeScript | Testpläne, in einer GUI gebaut und als XML-Dateien (.jmx) gespeichert |
| Eingebaute Protokolle | HTTP/1.1, HTTP/2, WebSocket, Server-Sent Events, JMS | HTTP(S), SOAP/REST, FTP, JDBC, LDAP, JMS, Mail, TCP, Shell-Befehle, Java-Objekte |
| Recorder | HTTP-Proxy oder Konverter für HAR-Dateien | HTTP(S) Test Script Recorder (Proxy) |
| Lastmodell | Offene oder geschlossene Injektionsprofile | Thread Groups; eine experimentelle Open Model Thread Group |
| Skalierung | Ein Rechner; verteilte Läufe brauchen Gatling Enterprise | Eingebauter Remote-Modus, ein Client steuert viele Server |
| CI und Headless-Läufe | Plugins für Maven, Gradle, sbt und npm; eine verfehlte Assertion lässt den Lauf scheitern | CLI-Modus (jmeter -n); Maven-, Gradle- und Jenkins-Plugins von Drittanbietern |
| Berichte | HTML-Bericht nach jedem Lauf | HTML-Dashboard; Live-Ergebnisse über einen Backend Listener |
Was ist der Unterschied zwischen Gatling und JMeter?
In Gatling ist ein Test ein Programm in einem Build-Projekt. In JMeter ist ein Test ein Baum aus Elementen, den Sie in einer Desktop-GUI zusammenstellen und als XML-Datei speichern, und daraus ergeben sich die meisten anderen Unterschiede.
Das README von Gatling nennt Tests Simulationen und legt sie wie Anwendungscode in Ihr Repository; ausgeführt werden sie über ein Plugin für Maven, Gradle, sbt oder npm. Das SDK für JavaScript und TypeScript wird über npm installiert und lädt seine eigene GraalVM-Laufzeit herunter.
Ein JMeter-Plan enthält 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). Unter der Haube führt JMeter jeden virtuellen Benutzer als Java-Thread aus, während das README von Gatling virtuelle Benutzer als leichtgewichtige Nachrichten auf einer nicht blockierenden Engine auf Basis von Netty beschreibt.
Wie schreibt man in beiden Tools einen Test?
In Gatling schreiben Sie eine Simulationsklasse, die ein Szenario, ein Injektionsprofil und Assertions festlegt. In JMeter fügen Sie in der GUI eine Thread Group und Sampler hinzu, speichern den Plan und starten ihn dann von der Kommandozeile.
Eine Java-Simulation nach dem Vorbild des Tutorials zur ersten Simulation von Gatling: Neue Benutzer kommen anfangs mit einem pro Sekunde an, steigen innerhalb einer Minute auf zehn pro Sekunde und bleiben dann fünf Minuten auf diesem Niveau. Der Lauf scheitert, wenn das 95. Perzentil über 500 ms steigt oder mehr als 1 % der Anfragen fehlschlagen:
import static io.gatling.javaapi.core.CoreDsl.*;
import static io.gatling.javaapi.http.HttpDsl.*;
import io.gatling.javaapi.core.*;
import io.gatling.javaapi.http.*;
public class ApiSimulation extends Simulation {
HttpProtocolBuilder httpProtocol =
http.baseUrl("https://staging.example.com");
ScenarioBuilder users = scenario("API users")
.exec(http("list users").get("/api/users"))
.pause(1);
{
setUp(users.injectOpen(
rampUsersPerSec(1).to(10).during(60),
constantUsersPerSec(10).during(300)))
.protocols(httpProtocol)
.assertions(
global().responseTime().percentile(95.0).lt(500),
global().failedRequests().percent().lt(1.0));
}
}
Starten Sie sie mit ./mvnw gatling:test; eine JavaScript- oder TypeScript-Simulation starten Sie mit npx gatling run.
In JMeter ist derselbe Test eine Thread Group mit einem HTTP-Request-Sampler, und eine Duration Assertion kann jede zu langsame Antwort als fehlgeschlagen markieren. Der Einstiegsleitfaden baut den Plan im GUI-Modus und führt ihn im CLI-Modus aus; -e -o erzeugt am Ende den HTML-Bericht:
jmeter -n -t api-users.jmx -l results.jtl -e -o report/
Beide Tools können einen ersten Entwurf im Browser aufzeichnen. Der Recorder von Gatling arbeitet als HTTP-Proxy oder wandelt eine HAR-Datei in eine Simulation um, und der HTTP(S) Test Script Recorder von JMeter zeichnet Browser-Traffic in einen Plan auf (geprüft am 9. Oktober 2026). Die Dokumentation von Gatling führt diesen Recorder inzwischen als Legacy, und das neuere Gatling Studio verlangt zum Anmelden ein Enterprise-Konto (geprüft am 10. Oktober 2026).
Welche Protokolle kann jedes Tool testen?
JMeter deckt von Haus aus mehr Protokolle ab. Gatling bringt die wichtigsten Webprotokolle plus JMS mit und überlässt den Großteil des Rests eigenen Komponenten oder Community-Plugins.
Das README von JMeter nennt jedes Protokoll aus der Tabelle oben, Mail eingeschlossen. JDBC und JMS brauchen Treiber-JARs von Ihrem Datenbank- oder JMS-Anbieter, und der Plugins Manager installiert Community-Plugins direkt aus der GUI.
Laut dem README von Gatling sind gRPC, MQTT und GraphQL eigene Komponenten unter der Gatling Enterprise Component License, ohne Enterprise begrenzt auf fünf gleichzeitige Benutzer und Tests von fünf Minuten. Kafka, AMQP, SFTP, FTP und JDBC kommen aus Drittanbieter-Plugins für Gatling 3.13, die Gatling nicht selbst pflegt (geprüft am 9. Oktober 2026).
Wie modellieren Gatling und JMeter Last?
Gatling lässt Sie schon im Skript zwischen einem offenen und einem geschlossenen Modell wählen. Die klassische Thread Group von JMeter ist ein geschlossener Pool von Benutzern, und für ankunftsbasierte Last brauchen Sie die neuere Open Model Thread Group.
In Gatling nimmt injectOpen Ankunftsraten wie constantUsersPerSec und rampUsersPerSec entgegen, injectClosed dagegen Zielwerte für die Parallelität wie constantConcurrentUsers. JMeter 5.5 hat die Open Model Thread Group eingeführt, die die Referenz weiterhin als experimentell kennzeichnet (geprüft am 9. Oktober 2026). Unser Leitfaden zum offenen vs geschlossenen Lastmodell erklärt, warum diese Wahl wichtig ist.
Wie verteilt man einen Test auf mehrere Rechner?
JMeter hat einen verteilten Modus eingebaut. Die Open-Source-Edition von Gatling erzeugt Last von einem Rechner aus, und die Dokumentation nennt ein Gatling-Enterprise-Konto als Voraussetzung für verteilte Läufe.
Im Remote-Modus steuert ein JMeter-Client beliebig viele Server. Jeder Server führt den ganzen Plan aus, 1.000 Threads auf sechs Servern ergeben 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 auf jeden Server kopiert werden.
Für JMeter-Testpläne gibt es einen dritten Weg. LoadFocus, der Herausgeber dieser Website, führt bestehende JMeter-Testpläne unverändert aus 25 Cloud-Regionen aus, ohne dass Sie Remote-Server einrichten müssen. LoadFocus führt keine Gatling-Simulationen aus.
Wie passen sie in die CI, und welche Berichte bekommen Sie?
Beide laufen headless. Die Assertions von Gatling können den Build direkt scheitern lassen, während die Assertions von JMeter einzelne Samples markieren und die CI-Anbindung aus Bibliotheken von Drittanbietern kommt.
Assertions in Gatling werden nach dem Lauf geprüft, und eine einzige fehlgeschlagene Assertion lässt die Simulation und damit den Build-Task scheitern. Der HTML-Bericht zeigt Perzentile der Antwortzeit, gestartete Benutzer pro Sekunde, gleichzeitige Benutzer und Anfragen pro Sekunde im Zeitverlauf.
Der CLI-Modus von JMeter kennt keine Pass/Fail-Option, daher scheitert ein Build an einem verfehlten Ziel nur über die im README genannten Bibliotheken für Maven, Gradle und Jenkins oder über eine eigene Prüfung. Das Dashboard bringt eine APDEX-Tabelle, eine Statistiktabelle mit drei konfigurierbaren Perzentilen und Fehlerübersichten mit, und ein Backend Listener streamt Live-Ergebnisse nach InfluxDB oder Graphite.
Welches Tool sollten Sie wählen?
Wählen Sie Gatling, wenn Ihr Team Java, Kotlin, Scala oder TypeScript schreibt und Lasttests wie den übrigen Code reviewen möchte. Wählen Sie stattdessen JMeter, wenn Sie Protokolle jenseits des Webs brauchen, wenn Ihre Tester eine GUI bevorzugen oder wenn Sie bereits .jmx-Pläne haben.
Gatling passt zu Teams, die Traffic als Ankunftsraten beschreiben und Pass/Fail-Regeln direkt neben dem Szenario sowie einen lesbaren Bericht ohne Zusatzaufwand wollen.
JMeter ist die bessere Wahl für Tests von JDBC, LDAP, FTP oder Mail, für Tester, die einen aufgezeichneten Ablauf visuell verfeinern, und für verteilte Läufe auf eigenen Servern ohne kommerzielle Lizenz. Ein Unternehmen, das JMeter bereits nutzt, behält außerdem seine Pläne, Plugins und sein Know-how.
FAQ
Ist Gatling 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 Gatling .jmx-Dateien von JMeter ausführen? Nicht direkt. Gatling führt Simulationen aus, die mit seinen SDKs geschrieben sind, ein JMeter-Plan muss also neu geschrieben werden. Das README von Gatling nennt KI-Erweiterungen, die JMeter-Testpläne umwandeln, und diese brauchen einen API-Token für Gatling Enterprise.
Kann LoadFocus Gatling-Tests ausführen? Nein. LoadFocus führt JMeter-Testpläne und k6-Skripte aus. Um eine Gatling-Simulation auf mehrere Rechner zu verteilen, nutzen Sie Gatling Enterprise.
Weiterlesen
- Gatling-Lasttests: das JVM-Tool im Überblick
- Gatling vs k6: JVM-Simulationen oder ein Go-Binary?
- Locust vs JMeter: Python-Skripte oder JMeter-Testpläne?
- Offenes vs geschlossenes Lastmodell: welches passt wann?
- k6 vs Artillery: welches Lasttest-Tool passt zu Ihrem Team?
- 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.