Von der allgemeinen Frage zum prüfbaren Qualitätsprozess
Schnittstellen automatisch testen: APIs, Dateien und Legacy-Daten sicher validieren
„Wie kann man Schnittstellen automatisch testen?“ Die Frage klingt nach einer einzelnen Methode. In der Praxis ist sie zunächst zu allgemein. Eine Web-API, eine JSON-Datei aus einem SFTP-Postfach und ein nächtlicher Export aus einem Legacy-System übertragen zwar alle Daten – geprüft werden müssen sie aber auf unterschiedliche Weise.
Die Kurzantwort lautet deshalb: Durch Schema-Validierung – aber es kommt auf die Schnittstelle an. Dieser Artikel entwickelt daraus eine belastbare Idee für ein kleines, erweiterbares Projekt. Er ist bewusst als erste Project-Page angelegt: Hier steht der aktuelle Stand, im Logbuch dokumentieren wir die Entwicklung. Eigene Sub-Artikel entstehen erst, wenn eine Iteration genug Substanz dafür hat.

Aktueller Stand
Diese Box fasst den aktuellen Stand für alle zusammen, die später wiederkommen. Die Abschnitte darunter erklären die geltende Idee; im Logbuch halten wir die Entwicklung fest.
- Phase: Iteration 0 – Vertrag und gemeinsame Sprache
- Geltende Entscheidung: JSON Schema Draft 2020-12 als erster Datenvertrag; OpenAPI, XSD und Adapter-Profile bleiben typspezifisch
- Nächster sichtbarer Schritt: eine JSON-Datei gegen ein versioniertes Schema prüfen und PASS/FAIL mit Fehlerpfad ausgeben
- Noch nicht entschieden: Laufzeit der ersten CLI, Report-Format und der Zeitpunkt für einen eigenen YAML-Vertrag
- Sub-Artikel: noch keine – die initiale Fassung bleibt auf dieser Seite
Die Kurzantwort
Schnittstellen testet man automatisch mit mehreren Prüfschichten: Verbindung und Authentifizierung, Parsing, Schema oder Vertrag, fachliche Regeln und – falls nötig – ein Abgleich mit Erwartungs- oder Referenzdaten.
- Den Typ der Schnittstelle und ihren Transportweg bestimmen.
- Ein versioniertes Schema oder einen formalen Schnittstellenvertrag festlegen.
- Einen Adapter für HTTP, Dateiübertragung oder das Legacy-Format verwenden.
- Die eingehenden Daten parsen und gegen das Schema prüfen.
- Zusätzlich fachliche Regeln, Mengen, Querverweise und Dubletten prüfen.
- Ein maschinenlesbares Ergebnis mit Fehlerpfad, Datei, Request-ID oder Datensatznummer erzeugen.
Merksatz: Ein Schema beantwortet „Ist die Nachricht strukturell erlaubt?“. Ein vollständiger Schnittstellentest beantwortet zusätzlich „Konnte ich sie sicher abholen?“ und „Ist sie fachlich plausibel?“
🔴 Ein verbreiteter Irrtum
„Wenn die Datei dem Schema entspricht, funktioniert die Schnittstelle.“
Das stimmt nur für einen Teil der Strecke. Eine Datei kann strukturell gültig und trotzdem unbrauchbar sein – etwa weil sie im falschen Ordner liegt, doppelt geliefert oder falsch codiert wurde. Eine API kann gültiges JSON liefern und trotzdem den falschen HTTP-Status, eine unerwartete Version oder eine inkonsistente Seitenzählung zurückgeben.
Schema-Validierung ist deshalb der zentrale Baustein, aber nicht der komplette Testplan.
Warum die Frage zu allgemein ist
Der Begriff Schnittstelle beschreibt zunächst nur eine Grenze zwischen zwei Systemen. Über diese Grenze können HTTP-Requests und -Responses fließen. Es können aber auch Dateien in einem FTP- oder SFTP-Postfach liegen, Nachrichten in einer Queue warten oder Datensätze aus einem alten Host-Export kommen. Jede Variante bringt eigene Fehlerbilder mit.
| Schnittstellentyp | Typische Fehler | Geeigneter Startpunkt |
|---|---|---|
| Web-API | Falscher Statuscode, Authentifizierung, kaputte Response-Struktur, Versionsbruch, Rate Limit | OpenAPI-Vertrag, JSON Schema, HTTP- und Contract-Tests |
| Datei per FTP/SFTP | Datei fehlt, falscher Name, Encoding, Trennzeichen, Spaltenreihenfolge, unvollständige Übertragung | Transport- und Dateiadapter plus Format-Schema |
| Legacy-Export | Fixed-Width-Verschiebung, implizite Codes, alte Datumsformate, DDL ohne Fachregeln, Mischversionen | Parser-Profil, aus Beispielen/DDL abgeleitetes Schema und fachliche Zusatzregeln |
| Message Queue | Falsches Topic, fehlende Message-Properties, Reihenfolge, Wiederholung, Dead Letter | Nachrichtenvertrag, Consumer-Test und Idempotenzprüfung |
Die erste Designentscheidung lautet daher nicht „Welches Test-Framework verwenden wir?“, sondern: Welche Eigenschaften einer Übergabe sollen als Vertrag gelten? Erst danach wählen wir Validator, Client und Test-Framework aus.
Was soll eigentlich getestet werden?
Ein guter automatischer Test lässt sich in Ebenen zerlegen. Das verhindert, dass ein einziger grüner Testlauf zu viel verspricht.
| Ebene | Frage | Beispiel |
|---|---|---|
| Transport | Ist der Kommunikationsweg erreichbar? | HTTP-Endpunkt, SFTP-Verzeichnis, Port, Timeout, TLS- beziehungsweise Host-Key-Prüfung |
| Authentifizierung | Darf der Test-Client zugreifen? | API-Key, OAuth 2.0 Client Credentials, mTLS, Basic Auth im Ausnahmefall, SSH-Key |
| Parsing | Kann die Antwort als Daten gelesen werden? | JSON, XML, CSV, UTF-8, EBCDIC-Konvertierung, Fixed-Width, ZIP |
| Struktur | Entspricht die Nachricht dem vereinbarten Vertrag? | Pflichtfelder, Datentypen, Wertebereiche, Reihenfolge, zusätzliche Felder |
| Fachlichkeit | Ist die Nachricht inhaltlich plausibel? | Von-Datum liegt vor Bis-Datum, Summe stimmt, Statusübergang ist erlaubt |
| Vollständigkeit | Fehlt eine Lieferung oder ein Datensatz? | Datei wird erwartet, Datensatzanzahl stimmt, laufende Nummer ohne Lücke |
| Wiederholbarkeit | Was passiert bei Retry oder doppelter Lieferung? | Idempotenzschlüssel, Dublettenprüfung, sichere Wiederanlaufstrategie |
Für die erste Version genügt es, diese Ebenen sichtbar zu machen und pro Adapter nur die passenden Prüfungen zu aktivieren. Nicht jede Legacy-Datei braucht OAuth, und nicht jede API braucht eine Prüfung des Dateinamens. Eine gemeinsame Ergebnisstruktur hilft aber dabei, Berichte unabhängig von der Quelle verständlich zu halten.
Schnittstellentypen und Startpunkte
Die Übersicht oben enthält bewusst auch Message Queues. Für die erste Projektfassung konzentrieren wir uns auf drei Startpunkte: Web-API, Datei und Legacy-Export. Queues kommen später hinzu, sobald der gemeinsame Kern steht.
1. Web-APIs: Vertrag plus Verhalten
Bei einer HTTP-API ist die Response mehr als ein Datenobjekt. Auch Methode, URL, Header, Statuscode, Laufzeit, Authentifizierung und Fehlerformat gehören zum Vertrag. Ein Schema kann prüfen, ob customerId eine Zeichenkette ist und items ein Array enthält. Es entscheidet aber nicht allein, ob GET /orders/123 bei fehlender Berechtigung mit 403 oder 404 antworten soll.
Für APIs ist deshalb OpenAPI als äußerer HTTP-Vertrag sinnvoll. Die Datenmodelle können darin mit JSON-Schema-kompatiblen Regeln beschrieben werden. Darauf bauen Tests für Statuscodes, Header, Requests und Responses auf. Der Validator ist ein Teil des Contract-Tests – nicht sein Ersatz.
2. Dateien: erst lesen, dann validieren
Eine per FTP oder SFTP bereitgestellte Datei hat Eigenschaften außerhalb ihres Inhalts: Namenskonvention, Ablageort, Lieferfenster, Kompression, Encoding, Prüfsumme und eine Regel für „fertig geschrieben“. Eine valide CSV-Datei kann trotzdem abgeschnitten sein, wenn der Sender sie noch hochlädt und der Empfänger sie zu früh abholt.
Dafür braucht der Datei-Adapter einen klaren Ablauf: Datei finden, Stabilität oder Marker prüfen, sicher übertragen, Hash und Größe dokumentieren, parsen, validieren, in Quarantäne oder Verarbeitung verschieben und das Ergebnis protokollieren.
3. Legacy-Schnittstellen: Vertrag aus Realität und Regeln
Bei alten Schnittstellen existiert das Schema häufig nicht als gepflegte Datei. Dann sind Beispieldaten, DDL-Scripte, Feldbeschreibungen, COBOL-Copybooks, RPG-Quellcode (beispielsweise RPGLE) oder ein bestehender Importer wertvolle Hinweise. Sie liefern aber nicht automatisch die fachliche Wahrheit. Ein Feld kann laut DDL VARCHAR(10) sein und trotzdem nur einen festen Statuscode erlauben.
Die sinnvolle Reihenfolge lautet: einen Schema-Entwurf ableiten, ihn mit der Fachlichkeit abgleichen, bewusst freigeben und als versionierten Vertrag speichern. Die automatische Ableitung spart Arbeit. Sie ersetzt aber nicht die Entscheidung, welche Abweichung ein Fehler und welche eine erlaubte Ausnahme ist.
Welches Schema-Format passt?
Die naheliegenden Formate haben unterschiedliche Rollen. Deshalb sollten sie nicht gegeneinander ausgespielt werden.
| Format | Stärke | Rolle im Projekt |
|---|---|---|
| JSON Schema | Strukturelle und teilweise semantische Regeln für JSON-Daten, breit einsetzbar | Primärer Datenvertrag für die erste Version, insbesondere JSON/JSONL und normalisierte Adapterdaten |
| OpenAPI | HTTP-Routen, Methoden, Parameter, Statuscodes, Security und Datenmodelle in einem API-Vertrag | API-Adapter und Contract-Tests; nicht als universelles Dateiformat |
| XML Schema / XSD | Etablierte Validierung von XML-Struktur, Typen, Namespaces und Kardinalitäten | XML-Adapter; vorhandene XSDs direkt nutzen |
| YAML Schema | Kann YAML-spezifische Anwendungsfälle adressieren | Später evaluieren; YAML zunächst parsen und das resultierende Datenmodell gegen JSON Schema prüfen, sofern es fachlich passt |
| Adapter-Profil | Beschreibt CSV, Fixed-Width oder proprietäre Formate, die kein passendes Standard-Schema haben | Notwendige Ergänzung für Legacy-Dateien; Ergebnis wird in ein gemeinsames Prüfmodell übersetzt |
🟢 Unsere vorläufige Entscheidung
JSON Schema Draft 2020-12 wird das erste kanonische Daten-Schema. OpenAPI und XSD bleiben fachlich passende Verträge für ihre jeweiligen Schnittstellentypen. Die Anwendung bekommt keine künstliche Pflicht, alles in JSON Schema umzuschreiben. Sie braucht stattdessen Adapter, die das jeweilige Format korrekt lesen und ein einheitliches Validierungsergebnis liefern.
Warum JSON Schema unser Startpunkt ist
JSON Schema ist für den Einstieg praktisch, weil Schema und Testdaten beide JSON sein können. Es beschreibt Typen, Pflichtfelder, Arrays, Wertebereiche, Muster und Zusammensetzungen. Das Schema lässt sich versionieren, überprüfen und in vielen Programmiersprachen validieren.
Ein minimaler Vertrag für eine Liefermeldung könnte zum Beispiel so beginnen:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://tiny-tool.de/schemas/lieferung-v1.json",
"title": "Lieferung",
"type": "object",
"required": ["messageId", "createdAt", "records"],
"properties": {
"messageId": { "type": "string", "minLength": 1 },
"createdAt": { "type": "string", "format": "date-time" },
"records": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "amount", "currency"],
"properties": {
"id": { "type": "string", "pattern": "^[A-Z0-9-]+$" },
"amount": { "type": "number", "minimum": 0 },
"currency": { "type": "string", "pattern": "^[A-Z]{3}$" }
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
Entscheidend ist, dass der Vertrag verständlich bleibt: Welche Felder sind Pflicht? Welche zusätzlichen Felder sind erlaubt? Wie streng ist ein Format? Und welche Aussagen gehören gar nicht in das Schema, sondern in eine fachliche Regel? Die Regel „Die Summe aller Positionen muss dem Gesamtbetrag entsprechen“ ist häufig in einer eigenen, gut lesbaren Prüflogik besser aufgehoben.
🧭 Schema-Versionen gehören zum Test
Ein Vertrag ohne Version ist schwer zu betreiben. Das Schema sollte eine eindeutige Kennung, eine erwartete Version und möglichst Beispiele für gültige sowie bewusst ungültige Daten besitzen. So kann der Testbericht sagen, gegen welchen Vertrag geprüft wurde – und ein späterer Breaking Change wird nicht als rätselhafter Produktionsfehler sichtbar.
Die geplante Architektur
Der Kern des Projekts soll für jeden neuen Schnittstellentyp wiederverwendbar bleiben. Er übernimmt die gemeinsamen Schritte; Adapter kümmern sich um die jeweiligen Unterschiede.
Intern sollte jeder Adapter dieselbe grobe Schnittstelle anbieten:
- Quelle: Woher kommen Daten und Metadaten?
- Authentifizierung: Wie wird sie konfiguriert, ohne Geheimnisse in Schema oder Repository zu speichern?
- Lesen: Wie wird eine Antwort oder Datei zuverlässig abgeholt?
- Normalisieren: Wie werden Inhalt, Transportdetails und technische Metadaten zusammengeführt?
- Prüfen: Welcher Strukturvertrag und welche fachlichen Regeln gelten?
- Ergebnis: Wie sieht ein einheitlicher Fehler aus, den Menschen und automatisierte Abläufe gleichermaßen verstehen?
Ein Ergebnis sollte mindestens Quelle, Zeitpunkt, Schema-ID, Status und konkrete Fehlerdetails enthalten. Für Dateien kommen Dateiname, Größe und Hash hinzu. Für APIs sind HTTP-Methode, Endpunkt, Statuscode und eine Request- oder Correlation-ID hilfreich. Secrets, Tokens und vollständige personenbezogene Nutzdaten gehören nicht ungefiltert in den Report.
Dateien automatisch prüfen
Für die erste praktische Iteration sind bereitgestellte Dateien ein gutes Ziel. Sie lassen sich reproduzierbar testen, als Testartefakte versionieren und zeigen schnell, welchen Nutzen ein Schema hat.
Der Prüfablauf für Datei-Schnittstellen
- Den erwarteten Eingang prüfen: Pfad, Dateiname, Lieferfenster und erlaubte Erweiterung.
- Erkennen, ob die Datei vollständig geschrieben wurde – etwa über eine temporäre Endung, eine Done-Datei, eine stabile Größe oder eine Prüfsumme.
- Datei sicher abholen und technische Metadaten erfassen.
- Encoding und Dateiformat prüfen, bevor die erste Fachregel läuft.
- Datensätze parsen und gegen das Format-Schema validieren.
- Fachliche Regeln, Mengen und Dubletten prüfen.
- Bei Fehlern die Datei unverändert in Quarantäne ablegen und einen nachvollziehbaren Bericht erzeugen.
Für JSON und JSONL kann der JSON-Schema-Validator direkt auf den geparsten Daten arbeiten. Bei CSV oder Fixed-Width braucht der Adapter zusätzlich Informationen wie Trennzeichen, Header-Regel, Spaltenposition, Encoding und Dezimalformat.
{
"kind": "file",
"format": "csv",
"encoding": "UTF-8",
"delimiter": ";",
"header": ["id", "amount", "currency"],
"columns": {
"id": { "type": "string", "required": true },
"amount": { "type": "decimal", "minimum": 0, "required": true },
"currency": { "type": "string", "pattern": "^[A-Z]{3}$", "required": true }
}
}
Das ist kein Versuch, CSV in JSON umzubenennen. Es ist ein konkretes Adapter-Profil, das CSV korrekt liest und dieselben verständlichen Fehlerdetails liefern kann: „Zeile 18, Spalte amount: Dezimalwert ungültig“ oder „Header currency fehlt“. Genau diese Übersetzung macht unterschiedliche Schnittstellen vergleichbar.
⚠️ Dateien nicht zu früh als „fertig“ behandeln
Der häufigste Fehler bei Datei-Schnittstellen ist nicht ein falscher Datentyp, sondern der Zugriff auf eine Datei, die noch übertragen wird. Eine stabile Dateigröße oder eine Done-Datei kann helfen, ist aber kein universelles Rezept. Je nach Gegenstelle sind atomisches Umbenennen, Prüfsummen oder ein abgestimmtes Lieferprotokoll besser. Dieser Transporttest gehört vor die Schema-Validierung.
Web-APIs mit Vertrag und Authentifizierung testen
Der API-Adapter kann sich auf einen bekannten Endpunkt konzentrieren und trotzdem mehrere Prüfungen durchführen:
- Erreichbarkeit, TLS und Timeout-Verhalten
- korrekte HTTP-Methode, URL, Header und Content-Type
- Authentifizierung und Berechtigungen
- erwartete Statuscodes für Erfolg und definierte Fehlerfälle
- Request- und Response-Schema
- Pagination, Rate Limits, Correlation-ID und Wiederholbarkeit
Bei der Authentifizierung sollte der Test nur ein Profil referenzieren, zum Beispiel oauth2-client-credentials, api-key, mtls oder basic. Die konkreten Werte kommen aus Umgebungsvariablen, einem Secret Store oder einer CI-Konfiguration. Weder der Schema-Entwurf noch ein Test-Report sollte echte Tokens, private Zertifikate oder Passwörter enthalten.
| Option | Typischer Einsatz | Worauf der Test achten sollte |
|---|---|---|
| API-Key | Einfache interne oder externe APIs | Headername, fehlender Key, falscher Key und versehentliche Ausgabe im Log |
| OAuth 2.0 Client Credentials | Service-zu-Service-Kommunikation | Token-Abruf, Scope, Ablauf, erneuter Abruf und sichere Maskierung |
| mTLS | Stärker abgesicherte B2B-APIs | Zertifikatskette, Ablauf, Client-Zertifikat und getrennte Testumgebung |
| SSH-Key | SFTP und bestimmte Legacy-Übertragungen | Host-Key-Prüfung, Berechtigungen, Schlüsselpfad und kein privater Key im Report |
| Basic Auth | Nur wenn der Bestand es verlangt | TLS, Secret-Handling, Rotation und möglichst enger Testzugang |
Für den Start reichen wenige repräsentative Szenarien: ein gültiger Request, ein fehlendes Pflichtfeld, ein ungültiger Typ, ein nicht berechtigter Zugriff und ein definierter Serverfehler. So wird nicht nur der grüne Happy Path automatisiert.
Legacy-Schnittstellen nachträglich beschreiben
Ein nachträglich erstelltes Schema ist kein minderwertiger Ersatz für eine offizielle Spezifikation. Es ist häufig der realistischste Weg, um aus implizitem Wissen einen überprüfbaren Vertrag zu machen.
Beispieldaten als Ausgangspunkt
Aus mehreren historischen Dateien lässt sich ein erster Schema-Entwurf ableiten: Welche Spalten kommen immer vor? Welche Werte haben denselben Datentyp? Welche Felder sind gelegentlich leer? Bei nur einem Beispiel wäre die Gefahr groß, Zufälligkeiten als Regeln festzuschreiben. Deshalb sollten Beispiele aus verschiedenen Tagen, Grenzfällen und Fehlerfällen betrachtet werden.
DDL als technischer Hinweis
DDL-Scripte liefern Spaltennamen, Längen, Datentypen, Nullbarkeit und manchmal Schlüssel. Das ist eine gute strukturelle Basis. Sie beantworten aber selten Fragen wie „Darf ein Auftrag den Status X haben?“ oder „Muss die Summe exakt aufgehen?“. Diese Regeln gehören in ein ergänzendes Profil oder in fachliche Tests.
Der Review-Schritt ist Teil der Automatisierung
- Beispiele und DDL importieren.
- Den Schema-Entwurf erstellen und unsichere Regeln markieren.
- Fachliche Eigentümer nach Pflichtfeldern, Codes und Grenzwerten fragen.
- Gültige und ungültige Fixtures festlegen.
- Schema als Version 1 freigeben und in die Testläufe aufnehmen.
- Neue Abweichungen als bewusste Schemaänderung behandeln – nicht als stilles „Anpassen, bis es grün ist“.
🟢 Gute Legacy-Regel
Aus Beispieldaten darf man Vorschläge ableiten, aber keine Geschäftsregeln erfinden. Ein automatisch generiertes Schema sollte als Entwurf erkennbar sein. Erst die fachliche Freigabe macht daraus einen belastbaren Schnittstellenvertrag.
Aus Validierung wird Qualitätssicherung
Ein Validator liefert zunächst Pass oder Fail. Für den Betrieb brauchen Menschen und Automatisierung aber mehr Kontext. Ein brauchbarer Bericht beantwortet mindestens vier Fragen:
- Was wurde geprüft? Quelle, Datei, Endpunkt, Testlauf und Umgebung.
- Gegen welchen Vertrag? Schema-ID, Version und Adapter-Profil.
- Was ist fehlgeschlagen? Fehlercode, Pfad, Zeile, Datensatznummer und verständliche Meldung.
- Was soll als Nächstes passieren? Wiederholen, Quarantäne, fachliche Prüfung oder Schema-Änderung.
| Ergebnis | Bedeutung | Aktion |
|---|---|---|
| PASS | Transport, Parsing und Regeln erfolgreich | Normal weiterverarbeiten |
| WARN | Technisch erlaubt, aber auffällig oder außerhalb eines empfohlenen Bereichs | Beobachten, Schwelle prüfen, ggf. fachlich klären |
| FAIL_STRUCTURAL | Nachricht oder Datei verletzt das Format-Schema | Quarantäne, Gegenstelle informieren, Vertrag prüfen |
| FAIL_SEMANTIC | Struktur stimmt, fachliche Regel nicht | Fachliche Klärung oder Korrektur der Quelldaten |
| FAIL_TRANSPORT | Quelle nicht erreichbar oder Authentifizierung fehlgeschlagen | Retry-Regel, Alarmierung, Zugang und Netzwerk prüfen |
Besonders wertvoll ist die Trennung von technischem und fachlichem Fehler. Wenn eine Datei syntaktisch sauber ist, aber die Summe nicht stimmt, hilft ein anderer Ansprechpartner als bei einem kaputten Encoding. Die gleiche Unterscheidung macht CI-Checks und Monitoring aussagekräftiger.
Die Idee als fortlaufende Project-Page
Der Artikel darf mit dem Projekt wachsen. So bleiben Entscheidungen nachvollziehbar, und auch lehrreiche Irrwege können ihren Platz behalten. Spätere Implementierungen müssen dadurch nicht so wirken, als wäre die endgültige Architektur schon am ersten Tag bekannt gewesen.
Wir halten die Entwicklung in drei Schichten fest: Die Project-Page beschreibt den geltenden Stand. Das Logbuch bildet die Chronik und wird nur um neue Einträge ergänzt. Ein Sub-Artikel entsteht erst, wenn eine Iteration eigene Beispiele, Ergebnisse oder Fehlversuche mitbringt – nicht als leere Hülle für jede Roadmap-Zeile.
| Schicht | Aufgabe | Wann sie wächst |
|---|---|---|
| Project-Page | Geltender Stand: Kurzantwort, Architektur, Entscheidungen, Roadmap | Immer, wenn sich die Idee ändert – der Text wird aktualisiert, nicht nur ergänzt |
| Logbuch | Chronik, die um Datum, Entscheidung, Begründung und Auswirkung ergänzt wird | Bei jeder Iteration, auch wenn das Ergebnis „nicht umsetzen“ lautet |
| Sub-Artikel | Tiefe zu einer abgeschlossenen oder reichhaltigen Iteration | Erst wenn Fixtures, Code, Messwerte oder ein belastbarer Fehlversuch vorliegen |
🟢 Schreibregel für Iterationen
Kein leerer Sub-Artikel auf Vorrat. Iteration 1 bleibt ein Logbuch-Eintrag, bis ein reproduzierbares JSON-Beispiel und ein Prüfbericht existieren. Dann bekommt sie eine eigene Seite, und diese Project-Page verlinkt nur die Kurzfassung plus den aktuellen Stand.
📌 Was diese initiale Version festhält
- Die Ausgangsfrage braucht eine Einordnung nach Schnittstellentyp.
- Schema-Validierung ist der gemeinsame Kern für strukturelle Qualität.
- Transport, Authentifizierung, Parsing und fachliche Regeln bleiben eigene Prüfschichten.
- JSON Schema ist der erste kanonische Datenvertrag.
- OpenAPI, XSD und Adapter-Profile werden nicht künstlich ersetzt.
- Beispieldaten und DDL können Legacy-Verträge vorbereiten, brauchen aber Review.
- Das spätere Repository soll Fixtures, Adapter, CLI und Reports nachvollziehbar versionieren.
Jede größere Änderung macht drei Dinge sichtbar: Entscheidung, Begründung und Auswirkung. Wenn später ein anderer Validator gewählt wird oder YAML eine eigene Rolle bekommt, ist das kein Bruch der Idee, sondern eine dokumentierte Iteration. Veraltete Aussagen im Artikel werden aktualisiert; das Logbuch bewahrt, warum sie einmal galten.
Erste Entwicklungsiterationen
Das GitHub-Repository folgt bewusst später. Für die Initialplanung teilen wir die Entwicklung in kleine, demonstrierbare Schritte:
| Iteration | Ergebnis | Warum diese Reihenfolge? |
|---|---|---|
| 0 – Vertrag | Ergebnisformat, Adapter-Schnittstelle, Sicherheitsregeln und Beispiel-Schema | Gemeinsame Sprache vor konkreter Technik |
| 1 – JSON-Datei | CLI oder kleines Testprogramm liest JSON und erzeugt PASS/FAIL mit Fehlerpfad | Schnellster Nutzen und einfach reproduzierbare Testdaten |
| 2 – CSV/Legacy-Datei | Delimiter-, Encoding- und Fixed-Width-Profile inklusive Zeilennummern | Der Unterschied zwischen Datenmodell und Parser wird sichtbar |
| 3 – HTTP-Adapter | OpenAPI-/JSON-Schema-Prüfung für Status, Header, Request und Response | Transport- und Vertragsprüfung kommen zusammen |
| 4 – SFTP-Adapter | Sicheres Abholen, Stabilitätsprüfung, Hash, Quarantäne und Retry | Der Datei-Lebenszyklus wird produktionsnäher |
| 5 – Ableitung | Kandidatenschema aus Beispieldaten und DDL mit Review-Ausgabe | Legacy-Bestand wird schrittweise beschreibbar |
| 6 – CI und Repository | Fixtures, Regressionstests, JSON/HTML-Report und GitHub-Beispiele | Aus dem Experiment wird ein reproduzierbares Projekt |
Die Reihenfolge ist kein Dogma. Wenn ein konkretes Vorhaben zuerst SFTP benötigt, kann Iteration 4 vorgezogen werden. Wichtig ist, den Kern klein zu halten und jede Erweiterung an einem realistischen Beispiel zu beweisen.
Logbuch
Neueste Einträge stehen oben. Ein Eintrag ist kurz: Was wurde entschieden oder gebaut, warum, und was ändert sich an der geltenden Idee? Lange Belege, Code und Fixtures gehören später in einen Sub-Artikel.
13. September 2026 · Iteration 0 · Initiale Project-Page
Entscheidung: Die Ausgangsfrage wird nach Schnittstellentyp zerlegt. JSON Schema Draft 2020-12 ist der erste kanonische Datenvertrag. OpenAPI, XSD und Adapter-Profile bleiben für HTTP, XML und Legacy-Formate zuständig.
Begründung: Ein einziger „Schnittstellentest“ verspricht zu viel. Schema-Validierung ist der gemeinsame Kern, reicht aber ohne Transport, Authentifizierung, Parsing und Fachlichkeit nicht.
Auswirkung: Diese Seite ist der geltende Stand. Es gibt noch kein Repository, keinen Runner und keinen Sub-Artikel. Nächster Nachweis: JSON-Datei gegen versioniertes Schema, Ergebnis mit Fehlerpfad.
Offen geblieben: Laufzeit der CLI, konkretes Report-Format, Umgang mit YAML als eigenem Vertrag.
Offene Fragen
Diese Liste zeigt, was bewusst noch nicht entschieden ist. Sobald eine Frage beantwortet ist, wandert die Entscheidung ins Logbuch und in den geltenden Stand – die Liste wird dann kürzer.
- In welcher Sprache startet das erste Testprogramm – klein und lokal reproduzierbar oder direkt für die CI vorbereitet?
- Ist das maschinenlesbare Ergebnis eigenes JSON, SARIF, HTML oder zuerst nur strukturierte Konsole?
- Wie streng sollen unbekannte Felder behandelt werden: verbieten, warnen oder typspezifisch konfigurieren?
- Wann bekommt YAML einen eigenen Vertrag – und wann reicht „parsen, dann gegen JSON Schema prüfen“?
- Welches Quarantäne- und Retry-Modell gilt als Mindeststandard für Datei-Adapter?
Was Schema-Validierung nicht leistet
Ein Schema kennt nur Regeln, die darin beschrieben sind. Es kann keine fehlende Fachlichkeit erraten, keine Gegenstelle zur Lieferung bewegen und keinen falsch konfigurierten Benutzerzugang reparieren. Außerdem gibt es Eigenschaften, die absichtlich außerhalb eines reinen Daten-Schemas liegen:
- Verfügbarkeit: Ist der Endpunkt oder das Postfach im Lieferfenster erreichbar?
- Sicherheit: Ist TLS korrekt, wird der Host-Key geprüft und werden Secrets geschützt?
- Performance: Antwortet die API innerhalb der vereinbarten Zeit und unter Last?
- Kompatibilität: Kann ein alter Consumer eine neue, zusätzliche oder entfernte Eigenschaft verarbeiten?
- Fachlichkeit: Passt die Nachricht zum Bestand, zur Reihenfolge und zur Geschäftsregel?
- Betrieb: Werden Retry, Idempotenz, Duplikate und Quarantäne korrekt behandelt?
Gerade diese Grenzen machen die Methode belastbar. Man kann für jede Eigenschaft den passenden Test ergänzen, statt einen einzelnen „Schema-Test“ mit Erwartungen zu überladen.
Glossar
Die wichtigsten Begriffe für die erste Projektfassung.
- Adapter
- Ein Baustein, der einen konkreten Transport oder ein Dateiformat an den gemeinsamen Prüfablauf anschließt.
- API
- Programmierschnittstelle, hier meist eine über HTTP erreichbare Web-API mit Requests, Responses und definierten Statuscodes.
- Contract Testing
- Prüfung, ob eine Schnittstelle den vereinbarten Vertrag zwischen Consumer und Provider einhält.
- DDL
- Data Definition Language: SQL-Anweisungen, die Tabellen, Spalten, Typen und Constraints beschreiben können.
- Fixture
- Reproduzierbare Testdaten, zum Beispiel eine gültige JSON-Datei oder ein bewusst fehlerhafter CSV-Fall.
- JSON Schema
- Ein JSON-basiertes Schemaformat zur Beschreibung und strukturellen Validierung von JSON-Daten.
- Legacy-Schnittstelle
- Bestehende, oft ältere Integrationsstrecke mit proprietärem Format, fehlender Spezifikation oder historisch gewachsenen Regeln.
- OpenAPI
- Eine Spezifikation, mit der HTTP-APIs inklusive Pfaden, Methoden, Parametern, Responses und Sicherheit beschrieben werden.
- Quarantäne
- Getrennter Ablage- oder Statusbereich für fehlerhafte Nachrichten, damit sie nicht versehentlich weiterverarbeitet werden.
- Schema
- Formale Beschreibung, welche Struktur und welche Werte eine Nachricht oder Datei haben darf.
- XSD
- XML Schema Definition: etabliertes Schemaformat für XML-Strukturen, Datentypen und Kardinalitäten.
Häufige Fragen
Reicht JSON Schema für alle Schnittstellen?
Nein. JSON Schema ist ein guter Startpunkt für JSON-Daten und normalisierte Testobjekte. HTTP-Verträge brauchen zusätzlich OpenAPI-Informationen, XML bleibt mit XSD gut beschrieben und CSV oder Fixed-Width benötigen Parser-Profile. Die gemeinsame Ebene sollte das Ergebnis sein, nicht zwangsläufig das Eingabeformat.
Kann man eine CSV-Datei gegen JSON Schema prüfen?
Nach dem Parsen kann man die Daten in ein passendes JSON-Modell überführen und dagegen prüfen. Vorher muss aber der CSV-Adapter Regeln wie Encoding, Trennzeichen, Header und Spaltenpositionen prüfen. Sonst validiert man womöglich ein falsch eingelesenes Modell.
Kann man ein Schema aus Beispieldaten erzeugen?
Ja, als Entwurf. Mehrere Beispiele helfen, Typen, Pflichtfelder und Wertebereiche zu erkennen. Die fachliche Prüfung bleibt aber notwendig, weil ein Beispiel keine zuverlässige Aussage darüber liefert, was künftig erlaubt sein soll.
Was ist bei FTP und SFTP zusätzlich zu testen?
Erreichbarkeit, Authentifizierung, Host- beziehungsweise Zertifikatsprüfung, Pfad, Dateiname, Lieferfenster, vollständige Übertragung, Hash, Dateigröße, Quarantäne und Retry-Verhalten. Erst danach wird der Dateiinhalt strukturell und fachlich validiert.
Welche Authentifizierung sollte ein API-Adapter unterstützen?
Als sinnvolle Profile bieten sich API-Key, OAuth 2.0 Client Credentials und mTLS an. Basic Auth sollte nur aus Kompatibilitätsgründen vorhanden sein und immer über eine geschützte Verbindung laufen. Geheimnisse gehören in eine sichere Laufzeitkonfiguration, nicht in Schema-Dateien oder Logs.
Ist ein grüner Schema-Test ein Integrationstest?
Nicht automatisch. Ein Test mit einer lokalen Fixture prüft den Parser und das Schema. Ein echter Integrationstest bezieht außerdem die reale Gegenstelle oder eine realitätsnahe Testumgebung, Transport, Authentifizierung und oft auch Wiederholungs- und Fehlerfälle ein.
Warum ist der Artikel als Project-Page gedacht?
Weil die beste Architektur erst durch echte Beispiele entsteht. Die Seite hält den geltenden Stand, das Logbuch die Chronik, und Sub-Artikel erst die Iterationen mit Substanz. Leserinnen und Leser sehen dadurch nicht nur ein fertiges Tool, sondern den Weg dorthin.
Fazit: Schnittstellen automatisch testen heißt Verträge prüfbar machen
Die Ausgangsfrage ist als Kurzfrage zu allgemein – und gerade deshalb ein guter Startpunkt. APIs, Dateien und Legacy-Schnittstellen haben unterschiedliche Transportschichten, Formate und Fehlerbilder.
Schema-Validierung ist der gemeinsame Kern: Sie macht sichtbar, ob eine Nachricht strukturell dem vereinbarten Vertrag entspricht. Für eine belastbare Qualitätssicherung kommen Transport, Authentifizierung, Parsing, fachliche Regeln, Vollständigkeit und Wiederholbarkeit dazu.
Als erste Architekturentscheidung setzen wir auf JSON Schema für JSON-Daten, ergänzen OpenAPI für HTTP, XSD für XML und passende Adapter-Profile für CSV, Fixed-Width und proprietäre Legacy-Formate.
Nächster Schritt: ein kleines reproduzierbares Beispiel, das eine JSON-Datei gegen ein versioniertes Schema prüft und ein verständliches Ergebnis ausgibt. Daraus kann iterativ ein Werkzeug für echte Schnittstellen werden.
Quellen & weiterführende Informationen
Technischer und redaktioneller Stand dieses initialen Artikels: 13. September 2026. Die Quellen sind bewusst auf die offiziellen Spezifikationsseiten konzentriert.



tiny-tool.de