Agile Testing Strategie für die effiziente Continuous Delivery von Microservices

SEQIS „10 things“-Expertentreff #01/2017

von Alexander Vukovic

Agile Testing Strategie für die effiziente Continuous Delivery von Microservices
Foto: SEQIS Expertentreff „Agile Testing Strategie für die effiziente Continuous Delivery von Microservices“ (© SEQIS GmbH)

Der erste Expertentreff 2017 beschäftigte sich mit dem Thema „Agile Testing Strategie für die effiziente Continuous Delivery von Microservices“. Im Mittelpunkt des Vortrages stand eine beispielhafte Teststrategie, um die im Rahmen der Entwicklung von Microservices kontextspezifischen Herausforderungen gekonnt adressieren zu können.

1. Berücksichtigen Sie die Eigenheiten von Microservices

Traditionell werden Applikationen als Monolithen designt, versioniert und ausgeliefert. Microservices brechen mit diesem Ansatz. Funktionen werden fachlich zu Services gruppiert, die nur lose gekoppelt sind, keine gemeinsame Datenhaltung haben und wiederum andere Services verwenden oder von anderen Services verwendet werden können. Dieser Architekturansatz bringt einige Vorteile mit sich, wie die Möglichkeit, jederzeit und unabhängig von anderen Services zu deployen. Durch die lose Kopplung und die unabhängige Datenhaltung entstehen aber auch einige Herausforderungen, insbesondere für das Testing. Beachten Sie daher die Eigenheiten von Microservices und adressieren Sie die Spezialitäten in Ihrer Agile Testing Strategie

2. Setzen Sie auf geeignete Tools

Ohne geeignete Tools ist eine Agile Testing Strategie, die primär auf Automation setzt, nicht umsetzbar. Die vielfältigen Möglichkeiten, die der Toolmarkt heute bietet, lassen es zu, für jeden Einsatzzweck das am besten geeignetste Tool zu wählen. Ein Toolstack, der sich in der Praxis bewährt hat, wurde in den Vortragsfolien genauer skizziert. Die Mischung aus Open Source Werkzeugen und kommerziellen Lösungen deckt den gesamten Prozess hinter der Agile Testing Strategie vollständig ab.

3. Exploratives Session Based Testing, unbedingt!

Microservices arbeiten primär über APIs (Application Programming Interfaces), können also nicht über eine Oberfläche aufgerufen werden, sondern müssen orchestriert werden. D.h. es wird zumeist ein HTTP-Call gegen die öffentliche Schnittstelle des Services parametrisiert abgesetzt. Das Service antwortet wiederum mit einem HTTP-Return Code und ggf. mit Daten, meist in der JSONForm (JavaScript Object Notation). Das ist ein technischer Vorgang, der nicht unmittelbar dazu geeignet erscheint, im Rahmen einer explorativen manuellen Testsession getestet zu werden. Mit den richtigen Tools (z.B. SoapUI, Neoload, Jmeter) ist es jedoch sehr einfach auch APIs Session Based zu testen. Nehmen Sie Session Based Testing daher unbedingt in die Agile Testing Strategie auf!

4. Setzen Sie auf die richtige Basis

Microservices müssen stabil und unabhängig lauffähig sein. Ihre Schnittstelle nach außen muss möglichst stabil bleiben. Umso wichtiger ist es, die Funktionalitäten von Microservices von der Basis weg richtig zu testen und abzusichern. Die unabdingbare Basis und das wichtigste feinmaschige Fallnetz sind Unit Tests, die kleine Codeteile, wie z.B. einzelne Methoden, isoliert prüfen. Funktional ist die nächste Stufe in Form des Component Tests am wichtigsten. Diese wird auch auf Codeebene automatisiert, integriert aber die Einzelteile eines Microservices und testet es funktional. Last but not least sind Contract Tests ganz wichtig, um die Schnittstellenvereinbarungen für alle Nutzer eines Microservices stabil zu halten und abzusichern.

5. Sichern Sie die Anforderungen aus Benutzersicht mittels End 2 End Tests

End 2 End Tests integrieren die Microservices aus Benutzersicht. Sie sind unbedingt notwendig, aber sehr teuer und aufwendig umzusetzen. Es ist daher wichtig, die richtigen End 2 End Tests risikobasiert auszuwählen und die Testtiefe über die unteren Teststufen zu realisieren. Mittels BDD-Gherkin-Notation (Behavior Driven Development) können auch End 2 End Tests gut parametrisiert und durch Daten getrieben werden. End 2 End Tests ersetzen nicht das explorative manuelle Testen – planen Sie das auch unbedingt über die Test Sessions mit ein.

6. Machen Sie auch die Performance zu Ihrem Projekt

