Select Page

Wenn es um das Erstellen von Vertragstests geht, gibt es eine Reihe von Tools, die Sie je nach Umfang und Perspektive der gewünschten Tests verwenden können. PACT ist gut für interne Anbieter- und verbraucherorientierte Tests. Der Frühlingswolkenvertrag wird für diejenigen empfohlen, die sich auf Verbrauchertests konzentrieren. Hoverfly wird in Go mit nativer Unterstützung für Java geschrieben, die innerhalb von JUnit-Test ausgeführt werden kann. Hoverfly kann zum Testen von REST-APIs sowie zum Testen von Aufrufen zwischen Microservices verwendet werden. Ein Consumer verfügt in der Regel über eine Clientklasse oder einen Dienstprogrammhelfer im Projekt, das die Aufrufe an den Anbieter ausführt. Die Verbrauchertests drehen sich im Wesentlichen um die Durchführung von Komponententests für diesen Helfer, bei denen der Mock-Service des Pakt-Frameworks mit Antworten in Dosen beantwortet wird, die auf den festgelegten Erwartungen während des Komponententest-Setups basieren. Das Ergebnis eines erfolgreichen Vertragstestlaufs ist die Pakt-Vertragsdatei zwischen Verbraucher und Anbieter. Service bean PersonService.java, die nur ein paar Person Entität im Speicher auffüllt und gibt die eine, wenn gefragt.

contract-rest-service/src/main/java/hello/PersonService.java Ich bin seit 1998 in Testing und QA. Ja, wir hatten damals Computer. Nein, meine erste Tablette war nicht aus Stein. Wenn Tests erfolgreich sind, wird ein Vertrag an den Broker veröffentlicht, sodass er im CI-Schritt vor dem Broker heruntergeladen werden kann, um in End-to-End-Tests als verspottete Anbieter verwendet zu werden. Am besten ist es, zu ermitteln, welche funktionale API oder andere Microservices-Tests effektiv mit vertragsbasierten Komponententests getestet werden können, damit Sie die Testbemühungen nicht duplizieren. Beispielsweise werden bei End-to-End-Funktionstests Fehlkonfigurationen aufgedeckt, die in resultierenden Daten oder der Benutzeroberfläche angezeigt werden. Codeüberprüfungen sind nützlich, um nicht standardmäßige Klassen- und Objektentwicklung aufzudecken. Alle Anbieter, mit denen der Verbraucher interagieren muss, werden durch das Herunterladen der Verträge und Spinn-up-Mocks mithilfe von Versorgungsunternehmen aus dem Paktrahmen erstellt. Die Mocks antworten mit Antworten in Dosen, basierend auf der Art und Weise, wie der Vertrag erstellt wurde. Was wäre, wenn das Anbieterteam den Vertrag nicht wie vom Verbraucher erwartet und vereinbart umsetzte? Was wäre, wenn die API bei der ersten Veröffentlichung wie erwartet funktionierte, aber ein paar Releases auf der Straße das Anbieterteam den API-Vertrag durch Änderung einiger der Semantik in der Antwortnutzlast brach? Vertragsbasierte Tests hingegen sind weniger intensiv und können häufiger durchgeführt werden, sodass bei jeder Bereitstellung des Codes umfangreiche Rauchtests für die Abdeckung bereitgestellt werden.

HINWEIS: Die “UI-Tests” an der Spitze der Pyramide werden hier oft auch synonym mit “integrierten End-to-End-Tests (e2e)” bezeichnet. Der vom Hersteller vorgelegte Vertrag sollte als einfacher Frühjahrstest verzehrt werden. Beim Implementieren von Vertragstests in Ihrer Organisation ist Postman der Ausgangspunkt. Diese Blaupause kann für alle Mitglieder Ihres Arbeitsbereichs freigegeben werden, sodass jeder die neueste Version erhalten kann. Sobald sich beide Teams auf den API-Vertrag geeinigt haben, kann sich das Verbraucherteam an das Schreiben von Tests wagen, die die Interaktionen und ihre Erwartungen manifestieren. Das Ergebnis der Ausführung dieser Tests wird im Wesentlichen zu einem Vertrag, der im Wesentlichen eine JSON-Darstellung des API-Vertrags ist, in der alle erwarteten Interaktionen angegeben werden. Eines der Argumente gegen vertragsbasierte Tests ist, dass es nicht die volle Funktionalität abdeckt und nur die Oberfläche zerkratzt.