FACHWISSEN · AUTOMATISIERUNG & TRANSFORMATIONINSIGHTS · AUTOMATION & TRANSFORMATION
Schnittstellentests: Warum gültiges JSON noch keine kompatible Änderung bedeutetAPI contract tests: Why valid JSON does not guarantee a compatible change

Eine Schnittstelle liefert syntaktisch korrektes JSON und entspricht sogar ihrem Schema. Trotzdem funktioniert der angebundene Prozess nach einem Update nicht mehr. Kompatibilität betrifft mehr als die äußere Form einer Nachricht.
Verbraucher haben konkrete Erwartungen
Ein System, das eine API verwendet, erwartet bestimmte Felder, Werte und Verhaltensweisen. Verbrauchergesteuerte Vertragstests bilden solche tatsächlich genutzten Interaktionen als überprüfbare Beispiele ab. Auf der Anbieterseite wird geprüft, ob diese Erwartungen weiterhin erfüllt werden.
Das ergänzt eine Schnittstellenspezifikation. Ein Schema beschreibt mögliche Strukturen; ein konkreter Test kann beispielsweise prüfen, wie ein bestimmter Anfragefall beantwortet wird. Nicht jede fachliche Bedeutung lässt sich allein aus einem Datentyp ableiten.
Ein selbst entwickeltes Beispiel
Ein Planungsprozess liest den Status „bereit“ und startet danach eine Übergabe. Eine neue API-Version ergänzt weitere Statuswerte. Strukturell bleibt das Feld eine Zeichenkette und das JSON gültig. Wenn der Verbraucher nur zwei bekannte Werte verarbeitet, kann die neue Antwort trotzdem zu einem falschen Standardpfad führen.
Ein geeigneter Test prüft deshalb nicht nur das Vorhandensein des Feldes. Er zeigt, welche Werte der Verbraucher benötigt und wie er auf unbekannte Werte reagiert. Auch eine Umstellung von „fehlend“ auf einen ausdrücklich gesetzten Nullwert kann relevant sein, wenn beide Fälle unterschiedlich behandelt werden.
Verträge gezielt und nicht unnötig eng formulieren
Ein Test, der jedes ungenutzte Feld exakt festschreibt, kann harmlose Erweiterungen blockieren. Eine zu lockere Prüfung übersieht dagegen Veränderungen, die den Ablauf tatsächlich betreffen. Die Grenze sollte sich an der konkreten Verwendung orientieren.
Bei einer Datumsangabe kann beispielsweise entscheidend sein, ob Zeitzone und Format eindeutig sind. Bei einer Liste können Reihenfolge, leere Ergebnisse und mehrseitige Antworten relevant sein. Diese Erwartungen müssen vor einer Änderung bekannt sein, nicht erst nach einer Störung.
Kein Ersatz für das Gesamtsystem
Ein bestandener Vertragstest belegt die geprüften Interaktionen. Er ersetzt keine Prüfung von Berechtigungen, Laufzeitverhalten, Netzwerkausfällen oder einem vollständigen fachlichen Ablauf. Für eine Freigabe werden die jeweiligen Nachweise zusammengeführt.
In großen Projekten hilft eine Übersicht darüber, welcher Verbraucher welche Version einer Schnittstelle nutzt. Dadurch werden Änderungen gezielter abgestimmt. Der Test wird zu einem konkreten Abstimmungswerkzeug zwischen Teams und nicht nur zu einer weiteren grünen Anzeige im Build.
An API returns syntactically valid JSON and even conforms to its schema. Yet the connected process stops working after an update. Compatibility involves more than a message’s outer structure.
Consumers have specific expectations
A system using an API expects particular fields, values and behaviour. Consumer-driven contract tests capture interactions that are actually used as verifiable examples. The provider is then checked against those expectations.
This complements an interface specification. A schema describes possible structures; a concrete test can check the response to a particular request. Not every business meaning can be inferred from a data type alone.
An illustrative example
A planning workflow reads the status “ready” and then starts a handover. A new API version adds more status values. The field remains a string and the JSON remains valid. If the consumer only handles two known values, the new response may still send it down an incorrect default path.
A suitable test therefore checks more than the field’s presence. It identifies which values the consumer needs and how it handles unfamiliar values. Changing an omitted field to an explicit null can matter too if the two cases are handled differently.
Keep contracts focused without making them too loose
A test that fixes every unused field exactly can block harmless additions. An overly permissive check can miss changes that affect the workflow. The boundary should follow actual usage.
For a date, an unambiguous format and time zone may matter. For a list, order, empty results and pagination may be relevant. These expectations need to be known before a change, not discovered after an incident.
They do not replace whole-system testing
A passing contract test supports the interactions it checks. It does not replace checks of permissions, runtime behaviour, network failures or a complete business workflow. Release decisions need the relevant evidence together.
In large projects, an overview of which consumer uses which API version helps teams coordinate changes more precisely. Testing becomes a concrete coordination tool rather than simply another green indicator in a build.