NashTech

Auf Microservices aufgebaute Anwendungen bieten viele Vorteile, erfordern aber neue Testansätze

microservices

Die Software-Architektur hat sich in den letzten drei Jahrzehnten erheblich weiterentwickelt – und die Ansätze für Software-Tests mussten sich ändern, um Schritt zu halten. Vinh Pham, Senior Test Team Manager bei NashTech, erörtert hier Best-Practice-Ansätze für das Testen der heutigen Microservices-basierten Anwendungen.

Von monolithischen zu Microservices - die Herausforderungen beim Testen

Die Softwarearchitektur entwickelt sich ständig weiter: Von den spaghettiartigen Entwürfen der 1990er Jahre sind wir Anfang der 2000er Jahre zu lasagneartigen Schichtarchitekturen übergegangen. Heute sind diese Architekturen eher wie Ravioli – kleine Pakete (“Microservices”), die in einer Soße schwimmen.

Eine Microservices-Architektur ermöglicht es, Softwareanwendungen als eine Reihe kleinerer Dienste aufzubauen, die untereinander über definierte APIs kommunizieren. Im Vergleich zu einer herkömmlichen “monolithischen” Architektur bietet eine Microservices-Architektur die Flexibilität, eine Anwendung mit verschiedenen Programmiersprachen und Technologien zu erstellen. Außerdem erhöht es die Skalierbarkeit und eignet sich besser für eine kontinuierliche Integration und Bereitstellung (CI/CD) oder einen DevOps-Ansatz.

Wie bei jeder neuen Architektur ist jedoch ein neuer Ansatz für die Prüfung erforderlich. Bei einer Microservices-Architektur muss die Teststrategie Aspekte wie die Kommunikation der Dienste, die Sicherheit der einzelnen Dienste, die Datenkonsistenz und den Einfluss der einzelnen Dienste auf die anderen abdecken. Es sollte funktionale Tests, nicht-funktionale Tests und auf das jeweilige Projekt zugeschnittene Werkzeuge kombinieren. Und es sollte das Testen der einzelnen Komponentendienste und des Verhaltens des Systems als Ganzes unterstützen.

Eine Microservices-Architektur bringt auch eine Reihe von Herausforderungen beim Testen mit sich. Um Testfälle richtig zu schreiben, brauchen wir ein tiefes Verständnis für jeden Dienst. Wir brauchen auch eine klare Vorstellung davon, wie jeder Dienst funktionieren soll:

  • Unabhängig laufen
  • Arbeiten Sie mit anderen Diensten zusammen, um die Anwendung zu erstellen

Es sollte eine klare Anfrage/Antwort für jeden verwendeten API-Endpunkt geben und die Möglichkeit, Dienste von Drittanbieteranwendungen oder Partnern auszuführen.

Fünf Ebenen der Prüfung

Um zu überprüfen, ob eine Microservices-basierte Anwendung korrekt funktioniert, wenden wir einen fünfschichtigen Ansatz an, der Unit-, Integrations-, Komponenten-, Vertrags- und End-to-End-Tests umfasst.

Einheitliche Prüfung

Ermöglicht es uns zu verstehen, ob die kleinsten Serviceeinheiten – die kleinstmöglichen testbaren Teile einer Anwendung – wie erwartet laufen, entweder auf Klassenebene oder auf der Ebene einer kleinen Gruppe von verwandten Klassen, die von Programmierern definiert wurden. Unit-Tests können aufgeteilt werden in:

  • Einzelne Tests – ermöglichen die Beseitigung aller Abhängigkeiten einer Komponente durch die Verwendung von Testdoubles wie Mocks oder Stubs
  • Soziologische Tests – testet das externe Verhalten einer Komponente

Prüfung von Bauteilen

Umgeht die Komplexität, die oft bei Microservices-basierten Anwendungen auftritt, indem jeder Teil der Anwendung (Komponente oder Microservice) isoliert getestet wird. Wir testen jede Komponente allein, indem wir ihre Abhängigkeiten durch Testdoubles oder Mock-ups der anderen Dienste ersetzen. Komponententests machen das Testen von Microservices einfacher, schneller und zuverlässiger.

Integrationstests

Bietet die Möglichkeit, die Kommunikationspfade und Interaktionen zwischen Komponenten oder Microservices auszuführen, um sicherzustellen, dass die Abhängigkeiten korrekt funktionieren. Wir können Bottom-up-, Top-down- oder Sandwich-/Hybrid-Ansätze verwenden, um zu validieren, dass die Microservices reibungslos zusammenarbeiten und die Geschäftsanforderungen erfüllen.

Vertragsprüfung

