JMeter
JMeter
http://jakarta.apache.org/jmeter/
Apache-Lizenz 2.0
2.5.1
06.12.2011
Apache JMeter ist eine Open-Source Java Applikation. Es lassen sich Lasttests auf verschiedenen Ressourcen durchführen.
Es unterstützt folgende Servertypen:
- Web - HTTP, HTTPSs
- SOAP
- Database via JDBC
- LDAP
- JMS
- Mail - POP3(S) and IMAP(S)
JMeter benötigt eine Java Virtual Machine 1.5 oder höher. Es ist eine Stand-Alone Applikation, welche auf einem beliebigen Betriebssystem läuft. Es gibt verschiedene Möglichkeiten JMeter ausführen: GUI Mode, Non-GUI Mode, Server Mode. Der Server-Mode ist z. B. für verteiltes Testen interessant.
Um die hier untersuchte Version 2.5.1 zu verwenden, muss das Archiv heruntergeladen werden. Das Release beinhaltet bereits Dateien, die gebraucht werden um die meisten Tests durchzuführen.
Nach dem Entpacken startet man die ApacheJmeter.jar
Auf der Apache JMeter Projekt Seite findet man ein englischsprachiges Benutzerhandbuch (User's Manual). Die Funktionen von JMeter werden dort detailliert beschrieben und erklärt.
Die Projektseite von JMeter ist gut strukturiert und besitzt einen übersichtlichen Aufbau.
Es gibt verschiedene Quellen um sich bei Problemen zu behelfen. Das JMeter Wiki (http://wiki.apache.org/jmeter/), JMeter FAQ(http://wiki.apache.org/jmeter/JMeterFAQ) sowie eine Mailinglist.
Eine Einarbeitung in JMeter ist erforderlich. Dank der grafischen Oberfläche und Dokumentation ist dies aber in kurzer Zeit möglich.
Um JMeter in ANT zu integrieren, muss zuerst die ant-jmeter.jar heruntergeladen und in das ANT Bibliotheksverzeichnis kopiert werden.
In dem ANT-Script muss nun ein task 'jmeter' definiert werden.
Nun kann man mit dem 'jmeter' Tag und gesetzten Eigenschaften die Tests ausführen.
Für die Integration in Maven steht das Maven-Plugin 'maven-jmeter-plugin' zur Verfügung. Zuerst sollte man in die Projekt pom.xml die Abhängigkeit eintragen.
Im Anschluss sollte ein neues Verzeichnis jmeter als Unterverzeichnis von src/test erstellt werden. In dieses Verzeichnis legt man die JMeter Tests ab.
In einer jmeter.properties Datei (src/test/jmeter) können Einstellungen vorgenommen werden. Diese kann aus dem JMeter Installationsverzeichnis gegebenenfalls kopiert werden.
Das Jenkins Plugin 'Performance Plugin' ermöglicht die Integration von JMeter Berichten. Es ist einfach, über die Jenkins Systemeinstellungen zu installieren.
In der Jobkonfiguration kann dann der Pfad zu den JMeter Berichten eingegeben werden.
In dem folgendem Beispiel soll eine Funktion von JMeter anhand eines Lasttests für eine JSF Anwendung dargestellt werden.
Dazu werden zwei Fälle dargestellt: Zum einen eine ungeschickte Datenbankabfrage wobei die gesamte Tabelle gelesen wird und zum Vergleich die Abfrage in der gewünschte Datensatz abgefragt wird.
Unter Windows führt man die 'jakarta-jmeter-2.5.1\bin\jmeter.bat' aus und startet somit die JMeter Oberfläche.
Zu Beginn muss erst eine Thread-Gruppe erstellt unter dem Testplan erstellt werden. Diese dient zur Simulation der Benutzer.
Da die Seite, die getestet werden soll, geschützt ist, muss JMeter sich authentifizieren. Hierzu muss ein HTTP Cookie Manager erstellt werden: Hinzufügen -> Konfigurations Element -> HTTP Cookie Manager.
Es müssen zusätzlich zwei HTTP Requests hinzugefügt werden: Hinzufügen -> Sampler -> HTTP Request. Der erste dient zur Authentifizierung. Der zweite ruft lediglich die zu testende URL auf.
HTTP Request zuständig für den Login; Aufruf der URL mit Username und Passwort als Parameter
Nun muss noch ein Listener hinzugefügt werden. Dieser ist für die Auswertung zuständig und zeigt das Resultat an (z. B. Graph, Tabelle)
Möglichkeiten das Resultat anzuzeigen
Hier wurde 'Graph' als Listener ausgewählt.
Hier sind zum Vergleich die Ergebnisse des Lasttests. Bei dem 1. Fall, wurde der gewünschte Datensatz aus der Datenbank abgefragt. Im 2. Fall sieht das Resultat auf der Website zwar identisch aus, es wurde jedoch die unnötigerweise die ganze Tabelle gelesen.
1. Fall: ein Datensatz - 2. Fall: ganze Tabelle gelesen
Test auf MySQL Datenbank
In der folgenden Grafik kann man den Unterschied bei der Reaktionszeit erkennen, wenn bei gleicher Benutzeranzahl anstatt eines Datensatzes, die ganze Tabelle abgefragt wird.
1 Datensatz/ganze Tabelle bei gleicher User Anzahl
Hierbei wurde ein einfacher JMeter Testplan erstellt. Dieser beinhaltet die Konfiguration der genutzten MySQL Datenbank, sowie jeweils ein JDBC-Request.
Diese führen auf die konfigurierte Datenbank die gewünschten Abfragen aus. Damit das Ergebnis angezeigt werden kann, muss noch ein Listener hinzugefügt werden.
In diesem Beispiel wurde der Listener Graph gewählt.
Testplan
Zurück zur Werkzeugübersicht
Zurück zur CSI-Hauptseite