Portfolio |

JMeter mit Selenium – Macht das Sinn? Teil 2

Im zweiten Teil seines Blogbeitrags zu Selenium und JMeter geht Matthias Leiwelt auf die Testfallerstellung, die Testdurchführung und auf die Auswertung beider Tests ein. Darüber hinaus wirft er einen Blick auf die Vor- und Nachteile bei der Verwendung der Tools.

Im ersten Teil des Blogbeitrages wurde über die theoretischen Grundlagen von JMeter mit Selenium, die Begrifflichkeiten und die benötigen Komponenten gesprochen. Im zweiten Teil geht Matthias Leiwelt auf die Testfallerstellung, die Testdurchführung und auf die Auswertung beider Tests ein. Darüber hinaus wirft er einen Blick auf die Vor- und Nachteile bei der Verwendung der Tools.

Vorstellung des Testobjekts

Das Testobjekt ist ein Demo-Onlineshop, über den elektronische Artikel erworben werden können: https://advantageonlineshopping.com/#/


Abbildung 1: Das Testobjekt

Beschreibung des Testfalls

Im Folgenden wird ein Testfall „AddSpeakerToCart“ beschrieben, welcher für die Umsetzung der Skripte verwendet wird:

  1. Aufruf der Startseite: https://www.advantageonlineshopping.com/#/
  2. Aufruf der Seite „Speakers“
  3. Auswahl eines Speakers mit dem Namen „BOSE SOUNDLINK BLUETOOTH SPEAKER III“
  4. Auswahl einer Farbe und Angabe einer gewünschten Menge
  5. Klick auf den Button „ADD TO CART“
  6. Klick auf den Button „Checkout“

Fallbeispiel – Welche Ergebnisse sind zu erwarten?

Aufgrund der Ausrichtung von Selenium als funktionales Testing-Tool könnte angenommen werden, dass sich Selenium nicht für Last- und Performancetests eignet. Doch wie verhält es sich mit der Verwendung von JMeter als Lasttest-Tool mit integriertem Selenium WebDriver?

Die Erwartungserhaltung gegenüber der Skriptausführung mit JMeter ohne Selenium ist, dass die Antwortzeiten der HTTP Requests in JMeter etwas schneller sind als die Webdriver-Requests mit Selenium. Dies liegt daran, dass nachgelagerte Elemente und die Pagerendering- und Synchronisierungszeiten der Seitenelemente ohne Selenium nicht gemessen werden.

Im nächsten Punkt wird diese Annahme beziehungsweise Erwartungshaltung durch ein Experiment auf Richtigkeit geprüft.

Durchführung eines einfachen Tests – Testausführung mit JMeter

In der folgenden Abbildung ist ein Testplan mit den jeweiligen Komponenten abgebildet. Die „Ultimate Thread Group“ beinhaltet die einzelnen Transaktionen mit den dazugehörigen Requests. Das Skript beinhaltet vier Transaktionen, welche alle backendseitig via HTTP Requests ausgeführt werden:

  1. Aufruf der Startseite (01_Startpage)
  2. Navigation zur Produktkategorie „Speakers“ (02_Speakers)
  3. Auswahl eines Bose-Lautsprechers (03_SelectBoseSpeakers)
  4. Auschecken des Warenkorbs (06_Checkout)


Abbildung 2: Transaktionen im JMeter-Skript

Während der Testdurchführung können die Antwortzeiten über ein zusätzliches JMeter-Plugin namens „3 Basic Graphs“ (https://jmeter-plugins.org/files/packages/jpgc-graphs-basic-2.0.zip)  grafisch dargestellt und beobachtet werden. Das Plugin kann über den Plugin Manager installiert werden.


Abbildung 3: Grafische Darstellung von Antwortzeiten in JMeter

Testausführung mit JMeter und Selenium

In der folgenden Abbildung ist der erste Testschritt „01_Startpage“ dargestellt.


Abbildung 4: Selenium-Skript in JMeter

Darin ist der Selenium-Code enthalten, durch welchen die Startseite des Demo-Onlineshops aufgerufen wird. Die Antwortzeit wird durch die im Code eingeflochtenen Transaktionsklammern „WDS.sampleResult.sampleStart();“ und „WDS.sampleResult.sampleEnd();“ gemessen.

Szenariodesign und Mengengerüst

Das Mengengerüst besteht aus 10 virtuellen Usern (10 Threads), welche sukzessive in einem Drei-Sekunden-Intervall gestartet werden. Nach 30 Sekunden befinden sich alle virtuellen User auf dem System und der Test läuft für weitere fünf Minuten unter konstanter Last. Das heißt, nachdem ein virtueller User eine Iteration abgeschlossen hat, beginnt kurz darauf ein neuer Durchlauf für diesen User. Ist die Zeit abgelaufen, wird der Test beendet.


Abbildung 5: Mengengerüst

Auswertung – Vergleich der durchschnittlichen Antwortzeiten

In den folgenden zwei Diagrammen sind die durchschnittlichen Antwortzeiten über den gesamten Testverlauf für jeden Testschritt abgebildet. Es ist deutlich zu erkennen, dass die Antwortzeiten für die Testdurchführung in JMeter (Abbildung 6) kürzer sind als die Zeiten in JMeter-Selenium (Abbildung 7).


Abbildung 6: Durschschnittliche Antwortzeit in JMeter


Abbildung 7: Durchschnittliche Antwortzeit – JMeter mit Selenium

Ein Vergleich der durchschnittlichen Antwortzeiten beider Skripte zeigt folgendes Ergebnis:


Abbildung 8: Vergleich durchschnittlicher Antwortzeiten

Die Testschritte „Auswahl einer Farbe & Menge“ und „Klick auf ADD TO CART“ werden bei JMeter backendseitig nicht betrachtet, weshalb keine Antwortzeit gemessen wird. Es ist deutlich zu erkennen, dass die Antwortzeiten aller Transaktionen bei JMeter mit Selenium länger dauern als ohne Selenium-Integration. Bei den zwei Testschritten „Aufruf Startseite“ und „Klick auf Checkout“ ist der zeitliche Unterschied am höchsten.

Allgemeine Vor- und Nachteile bei Verwendung von JMeter mit integriertem Selenium Webdriver

Für die Verwendung beider Tools gibt es Vor- und Nachteile. Einige davon sind in der folgenden Tabelle gelistet.

Fazit und Empfehlung

Die Kombination von JMeter mit Selenium ist zu empfehlen, wenn das clientseitige Antwortverhalten einer Webanwendung simuliert werden soll. Durch die Pagerendering-Zeiten des Browsers sowie die Lade- und Synchronisierungszeiten der Seitenelemente, findet eine Annäherung an ein realitätsnahes Benutzererlebnis statt.

Diese Kombination ist nicht zu empfehlen, wenn eine höhere Last mit mehreren virtuellen Usern (>10 virtuelle User) erzeugt werden soll, da die Skalierbarkeit aufgrund sehr hoher CPU-Auslastung stark eingeschränkt ist. Zudem kann es zu Leistungseinbußen bzw. Verzögerungen beim Browserstart und beim Laden einzelner Ressourcenelemente wie Bilder, Javascript- und CSS-Dateien kommen.

Vom gleichzeitigen Einsatz beider Tools wird laut offizieller Selenium-Seite abempfohlen, da es hierfür nicht optimiert ist und auch mit sehr hoher Wahrscheinlichkeit keine guten Ergebnisse erzielt werden. Es stehen diverse Tools für Last- und Performancetests zur Verfügung, die diese Aufgabe besser meistern, übersichtliche Reports und Analysen erstellen und Verbesserungsvorschläge machen können. (Quelle: https://www.selenium.dev/documentation/en/worst_practices/performance_testing/)

Sie haben Fragen zum Einsatz von JMeter und / oder Selenium? Gern stehen wir Ihnen zur Verfügung und geben Tipps.