logo

JMeter Tutorial 3: Test Script Recording

Von am 28.11.2018

Wozu Script-Recording?

In der Praxis ist es oft sehr mühsam und vor allem kompliziert und zeitaufwändig, Testpläne manuell in JMeter zu schreiben. Vor allem dann, wenn komplexe Vorgänge getestet werden, bei denen auch viele Hintergrundprozesse laufen, wie beispielsweise Authentifizierungen, Buchungen oder auch ganze Kaufabwicklungen. Hierbei werden Cookies und Sessions zwischengespeichert, Eingaben überprüft, Datenbankaufrufe getätigt, Login-Daten verschlüsselt und an den Server geschickt, u.v.m. Um die Prozedur, dafür einen Testplan zu erstellen, einfacher zu gestalten, gibt es in JMeter ein Recording-Tool, das die Browseraktionen aufzeichnet und als JMeter-Testplan abspeichert.

Proxy-Server-Architektur

Bevor wir aber loslegen, müssen wir aber noch ein paar Vorkehrungen hinsichtlich unserer Infrastruktur treffen. Denn wenn wir jetzt die JMeter-Recording-Funktion als Client ausführen, würden wir nicht weit kommen. Die Firewall würde uns daran hindern. Wenn wir in JMeter einen Proxy-Server simulieren, kann das Programm problemlos mit dem Server kommunizieren und all unsere Browseraktionen aufzeichnen, da die Firewall umgangen wird.
Proxy-Server Architektur Quelle: https://en.wikipedia.org/wiki/Proxy_server
In der Praxis ist das dann so: JMeter simuliert einen Proxyserver und wir als Tester führen im Browser eine Interaktion durch, also senden einen Request. JMeter erkennt das und speichert diese Aktion im Testplan ab. Schließlich antwortet der Server mit einer Response und JMeter speichert auch diesen ab. Auf diese Art und Weise können wir ganz einfach Testpläne automatisiert aufzeichnen.

Vorbereiten des Testplans

Zunächst benötigen wir in JMeter, wie gewöhnlich, eine Thread-Group. In unserem Fall wollen wir eine Authentifizierung testen. Ich verwende dafür meinen Account von arduino.cc. Natürlich steht es Dir frei, welchen Account du für deinen Test verwenden willst. In diese Thread-Group geben wir nun einen Recording-Controller (Hinzufügen / Logic Controller / Recording Controller), damit JMeter weiß, an welcher Stelle im Testplan der aufgezeichnete Traffic gespeichert werden soll. Damit wir unsere Ergebnisse später auch betrachten können, verwenden wir wieder einen Listener. In diesem Fall ist der View-Results Tree ausreichend. Nun kommen wir aber zum interessanteren Teil, nämlich zum HTTP(S) Test Script Recorder. Diesen finden wir durch Rechtsklick auf das Root-Element (Testplan) unter: „Hinzufügen / Nicht-Test-Elemente / HTTP(S) Test Script Recorder. Den Port stellen wir hier auf 8888. Interessant für uns ist nun auch noch der Target-Controller. Hier stellen wir ein, in welchen Recording-Controller unsere Testschritte gespeichert werden. Die Gruppierung stellen wir auf ,,Put each group in a new Transaction Controller“. Dadurch werden später zusammengehörige Samples (alle Samples vom selben Seitenaufruf) gruppiert in einer eigenen Gruppe gespeichert. Das war’s auch schon wieder mit unseren Einstellungen. Hier sind wir soweit mal fertig. Unser Testplan sollte nun wie folgt aussehen:
Testplan mit HTTP(S) Test Script Recorder
Wenn wir nun testweise unser Recording starten, bekommen wir eine Fehlermeldung mit dem Hinweis, dass wir vorerst noch ein bestimmtes Zertifikat installieren müssen. Dieses Zertifikat dient als Sicherheitsgarantie. Wir benötigen es, damit unser JMeter-Proxy-Server HTTP(S)-Traffic entschlüsseln darf. Wenn wir nun in unser BIN-Verzeichnis wechseln, sehen finden wir bereits unser Zertifikat in Form einer Datei mit dem Namen ApacheJMeterTemporaryRootCA.crt vor. Standardmäßig ist dieses Zertifikat für 7 Tage gültig. Nun müssen wir dieses Zertifikat noch im Browser installieren. Dazu wechseln wir in Firefox und öffnen den Punkt „Einstellungen / Datenschutz und Sicherheit“. Hier finden wir ganz unten den Punkt „Zertifikate“. Wenn wir uns diese anzeigen lassen, können wir hier ein neues Zertifikat importieren. Zu guter Letzt müssen wir noch den Browser entsprechend konfigurieren. Unter Einstellungen suchen wir nach „Proxy“ und stellen auch hier den Port auf 8888.
Proxy-Einstellungen in Firefox

Aufnahme starten

Nun ist unser Proxy-Server konfiguriert und wir haben damit alle notwendigen Einstellungen getroffen, sodass wir den Testplan endlich aufzeichnen können. Dazu betätigen wir den Play-Button im http(S)-Test-Script-Recorder und führen im Browser eine Login-Aktion aus. Wenn Du alles richtig gemacht hast, erscheinen nun in der Thread-Group eine ganze Menge an Requests. Viele davon beziehen sich auf Bild-, CSS-, HTML-, JS-Dateien usw… Die einzelnen Samples beinhalten jeweils einen http Header Manager. Darin befinden sich einige Metadaten. Besonders erwähnenswert ist der HTTP-Authorization-Manager. Hier befinden sich unsere Anmeldedaten in verschlüsselter Form.
Aufgezeichneter Testplan

Weitere Tutorials

JMeter Tutorial 1: Grundlagen, Listeners und Assertions JMeter Tutorial 2: DB, Web-Services und FTP

The comments are closed.