Die Qytera hat sich schon seit einigen Jahren auf das Thema Lasttesten und Performancetesten spezialisiert und konzentrierte sich dabei von Anfang an auf Open Source. Da war es naheliegend, dass wir bei diesem Thema bei JMeter landeten und seit der Version 3.0 immer wieder Projekte damit umsetzten. In der Zeit wandelte sich JMeter mal mehr, mal weniger. So jetzt auch mit den aktuelleren Versionen 5.5 aus Mitte 2022 und 5.6.3 aus dem Juli letzten Jahres . Hiermit möchte ich euch einige Neuerungen vorstellen und vielleicht entdeckt ihr auch für euch das neue Potenzial.
Neues rund um JMeter
Inhaltsverzeichnis
Java 17 Unterstützung
Lange hat es gedauert, bis JMeter mit einem neueren Java ohne Einschränkungen funktioniert. Denn gerade die Version 17 von Java ist im Unternehmensumfeld sehr wichtig, denn durch den LTS Support können darauf langfristige Projekte entwickelt werden, ohne den ständigen Updates ins Risiko zu laufen, dass die Applikation dadurch nicht mehr funktioniert. Gerade die vorherige offiziellen Java 8 Unterstützung, konnte schon zum Problemen in Betrieb führen, da diese Version von 2014 war und selbst die nächste LTS Version 11 von 2018 nie ganz offiziell supportet wurde. Nichtsdestotrotz sind viele Plugins immer noch mit Java 8 erstellt worden und Java 8 biete vermutlich die größte Kompatibilität. Das wird sich in Zukunft hoffentlich ändern.

Open Model Thread Group
Die Anforderungen an die Gestaltung von Performancetest-Szenarien werden immer vielfältiger und mit den bestehenden Möglichkeiten konnte man einige Szenarien kaum umsetzen. Deshalb griff man oft auf Thread Groups zurück, die von Drittherstellern bereitgestellt wurden. Mit allen Vor- und Nachteilen. Nun aber gibt es mit der JMeter Basis eine neue Open Model Thread Group die eine hohe Flexibilität zu lässt. Für mehr Details zu dem Thema Open und Closed Models haben wir einen eigenen Beitrag: Performance Testing: Ein Überblick über Closed und Open Workflow Models

Log4j
Nachdem Ende 2021 eine große Log4Shell Sicherheitslücke in der Bibliothek von log4j gefunden wurde, sind in den Softwareentwicklungsprojekten viele Aktivitäten gestartet worden, damit diese Lücke geschlossen wurde. So gut wie jedes Projekt hatte mit den Auswirkungen zu kämpfen. Auch in sehr vielen Open-Source-Projekten wurde diese Bibliothek verwendet. Leider war anfangs nicht genau klar, welche Auswirkungen die Lücke auf die Anwendungen hat. Es wurden mehrere Bugfixes in kurzer Zeit vorgenommen. Es kamen aber immer wieder weitere Sicherheitslücken hinzu, bzw. es wurden bessere Lösungen implementiert, mit diesem Umstand gut umzugehen. In JMeter 5.5 wurde nochmals ein Update auf einen neuere Version 2.17.2 dieser Bibliothek integriert, die nun gegenüber den bekannten Problemen gefixt ist.
https://builtin.com/cybersecurity/log4j-vulerability-explained
Java RegEx
Die bis dato verwendete Oro RegEx Implementierung kann durch die in Java enthaltene RegEx Implementierung ersetzt werden. Diese Option lässt sich über das JMeter Property jmeter.regex.engine mit dem Wert java ändern. Somit kann in neueren JMeter Projekten mit der Java-RegEx gearbeitet werden, aus abwärtskompatibilität aber weiterhin mit dem Oro-RegEx. Vorteile sehe ich darin, dass wir mit der Java-Internen Implementierung ressourcensparender unsere RegEx-Prüfungen erstellen können.
https://objectcomputing.com/resources/publications/sett/october-2001-regular-expressions-in-java
Kernverbesserungen mit Kotlin
Es hält in JMeter immer mehr Kotlin-Code Einzug, so dass neue Elemente, wie z.B. die schon beschriebene Open Model Thread Group, damit geschrieben wurden. Außerdem werden schon einige Kernklassen von JMeter damit implementiert. Für uns als ambitionierter Anwender kann die Diagrammbibliothek lets-plot-kotlin Neuerungen bieten, wenn wir eigene Diagramme in der Benutzeroberfläche erstellen möchten.
Weitere Verbesserungen oder Bugfixing
In die Version 5.5 sind weit über 70 Verbesserungen oder Bugfixings implementiert worden, in der Version 5.6 eben. Hier kann ich leider nicht alle Verbesserungen erwähnen, aber einige sind dennoch hervorzuheben.
Anzahl sichtbarer Zeilen bei If oder While Controllern
Damit bei längeren If oder While Controllern der gesamte Code lesbar wird, ist die Anzahl der Zeilen von 5 vergrößert worden. Nun kann je nach Fenstergröße mehr Zeilen angezeigt werden. Wie vorher kann im Code gescrollt werden, wenn die Codezeilen den sichtbaren Bereich überschreiten.

Exception bei HTTP-Samplern mit korrekter Zeit
Wird bei der Ausführung eines HTTP-Samplers eine Exception geworfen, dann wird der darin angezeigte Zeitstempel korrekt ausgegeben. Vorher war dort der 31.12.1969 gestanden. Zudem nutzen die HTTP_Sampler jetzt Caffeine für das Caching der Headers und nciht wie zuvor commons-collection4, was die Implementierungen wohl etwas verschlanken sollte.
File-Upload mit fehlende Buttons ergänzt
In der Registerkarte File-Upload des HTTP-Request Samplers wurden die fehlenden Buttons am unteren Fensterrand ergänzt, damit auch in diesem Dialog die notwendigen Funktionen zur Verfügung stehen, wie Sortierung, Einfügen aus Zwischenablage oder die Details, die einen vergrößertes Fenster zum bearbeiten öffnet.

Zusammenfassung und Fazit
Es sind einige Details verbessert worden, die als Anwender kaum auffallen, wenn man sie in diesem Moment nicht vermisst oder als Fehler erhielt. Aber die Unterstützung von Java 17 und die Open Model Thread Group machen es schon sehr sinnvoll, JMeter zu aktualisieren. Ich selbst habe es schon seit einiger Zeit im Einsatz, finde es sehr stabil und finde gerade die neue Steuerung mit der Open Model Thread Group sehr gelungen und bringe diese für meine Projekte in den Einsatz.
Alle Änderungen und Verbesserungen können in den aktuellen Releasenotes eingesehen werden: https://jmeter.apache.org/changes.html
Veröffentlicht am 10.Februar 2025
Aktualisiert am 08.April 2025

Senior Testmanager und Test Automation Engineer
Moritz Salein ist seit über 20 Jahren in der IT tätig, aber vor über 10 Jahren begann seine Passion des Softwaretestens. Seit dieser Zeit übernahm er immer mehr Aufgaben die im Softwaretest, Testmanagement und auch ganz speziell in der Testautomatisierung anfallen. Dadurch war er in den unterschiedlichsten, meist international aufgestellten Unternehmen und Projekten beschäftigt. Auch in der agilen Softwareentwicklung fand er großen Gefallen, so dass er schon seit über 8 Jahren Erfahrungen mit verschiedensten Vorgehensweisen, wie Scrum, Kanban oder SAFe sammeln konnte. Er war als Senior Testmanager und Test Automation Engineer bei Qytera tätig.