REST Assured vs. JMeter: Ein Vergleich von REST-Testwerkzeugen

Veröffentlicht: 2022-03-11

Automatisiertes 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

Tools für den REST-Test

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.

JMeter-GUI-Screenshot

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.

JMeter-Antwortzeiten-Screenshot

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:

Screenshot der JMeter-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:

REST Assured Eclipse-Screenshot

Ü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:

JMeter-Leistungsbericht

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.

REST-gesicherter HTML-Bericht

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.

JMeter Jenkins-Screenshot

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.

REST Assured Jenkins-Screenshot

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