Lasttest und Performancetest mit Apache JMeter

🕒 Lesedauer: 2 Minuten

Steigende Nutzerzahlen können zum Erfolg Ihres Projekts führen – oder zum Albtraum Ihrer IT-Infrastruktur. Wenn Systeme unter der Last zusammenbrechen, stehen nicht nur technische, sondern auch finanzielle Verluste auf dem Spiel.

Mit Apache JMeter, einem der führenden Tools für Last- und Performancetests, können Sie genau das verhindern. Egal ob Web-Anwendungen oder APIs – JMeter hilft Ihnen, die Belastungsgrenzen Ihrer Systeme aufzudecken und gezielt zu optimieren.

In diesem Artikel erfahren Sie, wie JMeter funktioniert, welche Features es bietet und warum es für Ihre Teststrategie unverzichtbar ist. Machen Sie Ihre Anwendungen fit für die Herausforderungen von morgen!

Image
Testautomatisierung mit JMeter

Was ist Apache JMeter?

Bei Apache JMeter handelt es sich um ein von der Apache Foundation entwickeltes Tool für Last-, Performance- und Stresstests. Die Software ist Open Source und in Java programmiert. (Zur Ausführung wird eine Java-Installation benötigt.)

Der ursprüngliche Ansatz, der beim Einsetzen von JMeter verfolgt werden sollte, war eng mit dem Testing von Web-Applikationen verbunden. Mittlerweile hat das Tool viele weitere Schnittstellen erhalten, die das Testen von weiteren Applikationsarten (wie Schnittstellen, Mailserver, Datenbanken, Verzeichnisdienste, etc.) ermöglichen. Im Folgenden zeigen wir Ihnen einige der wichtigsten Features der JMeter Software.

Was ist ein Lasttest (Load Testing)?

Der Lasttest (engl. Load Testing) oder auch Performancetest ist eine der wichtigsten nicht funktionalen Softwaretests, um die Belastbarkeit von Systemen, wie beispielsweise Web-Applikationen, zu prüfen.

Jedes Softwaresystem ist für eine bestimmte Arbeitslast konzipiert. Manche dieser Softwaresysteme sollen dabei mehreren Nutzern gleichzeitig dienen, wie es unter anderem bei Content-Management-Systemen der Fall ist. Andere müssen zusätzlich eine Flut von Daten rechtzeitig bearbeiten können. Ein Ausfall solcher Systeme kann teils erheblichen Schaden oder finanzielle Verluste verursachen. Deswegen ist es sehr wichtig, dass diese vor ihrem Einsatz einer Reihe von Lasttests unterzogen werden.

In einem Lasttest werden im zu testenden System, wie der Name schon sagt, Lasten erzeugt. Ziel ist es zu sehen, ob das System diese Last bewältigen kann. Es wird beispielsweise getestet, ob eine Webseite mehreren Besuchern gleichzeitig in akzeptabler Zeit Antworten schicken kann oder ein Textverarbeitungsprogramm in der Lage ist, eine große Datei öffnen zu können.

 

 

Allgemeine Funktionen von Apache JMeter

Verschiedene Timer

Echte User klicken nicht gleichmäßig über alle Seiten hinweg: Sie lesen den Inhalt einer Seite und fahren dann fort. Dies kann mit verschiedenen Timern (mit fest eingegebenen oder auch zufälligen Zeitintervallen) simuliert werden.

Pre- und Post-Processing

