Skip to content
IRC-Coding IRC-Coding
Testpyramide Unit Test Integrationstest End to End Test Mutation Testing Flaky Test Contract Test CI

Testpyramide einfach erklärt: Unit, Integration, E2E, Mutation Testing & Flaky Tests

Die Testpyramide priorisiert viele schnelle Unit Tests, weniger Integrationstests und wenige E2E Tests. Mit Testdoubles, Contract Tests, CI‑Stufen, Metriken, Mutation Score, Flaky Rate.

S

schutzgeist

2 min read

Testpyramide

Dieser Beitrag ist eine Begriffserklärung zur Testpyramide – inklusive Prüfungsfragen und Tags.

In a Nutshell

Die Testpyramide priorisiert viele schnelle und stabile Unit Tests, weniger Integrationstests und wenige End‑to‑End‑Tests, um mit minimalen Kosten maximale Sicherheit zu erreichen. Ziel sind kurze Rückmeldungen in der CI und verlässliche Abdeckung ohne fragiles Übergewicht an UI‑Tests.

Kompakte Fachbeschreibung

Die Testpyramide strukturiert automatisierte Qualitätssicherung in Ebenen nach Kosten, Ausführungszeit und Fehlersuchpräzision.

  • Unit‑Ebene: schnell, isoliert, deterministisch; hohe Fehlerlokalisierung; Nutzung von Mocks und Stubs.
  • Integrationsebene: echte Komponenteninteraktion (Datenbank, Dateisystem, Netzwerk); oft mit Contract Tests zwischen Diensten.
  • E2E‑Ebene: wenige, aber geschäftskritische Nutzerflüsse über UI & Infrastruktur; hohes Vertrauen, höhere Kosten.

Gute Metriken: Code Coverage (als Trend), Mutation Testing (Wirksamkeit), Flaky Rate (Stabilität). Anti‑Muster: Eiscreme‑Kegel (zu viele UI‑Tests), Sanduhr (zu wenige Unit Tests).

Prüfungsrelevante Stichpunkte

  • Zielverteilung: ca. 70 % Unit, 20 % Integration, 10 % E2E (kontextabhängig)
  • Unit‑Ebene: schnell, isoliert, deterministisch, hohe Fehlerlokalisierung
  • Integration: echte Schnittstellen, Testdatenmanagement, Container‑Services
  • E2E: wenige kritische Flows, reale Umgebung nahe Produktion
  • Contract Tests für Service‑Grenzen (Microservices)
  • CI‑Pipeline: schnelle Feedbackstufen, parallele Ausführung, Artefaktversionierung
  • Metriken: Coverage, Mutation Score, Build‑Zeit, Flaky Rate
  • Dokumentation: Teststrategie, Testfallkatalog, Risikomatrix

Kernkomponenten

  1. Testebenen (Unit, Integration, E2E)
  2. Testdoubles (Mock, Stub, Fake, Spy)
  3. Testdatenstrategie (Factories, Fixtures, Seed‑Daten, Reset)
  4. Infrastruktur im Test (Datenbank‑Container, Message‑Broker, Sandbox)
  5. Contract Testing (konsumentengetrieben, Versionierung)
  6. Testausführung (CI‑Stages, schnelles Gate auf Unit‑Ebene)
  7. Stabilität (Eliminierung von Flaky Tests, Zeit/Zufall kontrollieren)
  8. Abdeckung & Wirksamkeit (Coverage, Mutation Testing, Risikoabdeckung)
  9. Selektives E2E (kritische Pfade, Smoke Suite, visuelle Regression sparsam)
  10. Wartung (Refactoring, gemeinsame Hilfsbibliotheken, Namenskonventionen)

Praxisbeispiel (Bestellservice)

Unit‑Ebene:
- Arrange: Product mit Preis, DiscountPolicy Mock liefert 10 % Rabatt
- Act: OrderService.totalForBasket()
- Assert: erwarteter Betrag = berechneter Betrag (keine DB‑Zugriffe)

Integration‑Ebene:
- Arrange: reale DB im Container, Repository speichert/liest Order
- Act: OrderRepository.save() + OrderRepository.findById()
- Assert: gespeicherte Felder identisch, Transaktion rollt zurück

E2E‑Ebene:
- Arrange: Anwendung mit Browserautomatisierung starten
- Act: Nutzer legt Artikel in Warenkorb, geht zur Kasse, klickt "Bestellung abschließen"
- Assert: Bestellbestätigung sichtbar, DB‑Eintrag vorhanden, Event im Message Broker

Vorteile und Nachteile

Vorteile

  • Kurze Feedbackzeiten
  • Hohe Fehlerlokalisierung
  • Robuste Pipeline
  • Geringere Wartungskosten
  • Bessere Planbarkeit
  • Höhere Releasefrequenz

Nachteile

  • Initialer Infrastrukturaufbau
  • Pflege von Testdoubles & Fixtures
  • Potenziell blinde Flecken bei falscher Verteilung
  • E2E bleibt fragiler

Typische Prüfungsfragen (mit Kurzantwort)

  1. Warum ist die Testpyramide wirtschaftlich sinnvoll? Viele günstige Unit Tests fangen die meisten Defekte früh ab; teure E2E Tests werden auf kritische Flows begrenzt.
  2. Woran erkennt man zu viele UI Tests? Lange Builds, hohe Flaky Rate, häufige false negatives, schwierige Fehlerlokalisierung (Eiscreme‑Kegel).
  3. Wozu Contract Tests bei Microservices? Stabilisieren Schnittstellenbeziehungen, prüfen Kompatibilität unabhängig vom Gesamtsystem.
  4. Wie verhindert man Flaky Tests? Zeit/Zufall kontrollieren, externe Abhängigkeiten mocken/kapseln, saubere Isolation, deterministische Daten.
  5. Rolle von Mutation Testing? Prüft, ob Tests logisch wirksam sind (nicht nur Zeilen berühren) → bessere Aussage als reine Coverage.

Wichtigste Quellen

  1. https://martinfowler.com/articles/practical-test-pyramid.html
  2. https://testing.googleblog.com
  3. https://pact.io
Zurück zum Blog
Share:

Ähnliche Beiträge