Systemtests eines RESTful Webservices mit rest-assured

Mar 09
2012

Für einen RESTful Webservice habe ich mich auf die Suche gemacht nach hilfreichen Werkzeugen. In einem ersten Schritt bin ich bei den Browser Plugins gelandet, wie z.B. dem “Rest Advanced Client” für Chrome.

 

Für erste Versuche mit dem Webservice sind diese Plugins durchaus geeignet. So bekomme ich ein erstes Gefühl, ob das so funktioniert wie ich das gerne hätte. Ich kann mit Query Params und Path Params herumspielen und versuchen die Objekte in verschiedenen Mime-Types zu Posten.

Um dann aber den Webservice auf Herz und Nieren zu prüfen und diese Prüfung immer wieder ausführen zu können, brauche ich dann ein Tool, welches automatisiert die Requests auslöst. Dabei bin ich auf das Werkzeug rest-assured http://code.google.com/p/rest-assured/ gestossen. Und dieses Werkzeug hat es mir angetan…

Schon das Setup ist wirklich einfach:

Und trotzdem lassen sich damit dann auch kompliziertere Sachen machen:

Statuscode abfragen – kein Problem.

Request posten mit nach xml serialisiertem Objekt – ein Kinderspiel.

Inhalte der Response überprüfen – komfortabel über den “Pfad” im XML

Kurz und gut, dieses Tool kann absolut alles was ich brauche und lässt sich ganz einfach mit JUnit ausführen. Sehr zu empfehlen!

Code Qualität beim Testwerkzeug

Jan 21
2012

Wie gut muss die Qualität des Codes beim Testwerkzeug sein? Die Schulbuchantwort ist klar: (Mindestens) Gleich gut wie diejenige des produktiven Codes. Dafür gibt es verschiedene Gründe. Da wäre beispielsweise die Lebensdauer des Codes zu nennen: Der Code, mit dem die Regressionstests ausgeführt werden, lebt ebenso lang, wenn nicht sogar noch länger, wie das System under Test (SUT). Oft überleben sie das SUT sogar und werden als Referenz für das Nachfolgesystem weiter benützt.

Die Notwendigkeit ist also klar gegeben. Trotzdem ist es schon hart genug, die Testautomatisierung synchron zur Entwicklung hochzuziehen und eine ausreichende Abdeckung mit automatisierten Systemtests zu erreichen. Bereits dafür fehlt oft die nötige Zeit oder die Ressourcen. Und deshalb bleibt dann manchmal eben die Codequalität  auf der Strecke.

Die bei uns eingesetzten Werkzeuge Findbugs, PMD und Checksyle kennen da keine Gnade. Die Rulesets sind die gleichen wie beim produktiven Code und entsprechend fliegen uns auch die Violations um die Ohren. Und dann ist da noch das Problem, dass ich beim neuen Code darauf achte, regelkonform zu sein, aber dann sind da noch die Hunderte von Violations, die eben schon vorher drin waren. Und das schlägt dann eben auch noch etwas auf die Motivation.

Ähnliche Probleme stellen wir auch bei unseren Unittests fest. Auch da fällt es schwer, die gleiche Qualität zu erreichen und einzufordern.

Da bleibt wohl nichts anderes übrig, als sich wieder einen Ruck zu geben – und dann los auf die Violations. Heute wird aufgeräumt!

Categories