Für unsere Last- und Performancetests verwenden wir Apache JMeter 5.0 mit zusätzlichen Plugins, sowie Java 8 und Telerik Fiddler 4.

Wir haben dazu verschiedene Usecases modelliert, um das Verhalten unserer Kunden möglichst realistisch zu simulieren. Es gibt z.B. die Anwendungsfälle, in denen ein Kunde den Onlineshop besucht, verschiedene Produkte durchstöbert und diese auf Rechnung kauft oder Anwendungsfälle, in denen der Kunde nur verschiedene Produkte durchstöbert, bis hin zur Betrachtung der Produkt-Detailseite (PDS).

Usecase „stöbern“ (die Rauten stellen bedingte Entscheidungen dar)

Nach jedem fachlichen Seitenaufruf verwenden wir eine „thinktime“. Diese modelliert dabei, dass nach dem Aufruf eines Moduls der Kunde immer noch einige Zeit wartet, um sich Produkte anzusehen, sich die nächste Tätigkeit zu überlegen oder Formulare auszufüllen.

Die verwendeten Testdaten werden bei jedem Durchlauf eines Usecases dynamisch zugesteuert. So werden z.B. bei jedem Stöbern immer andere Produkte betrachtet oder bei Usecases, die eine Bestellung tätigen, werden immer unterschiedliche Produkte in den Warenkorb gelegt und gekauft. Dies verhindert, dass unsere verschiedenen Caching-Mechanismen der Onlineshops unrealistisch verwendet werden, indem z.B. immer das gleiche Produkt gekauft wird.

Um zu ermitteln wieviel Last wir erzeugen wollen (im folgenden Lastniveau), und wie sich diese Last auf die verschiedenen Usecases verteilen soll berechnen wir ein Mengengerüst.

Dazu berechnen wir zunächst ein „pacing“ für die Usecases und erweitern das Testskript entsprechend. Das „pacing“ kann auch als „technische Wartezeit“ bezeichnet werden, und ermöglicht es, einen kontinuierlichen Durchsatz zu erreichen.

Lastprofil für einen Stresstest

Für die Testdurchführung verwenden wir mehrere Lastgeneratoren, welche die eigentliche Last aufbauen und die Antwortzeiten unserer Onlineshops messen. Diese Lastgeneratoren übermitteln die Messwerte dann an einen zentralen Controller.

Nach Ende der Testdurchführung analysiert die IT-Qualitätssicherung zusammen mit dem Entwicklungsteam des Onlineshops und Serveradministratoren die Testergebnisse.

Responsetime (Durchschnitt)
Responsetime (Perzentile)

Neben den Responsetimes der einzelnen Requests sind auch die Messwerte (CPU-Auslastung, RAM, Netzwerkauslastung, etc.) der einzelnen Server in der Testumgebung wichtig.

Auf diese Weise haben wir schon einige Performanceengpässe gefunden und beseitigt, bevor wir eine neue Softwareversion unseren Kunden zur Verfügung gestellt haben.

Christian Kuth

techblog@walbusch.de

Kontakt Blog

Wenn Sie Fragen oder Feedback zum Technologie-Blog oder zu einem unserer Beiträge haben, können Sie sich gerne per Mail an unser Technologie-Blog Team wenden!

E-Mail: techblog@walbusch.de