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.