Pre-Processors führen Tasks aus, bevor ein Abruf geschieht, Post-Processors danach. Pre-Processors dienen also der Vorbereitung eines bestimmten Aufrufs, beispielsweise indem sie Daten für den Aufruf erhalten. Post-Processors machen hingegen etwas mit den erhaltenen Daten aus dem Abruf. Ein häufiges Beispiel: Zur Spamvermeidung ändern sich unsichtbare Formularinhalte ("nonce" = used only once), die dann vor jedem Absenden neu abgerufen werden müssen. Dies geschieht per Pre-Processor. Vor allem für die Nutzung von APIs gibt es den JSON-Extractor, der Inhalte aus einem JSON-Objekt extrahieren kann. Werte wie "nonce" fallen hierbei unter die Kategorie "Correlation" (https://www.blazemeter.com/blog/correlation-in-jmeter).

Gibt es ein Reporting-Feature in Apache JMeter?

Das Thema Reporting ist insbesondere für Last-, Performance- und Stresstests nötig. Hier wird mit großen Datenmengen gearbeitet, welche mit statistischen Methoden ausgewertet werden. JMeter bietet die Möglichkeit, einfach und schnell dynamische Reports, Diagramme und Graphen aus den erfassten Messungen zu generieren. Nachfolgend sind vier Beispiele aufgelistet.

 

Image
jmeter-apdex-tabelle-request-summary-graph.png
Bild: JMeter APDEX-Tabelle. (Klicken zum Vergrößern) [Quelle: Apache Software Foundation]

Die APDEX-Tabelle (Application Performance Index) ist ein Standard, um die Nutzerzufriedenheit aus den Daten abzulesen. Ein APDEX wird für jede Transaktion mit den jeweiligen Schwellenwerten berechnet. Im Request-Summary-Graphen wird der prozentuale Anteil an erfolgreich bzw. nicht erfolgreich durchgeführten Transaktionen dargestellt.

Image
jmeter-errors-tabelle.png
Bild: JMeter Errors-Tabelle. (Klicken zum Vergrößern) [Quelle: Apache Software Foundation]

Mithilfe der Errors-Tabelle wird die Gesamtanzahl an Fehlern und deren prozentualer Anteil aus der Gesamtanzahl an Requests aufgezeigt.

 

Image
jmeter-statistics-tabelle.png
Bild: JMeter Statistics-Tabelle. (Klicken zum Vergrößern) [Quelle: Apache Software Foundation]

Die Statistics-Tabelle ist eine Übersicht aller Metriken einer Transaktion (eingeschlossen der drei konfigurierbaren prozentualen Spalten).

 

Image
jmeter-antwortzeiten-diagramm.png
Bild: JMeter Antwortzeiten Diagramm. (Klicken zum Vergrößern) [Quelle: Apache Software Foundation]

Ein zoombares Diagramm mit dem sämtliche Transaktionen nach folgenden Ereignissen angezeigt werden: Antwortzeiten während einer Zeitperiode; Datendurchfluss während einer Zeitperiode; Latenzen während einer Zeitperiode; Hits pro Sekunde; Transaktionen pro Sekunde.

 

Webinar: Continuous Performance Testing in DevOps (JMeter, GitHub Actions, AWS)

 

Apache JMeter mit Selenium?

Bislang weisen wir immer wieder darauf hin, dass sich Selenium nicht für Last- und Peformancetests eignet. Aber manchmal wird doch mehr benötigt als JMeter allein schaffen kann. Auf der Website von Blazemeter wird eine Schritt-für-Schritt Anleitung vorgestellt, wie die Integration beider Tools gelingen kann. Aber ist sie notwendig und was wird damit erreicht?: Damit wird die Infrastruktur geschaffen, Lasttests/Performancetests durchzuführen, wo mit einem "echten" Webbrowser interagiert wird und wiederum Selenium WebDriver durch JMeter aufgerufen wird. Diese Integration verschafft den Vorteil beim Lasttest, dass auch die Rendering-Zeiten vom Webbrowser berücksichtigt werden, die sonst nicht in die JMeter-Statistik einfließen. Für Playwright gibt es dazu bisher nur ein kaum genutztes experimentelles Plugin. Sollte dieses Feature wichtig sein, sollten Sie einen Blick auf k6 werfen, denn dies unterstützt ein gleichzeitiges Lasttesten über API und den Browser bereits von Hause aus.

 

Fazit - Lasttests für Webprojekte bestimmen den Geschäftserfolg

JMeter ist ein hervorragendes Tool für Last- und Performancetests, das allem durch die Anwendungsbreite punktet: Heute können Sie damit Lasttests mit Webseiten durchführen, morgen Stresstests mit APIs sowie die Performance Ihrer Datenbanksysteme testen. Darüber hinaus haben Sie vielfältige Möglichkeiten, Reports zu erstellen - und diese sind für die Interpretation der Ergebnisse essenziell. Soll es außerdem eine Open Source Software sein, die von einer bekannten Organisation verwaltet wird, kommen Sie an Apache JMeter nicht vorbei.

 

 

FAQ - JMeter

Was ist Apache JMeter und wofür wird es verwendet?

Apache JMeter ist ein Open Source Tool zur Durchführung von Last- und Performancetests. Entwickelt von der Apache Software Foundation, ermöglicht es Benutzern, verschiedene Webanwendungen und Protokolle wie HTTP, FTP, JDBC und mehr zu testen. Mit JMeter können Testergebnisse analysiert und Testpläne erstellt werden, um die Leistung von Anwendungen unter verschiedenen Lastbedingungen zu simulieren.

Wie funktioniert JMeter?

Die Funktion von JMeter besteht darin, virtuelle Benutzer zu simulieren, die gleichzeitig Anfragen an die getestete Anwendung senden. Diese Anfragen werden durch Sampler generiert, die spezifische Protokolle verwenden, um die Kommunikation mit der Anwendung zu ermöglichen. Das Tool kann auch Threads konfigurieren, um die Anzahl der gleichzeitigen Benutzer zu steuern und verschiedene Szenarien zu testen.

Was sind die Vorteile von Apache JMeter?

Die Vorteile von Apache JMeter sind folgende: Zunächst seine Plattformunabhängigkeit, da es vollständig in Java entwickelt wurde. Darüber hinaus ist es Open Source, bietet eine grafische Benutzeroberfläche, die die Erstellung und Verwaltung von Testplänen erleichtert, unterstützt eine Vielzahl von Protokollen und bietet umfangreiche Plugins zur Erweiterung der Funktionalität.

Wie erstelle ich einen Testplan in JMeter?

Um einen Testplan zu erstellen, öffnen Sie die grafische Benutzeroberfläche und fügen eine Threadgruppe hinzu. Innerhalb dieser Threadgruppe können Sie Sampler hinzufügen.

Was ist Distributed-Testing?

Distributed-Testing ist, wenn Tests in einem verteilten System oder über mehrere Netzwerkstandorte hinweg durchgeführt werden. Dabei werden verschiedene Testressourcen genutzt, um die Effizienz und Effektivität der Testprozesse zu erhöhen. Dies kann beispielsweise in Cloud-Umgebungen oder bei verteilten Teams der Fall sein, wo Tester und Testressourcen sich nicht am gleichen physischen Standort befinden.
Die Vorteile umfassen eine schnellere Testdurchführung, da Tests parallel auf mehreren Knoten oder Maschinen ausgeführt werden können. Dies ermöglicht eine umfassende Abdeckung und die gleichzeitige Durchführung von Tests in unterschiedlichen Umgebungen oder Konfigurationen. Zudem können durch den Einsatz von verteilten Testframeworks unterschiedliche Aspekte der Software unter realistischen Bedingungen getestet werden, was zu einer besseren Qualität des Endprodukts beiträgt.
Allerdings bringt Distributed-Testing auch Herausforderungen mit sich, wie die Notwendigkeit einer stabilen Netzwerkverbindung, das Management von Testdaten über verschiedene Standorte hinweg und die Synchronisation von Testergebnissen. Um diese Herausforderungen zu bewältigen, sind geeignete Werkzeuge und Strategien erforderlich, um eine reibungslose Koordination und Kommunikation zwischen den Teammitgliedern und den Testumgebungen zu gewährleisten.

JMeter vs. k6 vs. Gatling - was ist das richtige Performance Testing Tool für mein Projekt? 
 

Das ausführliche Inhaltsverzeichnis mit Timestamps zur Folge finden Sie hier: Podcast #48 Performance Testing Tools: k6, JMeter oder Gatling?
 

Veröffentlicht am 01.Oktober 2024

Aktualisiert am 30.Januar 2025

Wilson Campero

Agile, Teststrategie, DevOps, Testautomatisierung, Testmanagement

Als Experte für Softwarequalität und ISTQB Certified Full Advanced Tester informiere ich Sie auf Qytera.de über den aktuellen Stand der IT in Wirtschaft und Behörden zu den Themen Testautomatisierung, Performance Testing und Testmanagement. 

Testautomatisierung bedeutet für mich: 

Mehr Zeit für neue Features statt nerviger Bugs und zufriedene Kunden 🚀🚀 – und dadurch die Softwarewelt ein Stück besser zu machen

Wilson Campero kann über Linkedin kontaktiert werden:  / Wilson Campero  

Finden Sie weitere interessante Artikel zum Thema: