REST Assured vs. JMeter: Ein Vergleich von REST-Testwerkzeugen
Veröffentlicht: 2022-03-11Automatisiertes Testen ist eine entscheidende Komponente des Software-Qualitätssicherungsprozesses. Das Testen von Repräsentational State Transfer (REST)-APIs kann jedoch eine knifflige Angelegenheit sein. Viele, die auf das manuelle Testen von REST-APIs zurückgreifen, übersehen Details und verpassen Möglichkeiten, Zeit zu sparen.
Jeder ordnungsgemäß getestete REST-API-Dienst deckt die folgenden Bereiche ab:
- Prüfung, ob der API-Dienst den REST-Standards entspricht
- Testen von API-Service-Response-Codes
- Behauptung des Antwortinhalts des API-Dienstes
- Performance-Benchmarking des API-Dienstes
Dafür benötigen Sie die richtigen Werkzeuge. Apache JMeter und REST Assured sind zwei beliebte REST-Testtools zum Testen von REST-API-Diensten. Wie Sie sie in der Praxis einsetzen können, erfahren Sie hier und hier.
In diesem Artikel erfahren Sie die Vor- und Nachteile dieser beiden Tools und erfahren, wo sie am besten in Ihre bestehenden REST-API-Projekte passen.
Einfache Einrichtung
Es gibt eine Voraussetzung: Sowohl JMeter als auch REST Assured erfordern Java, daher muss Java auf Ihrem Computer installiert sein, um JMeter oder REST Assured auszuführen.
Die Installation von Apache JMeter ist sehr einfach: Gehen Sie auf die Download-Seite, wählen Sie die ZIP- oder TAR-Datei aus, laden Sie das Archiv herunter, entpacken Sie es und Sie können loslegen.
Wechseln Sie in den Ordner, in den Sie das Archiv entpackt haben, gehen Sie in den Unterordner bin
und führen jmeter.bat
(oder ähnlich für Ihr Betriebssystem, wenn es sich nicht um Windows handelt). Ausführlichere Informationen zum Einrichten von Apache JMeter finden Sie auf dieser Seite.
Die Installation von REST Assured ist etwas anders. REST Assured ist kein eigenständiges Tool. Es ist eine Java-Bibliothek. Um es zu verwenden, müssen Sie ein neues Java-Projekt einrichten und es als Bibliothek für Ihr Projekt einbinden. Natürlich gibt es Unterstützung für viele Build-Tools, sodass Sie Ihren Dependency-Resolver einfach auf ein öffentliches (Maven-)Repo verweisen können. Ausführlichere Informationen zur Einrichtung von REST Assured finden Sie hier.
Dokumentation
Die Apache JMeter-Dokumentation finden Sie auf der offiziellen JMeter-Website. Es bietet eine ziemlich gründliche Dokumentation von den ersten Schritten bis hin zu komplexen Funktionen wie Listenern. Außerdem finden Sie auf der offiziellen JMeter-Website Links zu einigen sehr umfangreichen Ressourcen wie Video-Tutorials. Wenn Sie weniger lesen und mehr zusehen, ist dies definitiv ein Plus für Sie.
Die REST Assured-Dokumentation sowie das Tool/die Bibliothek selbst finden Sie im Github-Repository. Es hat eine große Liste von Funktionen, die in der Online-Dokumentation aufgeführt sind, mit sehr detaillierten Erklärungen, wie man etwas erreicht. Die gesamte Dokumentation ist jedoch eine riesige Webseite – nicht die benutzerfreundlichste Art, ein Tool zu erkunden.
Automatisierte Erstellung und Wartung von REST-Tests
Apache JMeter ermöglicht Ihnen als eigenständige Anwendung mit einer grafischen Benutzeroberfläche (GUI) die Erstellung Ihrer Tests über die GUI. Dies kann besonders wegen der von JMeter eingeführten Entitätshierarchie praktisch sein – alles, was Sie in Ihrem Test erstellen, wird in einer baumartigen Darstellung in der JMeter-GUI angezeigt.
Um einen Test zu erstellen, muss man keine Programmierkenntnisse haben. Die GUI schränkt jedoch keine der Möglichkeiten bezüglich der Testplanung ein. Wenn Sie dennoch benutzerdefinierte Programmierungen/Flows hinzufügen möchten, können Sie dies mit BeanShell-Komponente(n) tun.
Wenn Sie Ihr JMeter-Projekt speichern, wird alles, was Sie erstellt haben, in einer riesigen XML-Datei (mit der Erweiterung .jmx
) gespeichert. Im Allgemeinen müssen Sie selbst für eine kleine Änderung in einem der Tests (sehr wahrscheinlich) das Projekt in der GUI erneut öffnen, um die Änderung vorzunehmen.
Wenn Sie mit anderen an derselben JMeter-Projektdatei zusammenarbeiten müssen, ist diese riesige XML-Datei mit einem der Source Control Management (SCM)-Systeme (wie Git, SVN, Perforce usw.) nicht einfach zu verwalten.
REST Assured hingegen erfordert Java-Programmierkenntnisse, um die Tests zu erstellen. Es gibt keine benutzerfreundliche GUI für die Testerstellung. REST Assured ermöglicht es Ihnen jedoch, die Tests in der Gherkin-Sprache (Given-When-Then-Syntax) zu schreiben, sodass die Tests selbst dann, wenn Sie einige Java-Programmierkenntnisse benötigen, ziemlich menschenlesbar sind.
given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));
Da REST Assured eine Bibliothek ist und Tests tatsächlich in Java geschrieben sind, können Sie Ihre Tests in separaten Java-Dateien organisieren, sodass Sie, wenn Sie einen Test ändern müssen, nur eine Datei öffnen müssen. Sie benötigen keine GUI, sodass Sie den Test auch über ein SSH-Terminal problemlos bearbeiten können. Die Zusammenarbeit mit anderen ist ziemlich einfach, da es einfach ist, Java-Dateien mit jedem SCM zu verwalten.
Arten von REST-Tests
JMeter ist als Leistungstesttool zum Testen von Web-Apps und -Diensten bekannt. Es hat sofort einsatzbereite Berichtsoptionen mit verschiedenen Diagrammtypen, die Sie verwenden können, um die Leistungstestmetriken anzuzeigen.
Andererseits ist es auch nicht das primäre Nutzungsszenario für JMeter. Sie können Funktionstests für REST-APIs mit JMeter erstellen, einschließlich Antwortzusicherung.
Das primäre Nutzungsszenario von REST Assured ist das Funktionstesten von REST-API-Diensten. Es verfügt sogar über einen eigenen Response-Assertion-Mechanismus (die Gherkin-Syntax). Da es sich bei REST Assured um eine Java-Bibliothek handelt, kann es problemlos in Unit-Tests integriert werden.
Wenn es um Leistungstests geht, unterstützt REST Assured keine standardmäßigen Leistungstests. Wenn Sie es jedoch für Leistungstests verwenden möchten, müssen Sie Ihr eigenes benutzerdefiniertes Framework für Leistungstests um REST Assured herum entwickeln.

