Beliebte Testmethoden und Testwerkzeuge für Microservices
Das Testen von Microservices kann chaotisch sein, da die Services unabhängig sind und häufig kommunizieren. Eine Übersicht von hilfreichen Entwicklungs- und Testwerkzeugen.
In einer Microservices-Architektur integrieren sich zahlreiche kleine, unabhängige Services nach Bedarf zu einer Anwendung. Innerhalb dieser müssen Entwicklungsteams jeden Microservice überwachen, um sicherzustellen, dass die Anwendung das macht, wofür sie konzipiert wurde. An dieser Stelle kommen die entsprechende Testwerkzeuge ins Spiel.
Um herauszufinden, wie man Microservices effektiv testet, sollte man sich mit den sechs wichtigsten Tests, die Softwareteams durchführen sollten, und den gängigen Werkzeugen, die sie hierfür verwenden können, vertraut machen.
Die sechs wesentlichen Microservices-Tests
Es gibt sechs Haupttypen von Microservices-Tests, auf die sich Softwareteams konzentrieren sollten, um sicherzustellen, dass sie Probleme mit der Funktionalität und Kommunikation vermeiden:
- Unit-Test. Betrachtet den kleinsten testbaren Softwarecode, um sicherzustellen, dass er sich korrekt verhält.
- Integrationstest. Verifiziert, ob die Kommunikation und Interaktionen zwischen den Komponenten richtig funktioniert.
- Komponententest. Testet Microservices in einer isolierten Umgebung und bei Bedarf mit Unterstützung von Mock Doubles, um zu verifizieren, dass sie die Anforderungen erfüllen.
- Contract Test. Überprüft die Interaktionen an der Grenze eines externen Services, um sicherzustellen, dass dieser den Vertrag erfüllt, den der verbrauchende Service erwartet.
- End-to-End-Test. Stellt sicher, dass alle Komponenten zusammenwirken und die externen Anforderungen erfüllen und die beabsichtigte Funktionalität erreichen.
- Leistungstest. Stellt sicher, dass Services und Anwendungen eine hohe Verfügbarkeit, einen tragfähigen Ressourcenverbrauch und eine angemessene Verteilung der Arbeitslasten gewährleisten.
Beliebte Testwerkzeuge für Microservices
Es gibt viele Tools, um den Betrieb und die Gestaltung von Microservices zu verfolgen, zu überwachen und bei Bedarf zu korrigieren. Hier sind einige in der Entwicklungsindustrie übliche Testwerkzeuge für Microservices.
Gatling. Gatling ist ein in Scala geschriebenes Load Testing Tool, das es ermöglicht, Simulationen auf mehreren Plattformen auszuführen. Am Ende einer Simulation berichtet Gatling automatisch über Metriken wie die Anzahl der aktiven Benutzer und die Antwortzeiten. Es wird normalerweise verwendet, um die Leistung von Microservices und Webanwendungen zu testen.
Hoverfly. Hoverfly ist ein automatisiertes Open Source API-Kommunikationssimulations-Tool, das bei Integrationstests unterstützt. Der Benutzer kann testen, wie APIs auf bestimmte Ereignisse reagieren, wie zum Beispiel Latenzzeiten im Netzwerk und Ratenbeschränkungen. Es führt auch Testaufrufe zwischen Microservices durch, indem es die Kommunikation simuliert, und erfasst dann Anfragen und Antworten im Proxy-Modus, um zu überprüfen, ob sie erwartungsgemäß funktionieren.
Jaeger. Jaeger ist ein Open Source End-to-End Distributed Tracing Tool, das Microservices-Systeme überwacht und Fehler behebt. Durch die Verfolgung von Services in der gesamten Betriebsumgebung der Software, kann es Ursachenanalysen durchführen, wichtige Services-Abhängigkeiten überwachen und Bereiche zur Leistungsoptimierung identifizieren.
Pact. Pact ist ein Contract Testing Tool, das HTTP- und Nachrichteninteraktionen untersucht, um sicherzustellen, dass die Anwendungen vertraglich richtig funktionieren. Im Wesentlichen bestimmen die verbrauchenden Services, wie die anbietenden Services ihnen die benötigten Daten zur Verfügung stellen sollen. Der bereitstellende Service testet dann kontinuierlich, um sicherzustellen, dass sie mit den Verträgen in Einklang stehen, und bietet so eine individuelle Testmethode, die im Idealfall die Anzahl großer Unit-Tests reduziert.
Es gibt zahlreiche andere Management- und Testwerkzeuge für Microservices, die Softwareteams helfen, mit den einzigartigen Aspekten einer verteilten Architektur umzugehen. Eines dieser Werkzeuge ist Vagrant von HashiCorp, ein Virtualisierungswerkzeug, das es IT-Teams ermöglicht, einmalige Softwareentwicklungsumgebungen zu erstellen, Skripte für das Infrastrukturmanagement zu testen und Implementierungen zu verfolgen.
VCR ist ein Unit-Test-Tool, das HTTP-Aufrufe erfasst. Es speichert diese Aufrufe und spielt sie bei zukünftigen Tests ab, um den Prozess zu beschleunigen. Ein weiteres Beispiel ist WireMock, ein HTTP-Mock-Server, mit dem man API-Interaktionen aufzeichnen und wiedergeben, Fehler erstellen, Kommunikationsverzögerungen verfolgen und zustandsabhängiges Verhalten simulieren kann.