Threat Stack heißt jetzt F5 Distributed Cloud App Infrastructure Protection (AIP). Beginnen Sie noch heute damit, Distributed Cloud AIP mit Ihrem Team zu verwenden.
Auch bei korrekter Konzeption kann das Testen von Microservices eine Herausforderung sein. Wenn sich die Systemarchitektur jedoch soweit entwickelt, dass Dutzende oder Hunderte verbundener Dienste eine Softwareplattform in einer sich ständig verändernden Infrastruktur bilden, wird das Testen des Produkts, für das Sie und Ihr Team verantwortlich sind, zu einer monumentalen, komplexen Aufgabe. Das Schreiben von Testautomatisierungen für diese Umgebungen ist schwierig. Sie möchten daher sicherstellen, dass Sie den größtmöglichen Nutzen aus den Tests ziehen, die Sie schreiben.
Bei Threat Stack schreiben wir Systemintegrationstests, eine Form von Gray-Box-Funktionstests, und wir wählen Docker zum Ausführen der containerisierten Testumgebung.
Einige Organisationen verlassen sich immer noch auf das traditionelle Testmodell, bei dem White-Box- und Black-Box-Tests als ausreichende ergänzende Teststrategie angesehen werden. Sie spielen zwar noch immer eine wichtige Rolle bei der Qualifizierung von Software, reichen jedoch nicht mehr aus, um Ihnen das Feedback zu geben, das Sie für die sichere Veröffentlichung von Software benötigen.
In dieser Art von Umgebung ist der Fokus auf Black-Box-Benutzerakzeptanztests zu weit gefasst, und sich darauf zu verlassen, kann schwerwiegende Auswirkungen auf die Time-to-Market-Strategien haben:
Andererseits ist der White-Box-Unit-Test zu eng fokussiert und wird häufig fälschlicherweise eingesetzt, um die Funktionalität von Softwaresystemen zu qualifizieren:
Die Testingenieure von Threat Stack verlassen sich zunehmend auf Systemintegrationstests, um alle diese Dienste auf eine Weise zu testen, die die Testabdeckung maximiert und gleichzeitig die Geschwindigkeit und Spezifität bietet, die wir brauchen, um sicherzustellen, dass die Anwendung unter vielen Betriebsbedingungen ordnungsgemäß funktioniert.
Ein Integrationstest ist ein Gray-Box-Test, der sich auf das Verhalten der getesteten Software oder des getesteten Systems bei der Schnittstelle mit externen Komponenten konzentriert. Zum Beispiel:
Mit anderen Worten: Software, mit der Sie interagieren können, um Verhalten zu validieren. Bei Threat Stack führen wir in erster Linie Funktionstests durch, die reale Situationen nachbilden. Die getesteten Verhaltensweisen werden jedoch an den Grenzen der Containerumgebung gestoppt, um unerwünschte externe Interaktionen zu vermeiden.
Und da diese Tests eng mit dem Microservice verknüpft sind, haben Sie den Vorteil, dass Sie Code des zu testenden Services in den automatisierten Tests untersuchen und integrieren können, um durchgängig Bereiche des Codes zu identifizieren, die getestet werden müssen. Darüber hinaus können diese Tests als Benutzerakzeptanztests geschrieben werden, sodass Nicht-Entwickler wie Produktmanager und QA-Ingenieure das getestete Verhalten leichter verstehen können.
Mit anderen Worten:
Gegeben sind einige Bedingungen
Wenn der Dienst diese Eingabe empfängt (ODER dieser Zustand den Dienst beeinflusst)
Dann verhält sich der Dienst wie erwartet und erzeugt die erwarteten Nebenwirkungen.
Diese Funktionstests sind nicht nur leicht zu verstehen und zu schreiben, sie sind auch eng mit dem Code des Microservices verknüpft, sodass sie von Entwicklern während des gesamten Entwicklungsprozesses oder anschließend von dedizierten Testingenieuren problemlos ausgeführt und aktualisiert werden können.
Container sind für Testsysteme äußerst nützlich, da Sie damit Ihre Testumgebung für die Dauer der Tests schnell und mit minimalen Ressourcen reproduzieren und nach Abschluss der Tests problemlos bereinigen können. Im Gegensatz zu vielen Black-Box-Testautomatisierungen benötigen Sie für die Durchführung Ihrer Integrationstests keine teure, ständig aktive Testumgebung. Wenn Sie die Tests ausführen, kann das Verhalten des Microservices in der Testumgebung reproduziert werden.
Sobald Sie eine Containerumgebung definiert haben, die die Produktionsumgebung des Microservices widerspiegelt, wird Ihr Testframework zu den externen Clients oder Mock-Services, die mit den zu testenden Komponenten oder Microservices interagieren. Dadurch wird sichergestellt, dass der Testcode alle Aspekte der Tests steuert, wodurch Sie viele weitere Aspekte des Tests steuern können.
Für den Anfang ist Docker eine gute Plattform, um schnell eine Containerumgebung aufzubauen. Mit Docker Compose können Sie die zu testenden Abschnitte Ihrer Anwendung einfach definieren und ausführen, entweder lokal oder in CI mit demselben Code. Zum Bereitstellen Ihrer Testumgebung können auch andere Tools und Dienste für die Container-Infrastruktur verwendet werden, z. B. Kubernetes , AWS EKS oder AWS Fargate , sofern Ihre Organisation deren Verwendung unterstützt.
Die Entscheidung, den Testaufwand auf Integrationstests statt auf andere Arten der Automatisierung zu konzentrieren, bietet Ihnen letztlich zwei große Vorteile:
Threat Stack heißt jetzt F5 Distributed Cloud App Infrastructure Protection (AIP). Beginnen Sie noch heute damit, Distributed Cloud AIP mit Ihrem Team zu verwenden.