Kontinuierliches Performance Engineering ist gerade für Microservices unbedingt notwendig. Es beginnt bei der Überwachung der Codeperformance bei der Unit Test-Durchführung und endet bei der systemeigenen Produktions- überwachung mit serviceeigenen KPIs. Dazwischen liegt die toolgestützte iterative Optimierung der Performance. Dabei wird das Service belastet und versucht, das aktuelle Bottleneck zu identifizieren. Ist es gefunden, wird der Test wiederholt und das nächste Bottleneck aufgedeckt. Die dabei optimierte Konfiguration und die Codebasis müssen unbedingt mitversioniert und mitdeployed werden.

7. Testumgebungsmanagement automatisieren – containerisiert

Containerisation ist der Schlüssel zu einer schlanken und stabilen Produktivsetzung von Microservices. Diese werden in einem Container deployed, konfiguriert und getestet. Zwischen Testumgebungen und Produktion wird nur der fertige Container verschoben. Dadurch geht das Artefakt, das den Build verlassen hat, letztlich bis in Produktion. Alle Qualitätsmaßnahmen dazwischen setzen auf dem gleichen Artefakt auf. Fehler am Weg in Produktion werden dadurch ausgeschlossen. Container können sehr einfach automatisch aufgebaut werden. Das Containermanagementsystem erlaubt direkt auch die Multiplikation und Skalierbarkeit für hohe Lastszenarios in Produktion.

8. Automatisieren Sie Ihre Testdaten

Durch die redundante und unabhängige Datenhaltung ist es für Microservices schwieriger, Testdaten zu erzeugen und einzubinden. Implementieren Sie daher einen Testmodus in Ihren Microservices. Er ermöglicht es, das Microservice zu testen, ohne von anderen Microservices abhängig zu sein und ohne Testdaten generieren zu müssen. Diese Testdaten werden im Testmodus vom Microservice selbst erzeugt und wiederholbar bereitgestellt. Natürlich ist es auch ohne Testmodus möglich, über die normale API eines Microservices Testdaten zu erzeugen, die danach für den eigentlichen Test verwendet werden können.

9. Automatisierte Continuous Integration zur Absicherung Ihrer Qualität

Continuous Integration ist automatisierte Qualitätssicherung von A-Z. Über den Buildserver können Sie jede Aufgabe, vom Compile bis zum Performance Test, vom Unit Test bis zum Deployment in die Testumgebung oder vom automatischen Code Review bis hin zum Reporting vollständig und wiederholbar automatisieren. Dadurch wird „Immediate Feedback“ an die Entwickler möglich. Sie sehen sofort, ob ihre Codeänderung negative Auswirkungen hat. Auch die regelmäßige, intensive Prüfung aller Qualitätsaspekte bringt die Sicherheit, mit einer geprüften Version die nächsten Schritte zu machen. Unnötige Aufwände werden dadurch vermieden. Mittels Continuous Integration können Sie „Alles“ – also jeden Build- und QS-Schritt – automatisieren und absichern.

10. Automatisieren Sie den gesamten Weg bis in Produktion mittels Continuous Delivery

Wenn Sie die Basis mit Unit Tests geschaffen, Component Tests, Contract Tests und End 2 End Tests automatisiert und mit Session Based Testing zusätzlich abgesichert haben. Wenn Sie Performance Engineering in Ihre Agile Testing Strategie aufgenommen haben. Wenn Sie Containerisation für Ihre Testumgebungen und den Testmodus für Ihre Testdaten nutzen. Und wenn Sie all das bereits über ein Continuous Integration System automatisiert durchführen. Dann sind Sie bereit für den letzten Schritt der Agile Testing Strategie: Continuous Delivery. Über eine Deploychain sichern Sie Ihre Applikation im Container vom Build bis in Produktion vollständig ab. Damit ist die letzte große Fehlerquelle beseitigt und das schnelle, unabhängige, qualitätsgesicherte Deployment Ihres Microservices sichergestellt.

Sie haben unsere bisherigen Veranstaltungen verpasst?

Für Sie haben wir auf unserer Website alle Vorträge in chronologischer Reihenfolge übersichtlich zusammengefasst. Sie finden dort auch alle Vortragsunterlagen zum Download - sehen Sie hier.

Nach der Sommerpause gibt es noch zwei spannende Expertentreffs. Alle Details zu den Events finden Sie hier.

Autor
SEQIS Autor Alexander Vukovic

Alexander Vukovic

Managing Partner, Founder

Newsletter

Um neue Beiträge per E-Mail zu erhalten, hier die E-Mail-Adresse eingeben.

Unsere Autoren

Informieren Sie sich über unsere Autoren und erfahren Sie mehr über unsere Spezialisten und ihre Fachbereiche:

Zu den Autoren

Sie haben eine Frage?

Zurück

Zum Seitenanfang navigieren