JMeter

Name

JMeter

Homepage

http://jakarta.apache.org/jmeter/

Lizenz

Apache-Lizenz 2.0

Untersuchte Version

2.5.1

Letzter Untersuchungszeitpunkt

06.12.2011

Kurzbeschreibung

Apache JMeter ist eine Open-Source Java Applikation. Es lassen sich Lasttests auf verschiedenen Ressourcen durchführen.

Fazit

Einsatzgebiete

Es unterstützt folgende Servertypen:

Einsatzumgebungen

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.

Installation

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

Dokumentation

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.

Wartung der Projektseite

Die Projektseite von JMeter ist gut strukturiert und besitzt einen übersichtlichen Aufbau.

Nutzergruppen und Support

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.

Intuitive Nutzbarkeit

Eine Einarbeitung in JMeter ist erforderlich. Dank der grafischen Oberfläche und Dokumentation ist dies aber in kurzer Zeit möglich.

Automatisierung

ANT
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.
Maven
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.
Jenkins
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.



Einführendes Beispiel

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

Detaillierte Beschreibung

Literatur



Zurück zur Werkzeugübersicht
Zurück zur CSI-Hauptseite