Sonntag, 22. August 2010

Lasttests mit JMeter für Webanwendungen

JMeter ist ein Tool der Apache Software Foundation, mit dem sich u.a. Lasttests und Performancemessungen für Webanwendungen erstellen lassen.

Nach dem Runterladen und Entpacken des Tools lässt es sich mit der /bin/jmeter.bat starten. 
Um einen Test zu erstellen, muss in den - noch leeren - Testplan eine Thread-Gruppe hinzugefügt werden.



Eine Thread-Gruppe simuliert eine Menge von Benutzern. Ist diese erstellt, können in den Thread-Eigenschaften die Anzahl der zu simulierenden Benutzer über die Eigenschaft Anzahl der Threads festgelegt werden.
Die Ramp-Up Period gibt an, innerhalb wieviel Sekunden JMeter die gewünsche Anzahl von Threads starten soll.
Bei 5 Threads und einer Ramp-Up Period von 5 wird also jede Sekunde ein neuer Thread gestartet. Wird die Period auf 10 gesetzt, wird alle 2 Sekunden ein neuer Thread gestartet. Dies ist ein wichtiger Wert zum skalieren der Tests.

Für Lasttests ist dieser Wert möglichst klein (0-2) zu wählen, da hierbei möglichst viele Benutzer gleichzeitig simuliert werden sollen.

Sollen nur Reaktionszeiten der Anwendung für einzelne Benutzer getestet werden ist dieser Wert entsprechend hoch zuwählen, so dass sich die Anfragen nicht zu sehr überlappen. Wie hoch genau der Wert dabei sein muss, hängt natürlich von der zu testenden Funktion der Anwendung ab. Soll nur die Reaktionszeit einer statischen Webseite überprüft werden, reicht es sicherlich aus, die Ramp-Up Period = 2x(Anzahl der Threads) zu setzen, da 2 Sekunden als Antwortzeit durchaus ausreichend ist. Sollen aber Funktionen der Anwendung getestet werden, die Berechnungen durchführen, auf Datenbanken zugreifen oder sonstiges, muss die Dauer dieser Funktionbei Wahl der Zeit mit berücksichtigt werden, so dass sich hierbei die Ramp-Up Period vergrößert.

Unterhalb der Thread-Gruppe können jetzt die gewünschten Anfragen an die Webanwendung plaziert werden. Diese werden als HTTP Request HTTPClient (zu finden unter Hinzufügen -> Sampler) unter die Thread-Gruppe platziert. Für das Request können dann die notwendigen Einstellungen wie Server - IP, Port und Request - Pfad gemacht werden. Zusätzlich können dem Request auch noch Parameter übergeben werden, was ganz nützlich sein kann, wenn Methoden aufgerufen werden sollen, die Parameter verwenden.


In meinem Beispiel befindet sich auf der testme.xhtml ein Binding zu einer JSF ManagedBean - Methode, die eine Anfrage an die Datenbank startet.

Zuletzt wird noch ein Graph (zu finden unter Hinzufügen -> Listener) unter dem Http Request plaziert, um die Testergebnisse visuell darzustellen. An diesem müssen keine Einstellungen mehr vorgenommen werden.


Der Test kann über den Menüpunkt Start gestartet werden, die Ergebnisse / Zeiten erscheinen in dem Graph. Je nach Bedarf können auch mehrere Thread Gruppen definiert werden, die entweder parallel (ist per default eingestellt) oder nacheinander gestartet werden. Um sie nacheinander starten zu lassen, muss ein Haken bei Thread-Gruppen nacheinander starten gesetzt werden. Dies ist direkt unter dem Testplan zu finden.

Buchtip:
Handbuch zum Testen von Web-Applikationen: Testverfahren, Werkzeuge, Praxistipps (Xpert.press)

Keine Kommentare:

Kommentar veröffentlichen