JMeter fühlt Web-Applikationen auf den Zahn

20.04.2009
Von Heiko Spindler

Wenn man Anwendungen entwickelt, ist man sich nie ganz sicher, wie sich diese im produktiven Einsatz verhalten und ob die Reaktionszeiten ausreichen. Eine frühzeitige Simulation mit einem Lasttest kann solche Probleme aufdecken. "Apache JMeter" (http:// jakarta.apache.org/jmeter/) erfüllt genau diese Aufgabe.

Im ersten Schritt ist es erforderlich, einen Testplan zu erstellen. Dabei legt man die wesentlichen HTTP-Anfragen fest, die die Benutzer mit ihrem Browser absetzen würden. Elegant geht dies mit dem HTTP-Proxy, der sich zwischen Web-Applikation und Browser schaltet, Anfragen aufzeichnet und in den Testfall aufnimmt. Manuell sollte man Prüfungen einfügen, die die Ergebnisseiten auf erwartete Texte oder andere HTML-Elemente untersuchen. Für einen definierten Testplan legt eine ThreadGroup fest, wie viele Benutzer diesen Testplan parallel durchlaufen sollen. Nach dem Start simuliert JMeter diese gleichzeitigen Benutzer und führt die Anfragen aus. Dabei misst das Programm die Dauer jeder Anfrage mit Mittelwert, Minimum und Maximum und stellt die Werte auch grafisch dar.

JMeter unterstützt neben HTTP weitere Protokolle: SQL, HTTPS, JDBC, JMS, Web-Services und den Aufruf von Java-Klassen. Es kann mit Cookies umgehen und Anfragen parametrisieren, womit es möglich ist, bei jeder Anfrage andere Parameter (zum Beispiel Benutzer) einzugeben.

Das Projekt ist Open Source und recht ausgereift. Für die Installation reicht es, das Zip-Archiv auszupacken. Zum Starten muss Java ab Version 5 installiert sein. Die deutsche Übersetzung mancher Menüeinträge ist missverständlich: So wird aus dem englischen "assertion" nicht die passende "Zusicherung", sondern eine verwirrende "Versicherung". Zur Erstellung eines Testplans sollte man sich für die Einarbeitung etwas Zeit nehmen.

Für unsere Projekte ist JMeter ein wichtiges Werkzeug. Es hilft uns, Fehler bei der Freigabe von Ressourcen oder bei Nebenläufigkeit von Programmteilen (Threading) zu finden und zu beheben. Funktionstests lassen sich ebenfalls realisieren, andere Tools wie Selenium eignen sich dafür aber etwas besser.

(Heiko Spindler, Architekt bei Opitz Consulting in Bad Homburg)

CW-Fazit: JMeter simuliert Lasttests für Anwendungen und hilft dabei, Engpässe oder Probleme frühzeitig zu erkennen.