Skip to Content
Programmieren9 - CodequalitätEinführung und Testpyramide

Einführung und Testpyramide

Dauer: 20 Minuten

Ziel: Verstehen, welche Qualitätssicherungsstufen für unser Projekt jetzt sinnvoll und praktikabel sind

Wenn Coding Agents mehr Code in kurzer Zeit erzeugen, steigt das Risiko, dass Fehler unbemerkt in den Projektstand gelangen. Genau deshalb wird Codequalität wichtiger: Wir brauchen klare, wiederholbare Checks.

Codequalität umfasst dabei mehrere Dimensionen:

  • Formatierung: Einheitlicher, lesbarer Code
  • Typsicherheit: Fehler durch falsche Datentypen früh vermeiden
  • Linting: Häufige Fehlerquellen und schlechte Praktiken erkennen
  • Testing: Sicherstellen, dass der Code korrekt funktioniert

Ein hilfreiches Modell ist die Testpyramide. Von unten nach oben:

  1. Formatierung + Type Checking + Linting (bei uns mit Prettier, TypeScript und ESLint)
  2. Unit-Tests (bei uns mit Vitest)
  3. Integrationstests (mehrere Module zusammen)
  4. E2E-Tests (realistische Nutzerabläufe)
  5. Manuelles Testing (gezielte Abnahme und exploratives Testen)

Je weiter unten, desto schneller und günstiger lassen sich Checks in der täglichen Entwicklung ausführen.

Geschwindigkeit und Aufwand

  • Viele schnelle Checks unten, wenige teure Checks oben.
  • Obere Ebenen sind meist langsamer, fragiler und aufwändiger.
  • E2E-Tests deshalb gezielt und sparsam für kritische User-Flows einsetzen.

Eine visuelle Orientierung:

Testpyramide fuer Codequalitaet

Hinweis zur Testpyramide

  • Als Ursprung des allgemein bekannten Modells wird häufig Mike Cohn genannt (u. a. aus dem Agile-Kontext).
  • In der Praxis gibt es viele Abwandlungen und unterschiedliche Gewichtungen der Ebenen.
  • Die hier gezeigte Pyramide ist nur ein möglicher Ansatz von vielen. Im Zeitalter der KI-Coding-Agents wird sich dieses Thema voraussichtlich weiterentwickeln.

Aktualisierung im KI-Zeitalter

Durch KI-Coding-Agents wird mehr Code in kürzerer Zeit erzeugt. Dadurch werden schnelle, automatisierbare Guardrails noch wichtiger.

Eine praxisnahe Gewichtung:

  • Ganz unten (breit): Typen, Linting, Formatierung, Build, statische Analyse, Security-Scans, Schema-/Contract-Checks.
  • Darüber: Unit-Tests, vor allem für Geschäftslogik und pure Funktionen.
  • Mehr Gewicht als früher: Integrations- und Contract-Tests an Schnittstellen (Module, APIs, Datenformate, Seiteneffekte).
  • Wenige stabile E2E-Tests: nur für kritische Flows.
  • Manuelles Testen: explorativ für UX, fachliche Plausibilität und Edge Cases.

Wichtiger als die reine Anzahl von Tests ist die Qualität der Test-Orakel: Es sollte Anforderungen und Risiken geprüft werden, nicht nur die aktuelle Implementierung.

Prettier als Fundament

Werkzeuge wie Prettier  reduzieren unnötige Unterschiede im Code. Das ist keine „Teststufe“, verbessert aber Lesbarkeit, Reviews und Team-Konsistenz deutlich.

Installieren als Entwicklungsabhängigkeit (siehe devDependencies in package.json):

npm install -D prettier

Kurzkonfiguration über .prettierrc (← Achtung: . am Anfang des Dateinamens):

{ "singleQuote": true, "semi": true, "trailingComma": "all" }

Die Datei .prettierrc sollte im Git-Repository versioniert werden, damit im Team überall dieselben Formatierungsregeln gelten.

npm-Skripte:

{ "scripts": { "format": "prettier --write .", "format:check": "prettier --check ." } }

Nun können wir den Code formatieren:

npm run format

oder um nur die Fehler zu checken:

npm run format:check

Für VS Code: Prettier-Extension installieren, in den Einstellungen Format on Save aktivieren und Prettier in als Standard-Formatter auswählen (Default Formatter).

Für unsere aktuelle TUI-App liegt der Fokus auf den unteren Ebenen:

  • Type Checking
  • Linting
  • Unit-Tests

Qualitäts-Checkliste für das Team

Praktischer Mindeststandard für das Projekt:

Vor Commits ausführen:

Diese Schritte lassen sich für KI-Coding-Agents über verbindliche Regeln in AGENTS.md sowie über Command- oder Hook-Automatisierung (z. B. Git-Hooks wie pre-commit/pre-push, npm-Skripte und Agent-Hooks in Claude oder anderen Agent-Workflows) erzwingen. Dadurch können KI-Agents ihre Änderungen vor Commit oder Push selbst prüfen.

Ergänzend:

  • mindestens einen kritischen Ablauf als einfachen Integrationscheck prüfen (z. B. Eingabe -> Validierung -> Speicherung; je 1 Erfolgs- und 1 Fehlerfall)
  • manuelle Schnellprüfung der wichtigsten User-Flows durchführen