Test Ausführung
JMeter-Tests können auf zwei Arten aufgerufen werden.
Klicken Sie auf der Benutzeroberfläche auf die Schaltfläche Ausführen:
Von der Befehlszeile:
jmeter -n -t your_script.jmx
Die offizielle Empfehlung von JMeter lautet, die Leistungstests nicht über die GUI auszuführen, da die Tests im Vergleich zur Ausführung über die Befehlszeile langsamer (in Bezug auf die Anzahl der Anforderungen pro Sekunde) ausgeführt werden.
REST Assured hingegen erfordert einen separaten Testrunner, beispielsweise jUnit oder TestNG (oder jede andere Möglichkeit, Java-Code auszuführen).
Von Eclipse mit TestNG:
Über die Befehlszeile, z. B. mit dem Ant-Build-Tool:
ant run-tests
Arten von Berichten
Apache JMeter verfügt aufgrund seines Hauptzwecks über eine große Anzahl von Berichtstypen, die Sie aus den Ergebnissen Ihrer Tests erstellen können. Da Sie Leistungstests von JMeter aus ausführen können, werden Leistungsmetriken normalerweise mithilfe von Diagrammen wie diesem angezeigt:
Hier erfahren Sie mehr über JMeter-Berichte und die Arten von Berichten, die Sie erstellen können.
REST Assured selbst erstellt keine Berichte, es liegt also an Ihnen und einem von Ihnen gewählten Testframework. Wenn Sie jedoch in ein Komponententest-Framework integriert sind, können Sie ziemlich brauchbare Berichte in HTML-, Text- oder XML-Formaten erhalten.
Integration mit Jenkins
Wenn es um die kontinuierliche Integration von zu testenden Produkten geht, ist es sehr wichtig, Ihr Testautomatisierungs-Framework mit CI-Tools sowohl für die Durchführung von Tests als auch für die Ergebnisberichterstattung zu integrieren.
Automatisierte JMeter-Tests können mithilfe des Performance-Plugins einfach in Jenkins integriert werden, mit dem Sie Post-Build-Aktionen einrichten und aus einer Jenkins-Jobseite eine gut aussehende Dashboard-Seite erhalten können.
REST Assured kann auch einfach in Jenkins integriert werden, da Jenkins Plugins für fast alle Test-Frameworks hat; zum Beispiel das TestNG-Plugin, das wiederum ein solides Trenddiagramm für Testergebnisse erstellen kann.
Gemeinschaftsaktivität
Dies ist eine Kategorie, die nicht einfach gemessen werden kann. Die Aktivität der Community hängt von einer Reihe von Faktoren ab, wie z. B. der Ausgereiftheit des Tools oder der Anzahl der Mitwirkenden.
Apache JMeter hat heutzutage eine größere Community. Dies liegt vor allem daran, dass JMeter schon vor langer Zeit auf dem Markt aufgetaucht ist und als Industriestandard gilt, wenn es um Leistungstests von Web-Apps und -Diensten geht. JMeter veröffentlicht offizielle Releases alle 5-6 Monate. Sein GitHub-Repository ist sehr aktiv, mit täglich neuen Commits. JMeter verwendet Bugzilla als Issue-Tracker und hat eine Liste offener Probleme, die häufig geändert werden. Es gibt mehr als 23000 Ergebnisse für JMeter in der StackOverflow-Suche. Von den Social-Networking-Sites hat JMeter einen offiziellen Twitter-Account. Auf Facebook und LinkedIn gibt es kein offizielles Konto für JMeter, aber es gibt einige Gruppen, von denen die größere diese Facebook-Gruppe und diese LinkedIn-Gruppe ist.
REST Assured bahnt sich seinen Weg zur Hauptbühne und ist zur ersten Wahl geworden, eine Empfehlung aus mehreren Quellen, wenn es um die Automatisierung von Funktionstests für REST-API-Dienste geht. REST Assured veröffentlicht seit zwei Jahren alle 6 Monate offizielle Veröffentlichungen. Das GitHub-Repository hat viele Mitwirkende und ist etwas weniger aktiv als das von JMeter, aber es ist auch sehr aktiv. REST Assured verfolgt Probleme im GitHub-Repository, sodass sich alles an einem Ort befindet. In StackOverflow gibt es mehr als 2000 Suchergebnisse für REST Assured, sodass wir sagen können, dass es im Vergleich zu den JMeter-Suchergebnissen deutlich niedriger ist. Was die Social-Networking-Gruppen betrifft, so wurde nur die LinkedIn-Gruppe mit einer deutlich geringeren Mitgliederzahl im Vergleich zu JMeter gefunden. Die REST Assured-Community ist vielleicht nicht so groß wie die JMeter-Community, aber sie ist sehr aktiv.
Zusammenfassung
Sowohl JMeter als auch REST Assured haben ihre Vorteile gegenüber einander. Aber basierend auf dem Projekt, an dem Sie arbeiten, wird eines für Ihre REST-API-Testautomatisierung besser geeignet sein als das andere. Beide sind sehr robust, verfügen über nützliche Testoptionen, verfügen über nette Berichtsfunktionen und können problemlos in benutzerdefinierte Testframeworks integriert werden.
Hier ist eine Zusammenfassung aller Vergleichskriterien, die in diesem Artikel für diese beiden beliebten REST-Testtools untersucht wurden:
Apache JMeter | Seien Sie versichert | |
---|---|---|
Erfordert Programmierkenntnisse | Nein | Ja (Java) |
Gründliche Dokumente | Jawohl | Jawohl |
Funktionsprüfung | Ja (aber übertrieben) | Jawohl |
Leistungstest | Jawohl | Nein (out of the box) |
Geeignet für SCM (Git, P4...) | Nein | Jawohl |
Testberichte | Jawohl | Nein |
Integration mit CI-Tools | Jawohl | Jawohl |
Integration mit Einheitentests | Nein | Jawohl |
Parallelisierung testen | Jawohl | Jawohl |
Gemeinschaftstätigkeit | Jawohl | Jawohl |