Open Source im professionellen Einsatz
Linux-Magazin 08/2015
© roussien, 123RF

© roussien, 123RF

Jmeter, Apaches Lasttest-Tool

Stress im Apache-Land

Wenn eine Site unter den vielen Interessenten ächzt, der Webshop unter dem Käuferansturm zusammenbricht oder bei einer Datenbank nur noch die Festplatten-LEDs Lebenszeichen geben, geraten Admins und Entwickler unter Stress. Ach, hätten sie die Applikation bloß in einer ruhigen Stunde unter Last gesetzt!

791

Um böse Überraschungen bei der Produktion zu vermeiden, ist es gute Praxis, seine Anwendung einem ausführlichen Lasttest zu unterziehen. Nur so können der Entwickler der Applikation und der zuständige Webmaster oder Admin verlässlich feststellen, welche Leistungsmerkmale die aktuelle Installation erfüllt und welche nicht. Die Testergebnisse sollten so detailliert ausfallen, dass Entwickler und Admin daraus schnell geeignete Anpassungs- und Optimierungsmaßnahmen abzuleiten vermögen.

Die Apache Software Foundation sendet aus ihrem Reich zu diesem Zweck das sehr ausgereifte Tool Jmeter [1] in die weite Entwicklerwelt. Stefano Mazzocchi, in Italien geboren und heute bei Google in den USA beschäftigt, hatte 1998 begonnen Jmeter zu entwickeln, um Lasttests am Apache-Tomcat-Server zu absolvieren. Anschließend führte Mazzocchi – seit 1999 Member des Project Management Committee (PMC) von Apache Jakarta – das Tool als Jakarta-Unterprojekt weiter. Seit 2011 besitzt Jmeter den Status eines eigenständigen Apache-Toplevel-Projekts. Als einer der wenigen Konkurrenten gilt Grinder 3 [2], den jedoch schon länger niemand mehr weiterentwickelt.

Von Jmeter erscheinen pro Jahr mehrere Versionen. In der aktuellen 2.13 unterstützt Jmeter von Hause aus die Protokolle HTTP und HTTPS, SOAP, FTP, JDBC, Mongo DB, LDAP, JMS, AJP, TCP sowie SMTP, POP3, IMAP und deren verschlüsselte Brüder. Der Schwerpunkt liegt sicher auf dem Lasttest an Webanwendungen. So existieren für das beliebte Blogsystem Wordpress fertige Jmeter-Testpläne [3].

Als Installationsvoraussetzung nennt die Dokumentation eine Java-Laufzeitumgebung (mindestens Version 6, aber auch 8) und passende Treiber für die anzusprechenden Systeme. Die Funktionalität von Jmeter ist jedoch über Skripte in den verschiedenen Programmiersprachen und über Plugins [4] zum Beispiel für Selenium oder Hadoop-HDFS erweiterbar.

Nach Testplan handeln

Der Anwender ruf das Tool mit »jmeter.sh« (unter Windows: »jmeter.bat« ) im Verzeichnis »$JMETER_HOME/bin« auf. Dort führt es auch die Protokolldatei »jmeter.log« , die bei Fehlern zu analysieren wäre. Nachdem Jmeter gestartet ist, benötigt der Anwender einen Testplan. Dazu kann er fertige Vorlagen abändern, die im Verzeichnis »bin\templates« oder »printable_docs\demos« liegen. Am einfachsten rufen er »File | Templates« auf und wählt aus den angebotenen Vorlagen »Building a Web Test Plan« aus. Die Beispielvorlage setzt zwei Anfragen an den Host http://jmeter.apache.org und die Seiten »/« und »/changes.html« ab und stellt das Ergebnis als Graph dar.

Der zweite Weg zu einem Testplan ist, ein passendes Modell von Grund auf selbst anzufertigen. Testpläne sind in einem XML-Format ohne XSD-Schema verfasst. Es lässt sich aber zur Dokumentation per Stylesheet (»extras/schematic.cmd Testplan.jmx« ) in HTML umwandeln.

