Entropy Data
Was die Datenwelt von der Testpyramide lernen muss – und umgekehrt
Michael Kutz OOP 2027 Februar 2027
OOP 2027 · 02.–05.02.2027
● ● ● dashboard.beispiel-shop.de/umsatz
● Zuletzt aktualisiert: vor 2 Minuten
Umsatz heute
48.230 € ▲ 12 %
Bestellungen
1.284 ▲ 8 %
Ø Warenkorb
37,55 € ▲ 3 %
OOP 2027 · 02.–05.02.2027
● ● ● dashboard.beispiel-shop.de/umsatz
● Zuletzt aktualisiert: vor 21 Tagen
Umsatz heute
— keine Daten
Bestellungen
— keine Daten
Ø Warenkorb
— keine Daten
⚠ Query failed
column "order_total" does not exist
OOP 2027 · 02.–05.02.2027
Team Checkout
besitzt Service & Datenbank
order_total → total_amount
✅ Eigene Tests grün · deployed
Daten-Pipeline
liest die Tabelle – nachts um 3
⚠ Query scheitert – ohne Alarm
📊 Dashboard – leer
🤖 ML-Modell – veraltet
👥 Nachbarteam – blockiert
Tag 0 – deployed, alles grün
Tag 1–20 – niemand merkt etwas
Tag 21 – der Fachbereich ruft an
⚠ Kein Vertrag · kein Test · kein Alarm
OOP 2027 · 02.–05.02.2027
OOP 2027 · 02.–05.02.2027
Daten für Tests
→ Heute nicht unser Thema
≠
Tests für Daten
→ Darum geht es heute
OOP 2027 · 02.–05.02.2027
Zweck
Geschäftsprozesse ausführen
Schnittstelle
Schmale API – definierte Operationen
Typischer Zugriff
Ein Datensatz, aktueller Zustand
Die Tabelle ist …
Implementierungsdetail – gekapselt
Konsumenten
Andere Services & Frontends
vs.
Zweck
Fragen beantworten – auch die von morgen
Schnittstelle
Query-Interface – SQL, Topics, Files
Typischer Zugriff
Millionen Zeilen, Historie, Joins
Die Tabelle ist …
Die Schnittstelle selbst – bewusst veröffentlicht
Konsumenten
Analysten, Dashboards, ML, KI-Agenten
Das Schema ist die API des Datenprodukts – und jede Schnittstelle braucht einen Vertrag.
OOP 2027 · 02.–05.02.2027
OOP 2027 · 02.–05.02.2027
OOP 2027 · 02.–05.02.2027
Risk Storming: ein Workshop-Format aus dem agilen Testen – das Team diskutiert am Kartendeck (TestSphere), welche Qualitätsaspekte für sein Produkt die riskantesten sind. Eine von 20 Qualitäts-Karten heißt „Daten“:
✓
Leistungsfähigkeit
✓
Schutzmaßnahmen
✓
Benutzerfreundlichkeit
◆
Daten
Für Datenprodukte fächert sich „Daten“ auf in:
01
Schema-Stabilität
Spalten & Typen – bricht wie eine API
◆
02
Aktualität
Wann kam die letzte Lieferung?
◆
03
Vollständigkeit
Alle Zeilen da? Wie viel null ist okay?
◆
04
Validität
Wertebereiche, Formate, Plausibilität
◆
05
Konsistenz
Passen die Zahlen zusammen – auch produktübergreifend?
◆
06
Semantik
Netto oder brutto? Bedeutung ist Teil der Qualität
◆
Genau diese Karten schreibt der Data Contract fest – maschinenlesbar und testbar.
OOP 2027 · 02.–05.02.2027
Zwischen Services lösen wir das so: Der Konsument schreibt seine Erwartungen als Vertrag auf – und beide Pipelines testen dagegen. Schritt für Schritt:
Consumer-Pipeline · Team Dashboard
Build & Unit-Tests
wie immer
Contract-Test
gegen einen Mock des Providers
Vertrag publizieren
an den Pact Broker
can-i-deploy ✓
dann Deploy
Pact Broker
verwahrt alle Verträge
Provider-Pipeline · Team Checkout
Build & Unit-Tests
wie immer
Verträge verifizieren
gegen alle Konsumenten-Verträge
Ergebnis melden
zurück an den Broker
can-i-deploy ✓
dann Deploy
Der Vertrag verbindet beide Pipelines – keiner deployt, was den anderen bricht.
OOP 2027 · 02.–05.02.2027
Fast dieselben Pipelines – mit einem Unterschied: Der Contract entsteht nicht in der Pipeline, sondern vorab und gemeinsam. Die Pipelines testen nur noch dagegen.
Consumer-Pipeline · Dashboard-Team
Build & Tests
wie immer
datacontract test ✓
prüft die gelieferten Daten
Ergebnis melden
zurück an die Registry
Deploy ✓
nur bei grünem Contract
Vorab · gemeinsam
Contract vereinbaren
Producer & Consumer, contract-first
Contract-Registry
verwahrt alle Contracts
Producer-Pipeline · Datenprodukt-Team
Build & Transform
z. B. dbt run – wie immer
datacontract test ✓
Schema & Qualität aller Contracts
Ergebnis melden
zurück an die Registry
Deploy ✓
nur bei grünen Contracts
Bricht das Schema, stoppt die Pipeline – nicht das Dashboard.
OOP 2027 · 02.–05.02.2027
Ein Vertrag regelt mehr als die Erwartungen der Konsumenten – beide Seiten versprechen, beide Seiten erwarten:
Der Produzent …
Der Konsument …
… verspricht
… erwartet
SLAs
Frische, Verfügbarkeit, Qualitätsregeln – zugesichert und testbar
ODCS: slaProperties
Sorgsamer Umgang
Klassifizierte Daten schützen, nicht weitergeben, im eigenen Output anonymisieren
heute meist nur Policy-Prosa
Terms of Use
Nutzungszweck, Grenzen und Pflichten der Verwendung
ODCS: terms
Consumer-Driven Contract
Der Ausschnitt, den der Konsument wirklich braucht – Spalten, Typen, Frische
Idee: ODCS am Input Port
Ein Format trägt alle vier Felder: ODCS – an Output- wie an Input-Ports.
OOP 2027 · 02.–05.02.2027
Ein Deployment ist nicht der einzige Weg, einen Contract zu brechen – Daten schaffen das auch ganz ohne. Deshalb prüft der Contract an zwei Stellen:
in der Pipeline · vor dem Deployment
Fängt die Known Knowns: Schema-Brüche, verletzte Qualitätsregeln – alles, was eine Änderung kaputt macht.
Unser order_total-Rename stirbt hier – im Code-Review, nicht im Dashboard.
CI/CD: datacontract test ✓
im Betrieb · kontinuierlich
Fängt die Known Unknowns: die kaputte Nachtlieferung, ausbleibende Daten, schleichenden Drift – ganz ohne Deployment.
Der Contract wird zum Monitor: SLAs laufend prüfen, verletzte Datensätze ausschleusen, Alarm an Producer und Konsumenten.
⚠ freshness: 26h > 24h → alert
Ein Contract, zwei Prüfpunkte: Die Pipeline schützt vor Änderungen, der Monitor vor der Wirklichkeit.
OOP 2027 · 02.–05.02.2027
So weit trägt die Analogie.
Jetzt wird es ehrlich.
Drei Dinge funktionieren bei Daten grundlegend anders.
OOP 2027 · 02.–05.02.2027
01
Ein Service kennt seine Aufrufer – bei Pact meldet sich jeder Consumer mit seinem Vertrag an.
Daten werden abgefragt: Jeder mit Leserechten kann konsumieren – und niemand merkt es.
→ Konsumenten sichtbar machen ist Teil des Problems: Registry statt stiller SELECTs.
02
Ein kaputtes Deployment rollst du zurück – der nächste Request ist wieder korrekt.
Drei Wochen falsche Daten stecken in jedem Downstream-System, Report und trainierten Modell.
→ Prävention schlägt Heilung: Der Test vor dem Deployment ist alles.
03
Bei einer API prüft der Compiler den Typ – total: Number ist entweder da oder nicht.
total = 47.11 ist ein valider Float – aber netto oder brutto? Mit oder ohne Storno?
→ Bedeutung gehört in den Contract: Definitionen, Semantik, Geschäftsbegriffe.
OOP 2027 · 02.–05.02.2027
Schon heute fragen LLMs und Agenten eure Datenprodukte ab – per MCP, direkt in SQL.
Ein Mensch stutzt, wenn die Zahlen seltsam aussehen, und fragt im Chat nach.
Ein Agent stutzt nicht. Er nimmt, was da ist – und antwortet selbstbewusst.
Der Data Contract wird damit zur einzigen Verteidigungslinie: Er sagt der Maschine, was die Daten bedeuten, wie frisch sie sind – und ob sie ihnen trauen darf.
🤖 „Wie lief der Umsatz letzte Woche?“
Ohne Contract
„48.230 €.“ – aus einer Tabelle, die seit 21 Tagen steht. Kein Zweifel, keine Warnung.
Mit Contract
„Achtung: Die Daten verletzen die zugesicherte Frische von 24 h – letzter Stand vor 21 Tagen.“
Der maschinenlesbare Vertrag über Bedeutung und Qualität wird vom Nice-to-have zur Voraussetzung.
OOP 2027 · 02.–05.02.2027
Drei Wochen früher, in der Pipeline von Team Checkout
✗ datacontract test – breaking change: order_total
Der Rename fliegt auf, bevor er deployed wird. Team Checkout sieht in der Registry, wen er getroffen hätte – und spricht vorher mit den Konsumenten.
Und auf dem Dashboard des Fachbereichs
48.230 € ▲ 12 %
● Zuletzt aktualisiert: vor 2 Minuten
Fangt am Montag an – mit einem einzigen Datenprodukt:
1
Schreibt den Vertrag auf, den es implizit schon hat – als ODCS-YAML
2
datacontract test in die Pipeline – Producer wie Consumer
3
Macht eure Konsumenten sichtbar – ein Contract, ein Ort, alle wissen Bescheid
OOP 2027 · 02.–05.02.2027
Kurze Einordnung des Themas in ein bis zwei Sätzen.
Kurze Einordnung des Themas in ein bis zwei Sätzen.
Kurze Einordnung des Themas in ein bis zwei Sätzen.
OOP 2027 · 02.–05.02.2027
Warum testen wir Daten nicht wie Code?
OOP 2027 · 02.–05.02.2027
DEMO
OOP 2027 · 02.–05.02.2027
Ihr wollt mehr wissen?
Schreibt mir
michael.kutz@entropy-data.com
Folien & mehr von mir
michael-kutz.de
Probiert Data Contracts aus
Auf www.entropy-data.com die 1-Click-Demo starten