Entropy Data

Entropy Data

Consumer-Driven Contracts für Daten

Was die Datenwelt von der Testpyramide lernen muss – und umgekehrt

Michael Kutz    OOP 2027    Februar 2027

OOP 2027 · 02.–05.02.2027

Montag, 9:00 Uhr

Entropy Data

● ● ●  dashboard.beispiel-shop.de/umsatz

Umsatz-Dashboard

● Zuletzt aktualisiert: vor 2 Minuten

Umsatz heute

48.230 € ▲ 12 %

Bestellungen

1.284 ▲ 8 %

Ø Warenkorb

37,55 € ▲ 3 %

OOP 2027 · 02.–05.02.2027

Drei Wochen später

Entropy Data

● ● ●  dashboard.beispiel-shop.de/umsatz

Umsatz-Dashboard

● 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

Was ist passiert?

Entropy Data

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

Hi, ich bin Micha

Entropy Data
🚀Staff Engineer @ Entropy Data
✅15+ Jahre Software-Qualität & Testing
🔧Open Source: ApproveJ, Stubit, Shakespeare
🎤Sprecher auf OOP, Agile Testing Days & Co.
🐛Bugs: fixen vermeiden mit und ohne KI

OOP 2027 · 02.–05.02.2027

Testdaten ≠ Daten testen

Entropy Data

Testdaten

Daten für Tests

  • Generieren, anonymisieren, verwalten
  • Eigene Disziplin mit ISTQB/GTB-Lehrplan
  • Sichert die Qualität der Software

→ Heute nicht unser Thema

≠

Daten testen

Tests für Daten

  • Schema, Semantik, Frische, Vollständigkeit
  • Die Daten selbst sind das Produkt
  • Sichert die Qualität der Daten

→ Darum geht es heute

OOP 2027 · 02.–05.02.2027

Was ist eigentlich ein Datenprodukt?

Entropy Data

Service mit API

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.

Datenprodukt

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

Risk Storming: eine Karte wird zum Deck

Entropy Data

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 der Karten heißt „Data“:

✓

Performance

✓

Security

✓

Usability

◆

Data

…

Für Datenprodukte fächert sich „Data“ 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

Rückblende: zwei Pipelines, ein Vertrag

Entropy Data

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

Consumer-Driven Contracts für Daten

Entropy Data

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

Entropy Data

So weit trägt die Analogie.
Jetzt wird es ehrlich.

Drei Dinge funktionieren bei Daten grundlegend anders.

OOP 2027 · 02.–05.02.2027

Wo die Analogie bricht

Entropy Data

01

Kein Aufrufer, den du kontrollierst

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

Kein Rollback für die Vergangenheit

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

„Korrekt“ ist Semantik, nicht Typ

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

Inhalts-Layout: drei Spalten

Entropy Data

Spaltentitel eins

Kurze Einordnung des Themas in ein bis zwei Sätzen.

  • Erster Punkt mit einer Kernaussage
  • Zweiter Punkt, gern etwas länger über zwei Zeilen
  • Dritter Punkt

Spaltentitel zwei

Kurze Einordnung des Themas in ein bis zwei Sätzen.

  • Erster Punkt mit einer Kernaussage
  • Zweiter Punkt
  • Dritter Punkt

Spaltentitel drei

Kurze Einordnung des Themas in ein bis zwei Sätzen.

  • Erster Punkt mit einer Kernaussage
  • Zweiter Punkt
  • Dritter Punkt

OOP 2027 · 02.–05.02.2027

Statement-Layout

Entropy Data

Warum testen wir Daten nicht wie Code?

OOP 2027 · 02.–05.02.2027

Vergleich: zwei Karten

Entropy Data

Software-Welt

  • Consumer-Driven Contracts mit Pact
  • Vertrag lebt am Port, Tests in der Pipeline
  • Bruch wird vor dem Deployment erkannt

Daten-Welt

  • Data Contracts mit ODCS
  • Contract-Tests mit der Data Contract CLI
  • Schema-Bruch wird vor dem Deployment erkannt
Entropy Data

DEMO

OOP 2027 · 02.–05.02.2027

Danke! Fragen?

Entropy Data

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