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.

KI-generierte Illustration: Zentrale Validierung prüft API-Daten, Dateien und Legacy-Schnittstellen gegen Schemas
KI-generierte Illustration für tiny-tool.de: Eine gemeinsame Prüfstrecke verbindet API-, Datei- und Legacy-Adapter mit Schema-Validierung und einem nachvollziehbaren Prüfbericht.

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.

  1. Den Typ der Schnittstelle und ihren Transportweg bestimmen.
  2. Ein versioniertes Schema oder einen formalen Schnittstellenvertrag festlegen.
  3. Einen Adapter für HTTP, Dateiübertragung oder das Legacy-Format verwenden.
  4. Die eingehenden Daten parsen und gegen das Schema prüfen.
  5. Zusätzlich fachliche Regeln, Mengen, Querverweise und Dubletten prüfen.
  6. 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.

Schnittstellentypen und typische automatische Prüfungen
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.

Prüfebenen für automatische Schnittstellentests
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.

Vergleich von JSON Schema, OpenAPI, XSD und YAML Schema
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:

lieferung.schema.json
{
  "$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

  1. Den erwarteten Eingang prüfen: Pfad, Dateiname, Lieferfenster und erlaubte Erweiterung.
  2. 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.
  3. Datei sicher abholen und technische Metadaten erfassen.
  4. Encoding und Dateiformat prüfen, bevor die erste Fachregel läuft.
  5. Datensätze parsen und gegen das Format-Schema validieren.
  6. Fachliche Regeln, Mengen und Dubletten prüfen.
  7. 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.

Beispiel für ein CSV-Adapter-Profil
{
  "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.

Authentifizierungsoptionen für automatisierte API- und Datei-Tests
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

  1. Beispiele und DDL importieren.
  2. Den Schema-Entwurf erstellen und unsichere Regeln markieren.
  3. Fachliche Eigentümer nach Pflichtfeldern, Codes und Grenzwerten fragen.
  4. Gültige und ungültige Fixtures festlegen.
  5. Schema als Version 1 freigeben und in die Testläufe aufnehmen.
  6. 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:

  1. Was wurde geprüft? Quelle, Datei, Endpunkt, Testlauf und Umgebung.
  2. Gegen welchen Vertrag? Schema-ID, Version und Adapter-Profil.
  3. Was ist fehlgeschlagen? Fehlercode, Pfad, Zeile, Datensatznummer und verständliche Meldung.
  4. Was soll als Nächstes passieren? Wiederholen, Quarantäne, fachliche Prüfung oder Schema-Änderung.
Beispielhafte Ergebnisarten eines Schnittstellentests
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.

Wie diese Project-Page fortgeschrieben wird
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:

Vorgeschlagene Roadmap für das Projekt automatische Schnittstellenqualität
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.

Transparenzhinweis


Transparenzhinweis:
Die Inhalte auf tiny-tool.de werden sorgfältig recherchiert, redaktionell geprüft und regelmäßig aktualisiert. Quellen und Zitate werden möglichst nachvollziehbar angegeben. Dennoch übernehmen wir keine Garantie für Richtigkeit, Vollständigkeit oder Aktualität der bereitgestellten Informationen. Irrtümer sind nicht ausgeschlossen.

Redaktion und Einsatz von KI: Bei der Erstellung von Inhalten können digitale Werkzeuge – darunter auch KI-basierte Assistenzsysteme – unterstützend eingesetzt werden, etwa bei Recherche, Strukturierung, sprachlicher Überarbeitung, Übersetzung, Codeanalyse oder visueller Gestaltung. Veröffentlichte Inhalte werden redaktionell geprüft, bearbeitet und von Guido Zeuner freigegeben. Auswahl, Einordnung und Veröffentlichung liegen beim Menschen. KI-Ausgaben gelten nicht als eigenständige Quellen. KI-Systeme sind keine verantwortlichen Autoren oder Redakteure. Weitere Informationen zu Texten, Bildern, Videos und digitalen Personas findest du auf unserer Seite Transparenz beim Einsatz von Künstlicher Intelligenz.

Reichweitenmessung (VG WORT / METIS): Zur Ermittlung der Reichweite einzelner Texte können Zählmarken der VG WORT eingesetzt werden. Im Rahmen der METIS-Zugriffszählung kann eine Client-ID gebildet und ein sogenanntes „METIS Session Cookie“ gesetzt werden. Die Messung dient der statistischen Ermittlung von Textzugriffen und als Grundlage für mögliche Ausschüttungen der VG WORT. Nach Angaben der VG WORT werden dabei keine personenbezogenen Nutzungsprofile erstellt; die Messung dient nicht der Werbung oder dem Marketing-Tracking. Weitere Informationen findest du in unseren Datenschutzhinweisen.

Bitte beachte: Die Inhalte dienen ausschließlich der allgemeinen Information und stellen keine fachliche Beratung dar, insbesondere keine rechtliche, steuerliche, medizinische, technische oder finanzielle Beratung. Die Nutzung der Inhalte erfolgt auf eigene Verantwortung.

Werbung und Affiliate-Links: Einige Beiträge können werbliche Hinweise oder sogenannte Affiliate-Links enthalten. Diese werden entsprechend gekennzeichnet. Beim Klick entstehen dir keine zusätzlichen Kosten; wir erhalten gegebenenfalls eine kleine Provision.

Markenrechtlicher Hinweis: Alle Markennamen, Logos und Produktbezeichnungen sind Eigentum der jeweiligen Rechteinhaber und werden ausschließlich zur Identifikation und Beschreibung verwendet. Eine Verbindung zu den genannten Unternehmen besteht nur, wenn dies ausdrücklich angegeben wird.

Externe Links: Diese Website enthält Verweise auf externe Websites Dritter. Trotz sorgfältiger Prüfung übernehmen wir keine Verantwortung für deren Inhalte. Bei Bekanntwerden rechtswidriger Inhalte werden entsprechende Links geprüft und gegebenenfalls entfernt.