Apache JMeter: Lasttests für deine Website Schritt für Schritt

Apache JMeter: Lasttests für deine Website Schritt für Schritt

Apache JMeter ist ein Werkzeug für Servertests, mit dem sich das Verhalten von Nutzern auf deinen Seiten simulieren lässt. Praktisch, wenn du eine Website vor einem Ereignis prüfen willst, das den Traffic stark nach oben treibt, etwa einen Onlineshop zum Start des Schlussverkaufs. Es ist ein Open-Source-Werkzeug der Apache Foundation.

Der erste Durchlauf mit JMeter

Ich bin weit davon entfernt, ein Experte für JMeter und Lasttests zu sein. Deshalb zeige ich dir Schritt für Schritt einen ersten, einfachen Durchlauf mit Apache JMeter und das, was ich davon verstanden habe. Schreib gern einen Kommentar, wenn du Fragen oder Anmerkungen hast. Wir fangen mit einem Rechtsklick auf Testplan -> Threads (Benutzer) -> Thread-Gruppe an, um eine Thread-Gruppe hinzuzufügen. Auf dem Bildschirm siehst du dann Folgendes.

JMeter-1024x478.jpg

Aktion nach einem Sampler-Fehler

Das ist die Aktion, die folgt, wenn während deines Tests ein Fehler auftritt: weitermachen, eine neue Iteration starten, den Thread oder den Test anhalten und so weiter. Standardmäßig behalten wir „Nächste Thread-Schleife starten“ bei, das heißt, deine Schritte laufen von vorn.

Eigenschaften der Thread-Gruppe

Danach folgen die Eigenschaften deiner Thread-Gruppe: die Anzahl der Threads, also die Zahl der Nutzer, die sich mit deiner Website verbinden, und die Hochlaufzeit, auf die diese Nutzer in Sekunden verteilt werden. Bei 100 Nutzern und 10 Sekunden Hochlaufzeit verbinden sich 10 Nutzer pro Sekunde mit meiner Website. Zum Schluss kommt die Anzahl der Iterationen, also wie oft jeder Thread (Nutzer) das Szenario durchläuft. Setze ich 2, läuft ein Thread das Szenario zweimal durch.

Konfiguration des Schedulers

Du hast es wahrscheinlich schon erraten: Damit legst du eine Verzögerung oder ein Datum für den Start deines Tests fest. Bis hierhin nichts Kompliziertes.

Standardwerte für unsere HTTP-Anfragen setzen

Dafür gehst du auf Testplan -> Thread-Gruppe -> Konfigurationselement -> Standardwerte für HTTP-Anfragen. Pflicht ist das nicht, aber so legst du einen Domainnamen einmal fest, statt ihn für jede Anfrage der Thread-Gruppe erneut zu schreiben. In diesem Beispiel habe ich meinen Blog eingetragen.

JMeter2-1024x478.jpg

Beachte, dass JMeter deine Ressourcen während des Tests nicht lädt (CSS, JS, Bilder und so weiter). Um sie einzubeziehen, gehst du auf Erweitert und aktivierst Alle eingebetteten Ressourcen abrufen. Vorsicht dabei: Dein Test läuft dann deutlich länger.

JMeter3-1024x478.jpg

Eine HTTP-Anfrage hinzufügen

Jetzt kannst du über Testplan -> Thread-Gruppe -> Sampler -> HTTP-Anfrage eine HTTP-Anfrage hinzufügen. Auch hier stehen viele Angaben auf dem Bildschirm, aber wenn du dir die Zeit nimmst, sie zu lesen, fügt sich das schnell zusammen. Im Pfad deiner Anfrage gibst du einen relativen Pfad an, sofern du deine Website in den Standardwerten für HTTP-Anfragen hinterlegt hast.

JMeter4-1024x528.jpg

Der konstante Zeitgeber legt schlicht eine Pause fest, die dein fiktiver Nutzer abwartet, ein echter Besucher bleibt schließlich länger als eine Sekunde auf einer Seite.

Ein Szenario automatisch über einen Proxy aufzeichnen

Du kannst ein Szenario aufzeichnen und wiedergeben, indem du JMeter so einrichtest, dass es dein Verhalten auf einer Website mitschneidet und für die Tests wiederholt. Das spart dir das Schreiben eines Szenarios von Hand.

JMeter8.jpg

Dazu richtest du JMeter über Arbeitsbereich -> Nicht-Test-Elemente ->HTTP(S) Test Script Recorder als Proxy ein. Vergiss nicht, den Recorder zu starten und deinen Browser in den Proxy-Einstellungen darauf zu verweisen.

JMeter9-300x23.jpg

Anschließend fügst du, weiterhin im Arbeitsbereich, einen Listener -> Ergebnisbaum hinzu, um die Daten anzuzeigen und deine Tests auswerten zu können.

Fazit

Ich bin in einem Kurs auf Apache JMeter gestoßen und fand es ausgesprochen spannend, Webanwendungen aus Sicht des Servers zu testen und zu sehen, welche Anfragen ihn zu stark belasten. Vorsicht: Für Tests, die näher an der Realität liegen, brauchst du mehrere Server mit einem installierten JMeter-Agenten, um Besucher aus der Ferne zu steuern und zu simulieren. Die Ergebnisse sind dann deutlich aufschlussreicher und realistischer. JMeter ist sehr umfangreich, und wenn sich die Gelegenheit ergibt, schreibe ich einen ausführlicheren Artikel dazu.

···

Damien Flandrin Webentwickler seit 2010, Gründer von Gekkode und Email Impact. Jeder Artikel wird vor der Veröffentlichung an einem echten Projekt getestet. Kontakt
Newsletter

Neue Tests, Tutorials und Projekte, per E-Mail.

Reproduzierbare Tests, versionierter Code, datierte Ergebnisse. Niemals Spam.