Fotolia

Die Grundlagen der Einführung eines RESTful-API-Testprogramms

Bei RESTful-API-Tests geht es darum, eine Kultur des kontinuierlichen Testens zu etablieren. Die Kernkomponenten eines RESTful-API-Testprogramms.

Die gängige Praxis zum Testen von Webanwendungen beschränkte sich seit vielen Jahren auf das Frontend und die grafische Benutzeroberfläche. Vor kurzem haben die Teststandards eine gründliche Überarbeitung erfahren. Um moderne Testkriterien umzusetzen, wie kontinuierliche Integration (Continuous Integration) oder Continuous Delivery, müssen Teams zumindest in der Automatisierung versiert sein. Außerdem muss sich der Fokus auf die Fehlerverhinderung verschieben. Das lässt sich am besten dadurch umsetzen, dass man im Voraus auf Qualität und Effizienz baut.

Entwickler, Produkt-Manager, Business-Analysten und QA-Team-Mitglieder müssen mit der Planung und dem Aufbau eines besseren Testportfolios beginnen. Weil sie anfangen, enger zusammenzuarbeiten, müssen sie wissen, was sie brauchen, um die Akzeptanzkriterien einzuhalten und sie müssen als Team festlegen, was die beste Testmöglichkeit ist. Dies macht es auch erforderlich, der Test-Pyramide-Methode zu folgen, indem mehr Tests in der niedrigeren Ebene erstellt werden – wie zum Beispiel API-Tests – und am Ende ein kleinerer Prozentsatz von UI-Tests generiert wird.

Die Reise beginnt mit RESTful-API-Tests. Am Ende dieses Artikels werden Sie besser verstehen, warum API-Tests notwendig sind und die wichtigsten physischen und logischen Schichten kennen. Außerdem erfahren Sie, wie Sie einen Test-Blueprint für APIs entwickeln und Sie erhalten einen Überblick über die verfügbaren Technologien.

Was ist eine RESTful API?

In einfachen Worten ist REST eine Möglichkeit für zwei Computer, miteinander über das Internet zu kommunizieren. Der eine fungiert als Web-Browser und der andere als Webserver. Die Übertragung erfolgt über das HTTP-/HTTPS-Protokoll. Die HTTP-Request-Verfahren sind GET, PUT, POST und DELETE.

Die beiden am häufigsten verwendeten Methoden sind GET und POST:

  • GET dient dazu, lesend auf Ressourcen zuzugreifen. Es wird für das Abrufen von Daten von einer bestimmten Ressource verwendet.
  • POST dient dazu, neue Ressourcen zu erstellen. Er wird für die Erstellung von Daten verwendet.

Ein Beispiel hierfür ist die GitHub API for repository_url:

Abbildung 1

Sobald die HTTP-Anforderung abgeschickt wurde, beginnt die Kommunikaiton mit der geschichteten Architektur.

Überprüfen Sie die REST-Schichtenarchitektur

Die REST-Schichtenarchitektur (Layered Architecture) ist ein Software-Design-Muster, das in einem Stapel von Schichten implementiert ist. Die traditionellen Schichten helfen einem, den Code besser zu organisieren. Zum Beispiel kann eine Anwendung die folgenden Schichten haben: Präsentation, Business-Logik, Datenzugriff und Datenspeicherung.

Präsentation

Die oberste Schicht der Anwendung ist die Benutzeroberfläche (User Interface). Sie übersetzt die Antwort in ein maschinenlesbares Format. Die Präsentationsschicht (Presentation Layer) kümmert sich um die Darstellung der Inhalte, wie im Bild gezeigt:

Abbildung 2

Business-Logik

Die logische Schicht (Logical Layer) ist das Gehirn der Anwendung. Diese Schicht berechnet und kommuniziert die Daten zwischen den Schichten und trifft logische Entscheidungen. Einige logische Entscheidungen, welche die logische Schicht trifft, umfassen die Handhabung der API, die Authentifizierung und Autorisierung sowie die Überwachung und Ausnahmebehandlung.

Datenzugriff

Die Datenzugriffsschicht (Data Access Layer) bietet einen vereinfachten Zugriff auf die gespeicherte Daten – Datenbanken, Flat Files und mehr – getrennt von der Geschäftslogik und dem Präsentationscode. Diese Schicht ist eng mit der Datenspeicherschicht verbunden.

Datenspeicher

Die Datenspeicherschicht (Data Storage Layer) besteht aus einem relationalen Datenbank-Management-System, einer NoSQL-Datenbank, einem Dateisystem, Remote-Speicher in der Cloud oder In-Memory-Speicher.

Entwerfen Sie einen API-Bauplan für Entwicklung und Tests

Wenn Sie einen Bauplan für Ihre RESTful-API-Teststrategie entwerfen, ist es wichtig, alle Aktivitäten zu skizzieren, die für einen Sprint und die Freigabe vorgesehen sind. Verfügen Sie über eine klare Teststrategie, steigert das die Zusammenarbeit und Kommunikation schon zu Beginn – und nicht erst am Ende. Oft können Teams schon eine Steigerung der Produktivität erkennen, wenn jeder im Team mehr Verantwortung und Verantwortlichkeit für die Produktqualität übernimmt.

User Experience Pyramide

Bei Einführung und Pflege einer API müssen alle Team-Mitglieder jeden Aspekt der API-Benutzererfahrung berücksichtigen. Die Pyramide im Bild unten stellt die verschiedenen API-Eigenschaften zusammen, die das Team berücksichtigen sollte:

Abbildung 3

Auswählen einer Testtechnik

Die Optionen können überwältigend sein. Es gibt eine ganze Reihe von Open Source Tools, Hersteller Werkzeuge und kundespezifische Test-Tools. Es empfiehlt sich, bei der Bewertung der Testtechnologie praktisch zu denken.

Testumfang

Um qualitativ hochwertige Produkte zu bauen, für die jeder schwärmt, braucht es eine ausgeklügelte Teststrategie. Diese muss früh schon beim Prozess des Codeschreibens beginnen, indem man parallel Tests macht. Dies führt im Allgemeinen zu einem besseren Design und zu weniger Bugs. Unit-Tests sind das Rückgrat jeder Teststrategie.

Abbildung 4

Standards festlegen

Es ist wichtig, im Voraus Standards festzusetzen und sie jedem im Team mitzuteilen. Dies trägt dazu bei, dass Probleme bei Tests und Codierung vermieden werden – zum Beispiel durch unerwartete Änderungen oder mangelnde Skalierbarkeit. Die Evaluierung und Kalibrierung sollten Sie immer wieder machen.

Pflichten

Sie sollten jedem Teammitglied seine Pflichten deutlich machen – egal ob Entwickler, QA, DevOps-Team oder Produkt-Manager.

Kontinuierliches Testen

Kontinuierliches Testen heißt nicht nur API-Tests zu implementieren. Fortgesetztes Testen ist in erster Linie eine Strategie, dann eine Werkzeugauswahl und dann die Implementierung von mehr als nur einem API-Test. Einmal eingerichtet und unterstützt von Analytik, verbessert ein kontinuierliches Testen die Qualität der Anwendungen und der ganzen Lieferkette.

Technologien für RESTful-API-Tests

Die wichtigste Herausforderung für jede Art von automatisiertem Scripting ist die richtige Technologie für das Projekt ausfindig zu machen. Ich habe festgestellt, dass viele Teams aus mehreren Gründen diese Phase nie abschließen:

  • Unkenntnis der verfügbaren Tools oder Test-Frameworks;
  • Mangel an Know-how oder Wissen, das benötigt wird, um ein bestehendes Framework anzupassen und zu implementieren;
  • mangelnde Bereitschaft, sich die Kosten für die Herstellerwerkzeuge zu leisten;
  • keine verfügbare Zeit oder Ressource, um ein individuelles Testarsenal aufzubauen.

Hier sind einige der Tools oder Frameworks, die für die Automatisierung von API-Tests weit verbreitet sind:

Open Source

Anbieter

Kunde

Frisby.js + Jasmine

SoapUI Pro

Node.js

Chakram

Smart Bear

 

REST-assured

Runscope

 

Swagger

 

 

Vows + api-easy

 

 

Schluss

Eine Teststrategie ist nicht nur ein Stück Papier. Eine Teststrategie ist die Reflexion aller Aktivitäten - Entwicklung, Tests und die kontinuierliche Feedback-Schleife. Sie verbessert die gesamte Lieferkette, indem schnelles Feedback eingeholt wird und die Ausführung von Iterationen ermöglicht.

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+ und Facebook

Erfahren Sie mehr über Softwareentwicklung