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:
- Formatierung + Type Checking + Linting (bei uns mit Prettier, TypeScript und ESLint)
- Unit-Tests (bei uns mit Vitest)
- Integrationstests (mehrere Module zusammen)
- E2E-Tests (realistische Nutzerabläufe)
- 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:
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 prettierKurzkonfiguration ü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 formatoder um nur die Fehler zu checken:
npm run format:checkFü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:
npm run format(Prettier)npm run typecheck(TypeScript)npm run lint(ESLint)npm run test(Unit-Tests)
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