Ermöglicht die Überprüfung, ob die expliziten und impliziten Verträge Ihrer Microservices wie angekündigt funktionieren. Es gibt zwei Perspektiven:

  • Verbraucher – die Einheit, die den Microservice nutzt
  • Anbieter – die Einrichtung, die die Dienstleistung erbringt

Bei der Vertragsprüfung geht es darum, sicherzustellen, dass die Dinge so funktionieren, wie sie in der Vereinbarung angekündigt wurden. Es bedeutet, dass die Attribute oder das Format der Daten, die über die API übertragen werden, sowie die Antworten überprüft werden. Sie stellt sicher, dass der API-Endpunktcode wie erwartet ausgeführt wird. Darüber hinaus können wir die verbrauchervertragsgesteuerten Tests nutzen, um Fehler in Verbraucher-Workflows zu entdecken.

End-to-End-Tests

Ziel ist es, den gesamten Prozess und alle Benutzerströme der App zu testen, um zu prüfen, ob die Geschäftsprozesse korrekt und reibungslos funktionieren und den Anforderungen entsprechen. Sie umfasst alle Dienste und Datenbankintegrationen.

Jeder bewegliche Teil der auf Microservices basierenden Anwendung wird durch End-to-End-Tests abgedeckt. Sie deckt auch die Lücken zwischen den Diensten ab und sorgt dafür, dass die Abhängigkeiten zwischen den Microservices getestet werden.

Sicherheits- und Leistungstests

Zusätzlich zu den fünf wichtigsten Testschichten führen wir Sicherheitstests durch, um sicherzustellen, dass die Anfrage/Antwort von APIs bei Datenübertragungen sicher ist, insbesondere wenn Dienste von Drittanbietern von der Microservices-App verwendet werden.

Leistungstests (oder “Lasttests”) sind in einer Microservices-Architektur notwendig, da die Anwendung aus mehreren Diensten besteht, die zwar isoliert sind, aber voneinander abhängen. Die App wird oft Dienste von Drittanbietern aus externen Umgebungen (PaaS) beinhalten. Wenn diese nicht gut funktionieren, kann das große Auswirkungen auf die Gesamtleistung der App haben.

Testautomatisierung

Bei Microservices-basierten Architekturen kommt der Automatisierung beim Testen eine wichtige Rolle zu. Die Automatisierung trägt dazu bei, dass Regressionstests bei inkrementellen Releases und nach Aktualisierungen von Service-API-Versionen schnell und einfach auf jeder Testebene durchgeführt werden können, um sicherzustellen, dass die gesamte Anwendung korrekt funktioniert.

Die Rentabilität von Investitionen in die Testautomatisierung hängt von den Besonderheiten der Anwendungsarchitektur und der Häufigkeit der Änderungen ab. Die Verwendung von Tools wie Postman oder SoapUI für das Testen der Integrationsschicht kann von Vorteil sein.

Wollen Sie mehr wissen?

Wenn Sie mehr über NashTech Software Testing Services erfahren möchten, senden Sie eine E-Mail an info@nashtechglobal.com. Ein Mitglied des Teams wird sich mit Ihnen in Verbindung setzen.

Empfohlene Artikel

Vom Überwinden von Widrigkeiten zum Reiten der Welle der digitalen Transformation im Bildungssektor

Erfahren Sie, wie NashTech dem Trinity College London hilft, die Welle der digitalen Transformation im Bildungssektor zu reiten

AWS
AWS
Migration und Modernisierung der virtuellen Lernumgebung auf AWS für ein verbessertes Erlebnis

Das migrierte und modernisierte Moodle Infrastruktur bedeutet, dass The Open Die Universität kann nun folgende Vorteile nutzen Cloud-Vorteile.

Ein Einblick in eine einjährige RPA-Reise mit einem führenden digitalen Werbedienst

Ein Einblick in eine einjährige RPA-Reise mit einem führenden Anbieter von digitalen Werbedienstleistungen und -lösungen und wie NashTech ihnen geholfen hat.

Wir helfen Ihnen dabei, Ihre technologische Entwicklung zu verstehen, sich in der komplexen Welt der Daten zurechtzufinden, Geschäftsprozesse zu digitalisieren oder eine nahtlose Benutzererfahrung zu bieten.

Nach oben scrollen
BEISPIEL TITEL
Muster kurz
Musterüberschrift lorem isump
DE FREE WHITEPAPER
Erschließen Sie die Macht des Wissens mit unserem neuen Whitepaper
“Verbesserung der Benutzererfahrung für Produktbesitzer”
KOSTENLOSES WHITEPAPER
Erschließen Sie die Macht des Wissens mit unserem neuen Whitepaper
"Verbesserte Benutzererfahrung für Produktverantwortliche"