Ein mit Jmeter gelieferter Rekorder weist den dritten und meist komfortabelsten Weg zu einem Testskript. Zu Beginn trägt der Anwender in seinem Webbrowser den Jmeter-Server-Proxy mit Port »8888« und als »localhost« ein. Dann ruft er die Vorlage für den Testskript-Rekorder auf und startet ihn. Der zeichnet nun alle Aufrufe auf, die der User im Browser absolviert. Er kann manuell das Element Testskript-Rekorder dem Icon-Workbench hinzufügen mit »Add | Non-Test Elements | HTTP(S) Test Script Recorder« . Das ist vor allem bei komplexeren Seitenaufrufen mit Anmeldung hilfreich.

Nachdem die Aufzeichnung beendet ist, lassen sich die Seitenaufrufe, ähnlich wie bei den beiden anderen Wegen, in Richtung des gewünschten Ablaufs trimmen – also in erster Linie mit Variablen konfigurierbar machen, um den Testplan beispielsweise für verschiedene Umgebungen und Hostnamen mit passenden Parametern aufzurufen (Abbildung 1).

Abbildung 1: Ein einfacher Webtestplan mit Konfigurationselementen.

Testpläne erweitern

Die Anzahl der simulierten Nutzer legt Jmeter in Thread Groups mit einer eventuell Warmlauf- oder Wartezeit an. Die eigentlichen Anfragen heißen bei Jmeter Sampler. Deren Ergebnisse sollte der Tester durch Assertion auf Erfolg prüfen, um technische und fachliche Fehler unterscheiden zu können. Auch die Nutzung von Cookies, Logins und das Ausfüllen von Formularen sind möglich.

Die Logic Controller steuern die Abarbeitung einzelner Teile des Testplans. Das Laufzeitverhalten der einzelnen Threads lässt sich per Konfiguration beeinflussen. Die Listener-Elemente stellen die Testergebnisse als Grafik oder Tabelle dar (Abbildung 2). Parameter legt der Tester entweder als benutzerdefinierte Konfigurationselemente (im GUI: »User Defined Variables« ) am Anfang des Testplans fest oder gibt sie Jmeter als Umgebungsparameter mit. Im ersten Fall referenziert zum Beispiel »${host}« den Rechnernamen in anderen Elementen. Im zweiten Fall, bei »jmeter -Jhost=www.yyy.com« , übergibt man den Parameter mit »${__property(host) }« (ein per »$Variable« referenziertes Java-Property).

Die große Kunst besteht jetzt darin, den Testplan flexibel erweiterbar und einfach konfigurierbar zu gestalten, indem der Benutzer die Verbindungsparameter und Stellgrößen in Variablen auslagert [5]. Diese kann er leicht vor dem Aufruf anpassen, ohne jedes Mal den Testplan ändern zu müssen.

Abbildung 2: Der Ergebnisgraph eines fortgeschrittenen Webtestplans.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Apache Jmeter 2.8 mit massig Threads

    Apache Jmeter, ein Tool für Lasttests von Serveranwendungen, ist in Version 2.8 mit vielen Verbesserungen verfügbar.

  • JMeter 2.4 testet auch SMTP-Server

    Apache JMeter, ein vielseitiges Testwerkzeug für Server, ist in Version 2.4. mit zahlreichen Neuerungen erhältlich.

  • Testwerkzeug JMeter 2.6 verbessert viele Details

    Apache JMeter, ein Java-Programm zum Testen von Server-Anwendungen, ist in Version 2.6 verfügbar.

  • Spitzenleistung

    Wie geht ein Systemarchitekt vor beim Design eines dynamischen Webauftritts, bei dem binnen kurzer Zeit achtstellige Seitenabrufe zu erwarten sind? Wenn zudem 38000 gechipte Marathonläufer die dahinterliegende Datenbank in Echtzeit füttern, ahnt man: Das Ganze muss gleich beim ersten Versuch klappen.

comments powered by Disqus

Ausgabe 11/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.