Was ist JMeter?

Apache JMeter ist ein kostenloses Open-Source-Lasttest-Tool in Java. So funktionieren Testpläne, CLI-Optionen und typische Fehler.

Was ist Apache JMeter?

Apache JMeter ist ein kostenloses Open-Source-Tool für Lasttests, geschrieben in Java. Man baut einen Testplan, meist in der Desktop-Oberfläche, speichert ihn als .jmx-Datei und führt ihn aus, um viele Nutzer auf einer Webanwendung, API, Datenbank oder einem anderen Server zu simulieren. Dabei misst JMeter Antwortzeiten, Durchsatz und Fehler.

Ursprünglich für Webanwendungen entwickelt, deckt es heute mehr ab. Das Benutzerhandbuch nennt Tests für Web (HTTP/HTTPS), FTP, JDBC, LDAP, Java, JUnit und JMS (JDBC braucht den Treiber Ihrer Datenbank, JMS eine Client-JAR Ihres Anbieters).

So ist ein JMeter-Test aufgebaut

  • Test Plan: der Container für alles, gespeichert als .jmx-Datei.
  • Thread Group: Jeder Thread ist ein virtueller Nutzer. Sie legen Thread-Anzahl, Ramp-up-Zeit und Schleifen oder Dauer fest. Mehr dazu im Leitfaden zur JMeter-Ramp-up-Zeit.
  • Samplers: die eigentlichen Anfragen: HTTP Request, JDBC Request, JMS Publisher und so weiter.
  • Config Elements und Timer: gemeinsame Vorgaben, CSV Data Set Config für Testdaten und Timer, die Denkzeit zwischen Anfragen simulieren.
  • Assertions: Prüfungen jeder Antwort, etwa auf Statuscode oder Text im Body.
  • Listeners: sammeln und zeigen Ergebnisse. Beim Debuggen nützlich, bei echten Lastläufen sollten die aufwendigen aber ausgeschaltet bleiben.

Beispiel: ein Checkout-Test

Sie wollen wissen, ob Login und Checkout 200 Nutzer aushalten. In einer Thread Group stellen Sie 200 Threads mit 120 Sekunden Ramp-up ein, fügen je einen HTTP Request für Login und Checkout hinzu, lesen Benutzernamen aus einer CSV-Datei und prüfen per Assertion, dass jede Antwort ein 200 ist. In der Oberfläche testen Sie das Skript mit ein bis zwei Nutzern und starten den Lauf dann über die Kommandozeile:

jmeter -n -t checkout.jmx -l results.jtl -e -o report

-n startet ohne Oberfläche, -t nennt den Testplan, -l die Ergebnisdatei, und -e -o erzeugen den HTML-Report in einen Ordner, der noch nicht existieren darf oder leer sein muss. Laut JMeter-Dokumentation dient die GUI zum Erstellen und Debuggen, Lasttests gehören in den Non-GUI-Modus. Aktuell ist Version 5.6.3, sie braucht Java 8 oder neuer (jmeter.apache.org).

Häufige Fehler

  • Last über die GUI erzeugen. Dafür ist sie nicht gedacht. Nutzen Sie die Kommandozeile, wie im Leitfaden zum Non-GUI-Modus beschrieben.
  • Den Lastgenerator überlasten. Gehen dem Rechner mit JMeter CPU oder Heap aus, messen Sie Ihren Laptop statt Ihren Server. Beobachten Sie ihn während des Laufs oder verteilen Sie die Last auf mehrere Maschinen.
  • Feste Daten und Tokens. Ein Nutzer mit einer Session-ID wiederholt getestet prüft nur Ihren Cache. Parametrisieren Sie Nutzer und extrahieren Sie dynamische Werte wie CSRF-Tokens.
  • Keine Denkzeit. Nutzer ohne Pausen senden weit mehr Anfragen als echte.
  • Nur den Mittelwert lesen. Schauen Sie auf Perzentile; warum, erklärt der Eintrag zur Latenz.
  • Der Probelauf mit einem Nutzer fehlt. Ein kaputtes Skript liefert ein schnelles "Ergebnis" voller Fehler.

JMeter vs. k6

JMeter arbeitet GUI-first und speichert Tests als XML, mit breiter Protokollabdeckung. k6 ist code-first: Tests in JavaScript passen gut in einen Pull Request. Der Vergleich k6 vs. JMeter geht die Abwägungen im Detail durch.

Wo JMeter im Testen steht

Dasselbe Skript dient mehreren Zielen, wenn Sie nur die Thread Group ändern: ein gleichmäßiger Lasttest, ein plötzlicher Sprung für Spike Testing oder wiederholte Aufrufe eines Endpunkts für API-Tests.

JMeter-Skripte mit LoadFocus ausführen

Eine Maschine erzeugt nur begrenzt Last. LoadFocus JMeter Load Testing führt Ihre .jmx aus 25 Cloud-Regionen aus: Sie laden die Datei hoch, stellen virtuelle Nutzer, Dauer und Ramp-up im Browser ein, CSV-Dateien und Plugins werden mitgenommen. Der Free-Plan erlaubt bis zu 10 gleichzeitige Nutzer und Tests von 60 Sekunden; größere Tests brauchen einen kostenpflichtigen Plan (siehe Preise).

Vor einem großen Lauf prüft der kostenlose JMeter Script Validator eine .jmx auf Syntax- und Konfigurationsfehler. Haben Sie noch kein Skript, erzeugen die kostenlosen Konverter eines aus einem cURL-Befehl, einer HAR-Datei, einer OpenAPI-Spezifikation oder einer Postman-Collection.

Häufige Fragen: Apache JMeter

Ist JMeter kostenlos?

Ja. Apache JMeter ist Open-Source-Software unter der Apache-Lizenz. Sie zahlen nur für die Rechner, auf denen es läuft, oder für einen Cloud-Dienst, der es für Sie ausführt.

Braucht JMeter Java?

Ja. JMeter ist eine Java-Anwendung, Version 5.6.3 verlangt Java 8 oder neuer. Das Handbuch empfiehlt ein JDK statt eines JRE, weil die HTTPS-Aufzeichnung das keytool des JDK braucht.

Ist JMeter nur für Websites?

Nein. Es begann mit Webanwendungen, kann aber auch FTP, JDBC-Datenbanken, LDAP, JMS und Java-basierte Dienste testen.

Warum sollte ich Lasttests nicht im GUI-Modus fahren?

Die GUI verbraucht Ressourcen, die der Test braucht, und ist zum Bauen und Debuggen gedacht. Starten Sie die Last im Non-GUI-Modus mit -n -t.

Kann ich mein JMeter-Skript ohne eigene Server in der Cloud ausführen?

Ja. Laden Sie die .jmx bei LoadFocus hoch, wählen Sie Regionen und Last, und die Lastgeneratoren werden für den Lauf bereitgestellt.

Wie schnell ist Ihre Website?

Steigern Sie ihre Geschwindigkeit und SEO nahtlos mit unserem kostenlosen Geschwindigkeitstest.

Kostenloser Websitespeed-Test

Analysieren Sie die Ladegeschwindigkeit Ihrer Website und verbessern Sie ihre Leistung mit unserem kostenlosen Seitengeschwindigkeits-Checker.