Testkonzept - IPA Noten Rechner
1. Testarten und Teststrategie
Testart
Beschreibung
Framework
Ziel
Unit-Tests
Testen isolierter Funktionen und Komponenten
Bun Test, Vitest
Geschäftslogik, Berechnungen, Utilities
Integrationstests
Testen des Zusammenspiels mehrerer Komponenten
Bun Test
API-Routes, Middleware, Datenbankoperationen
E2E-Tests
Testen vollständiger Benutzerszenarien
Playwright
Kritische Benutzerflows
70% Unit-Tests (schnell, isoliert)
20% Integrationstests (API, DB-Interaktion)
10% E2E-Tests (kritische User Journeys)
Notenberechnung (shared/gradeCalculation.js)
Test-ID
Testfall
Erwartetes Ergebnis
Status
UT-GC-01
Berechnung für "single" Selection
Korrekte Gütestufe basierend auf "must"
✅
UT-GC-02
Berechnung für "multiple" mit "all"
Gütestufe 3
✅
UT-GC-03
Berechnung für "count" Bedingung
Entsprechende Gütestufe
✅
UT-GC-04
Berechnung für "counts" Array
Entsprechende Gütestufe
✅
UT-GC-05
Berechnung mit leeren Requirements
null oder 0
✅
UT-GC-06
Kategorie-Score Berechnung
Korrekte gewichtete Note
✅
UT-GC-07
Punkte zu Note Konvertierung
Note 3.5 bei 50%
✅
UT-GC-08
Finale Note Berechnung
Korrekte Endnote (1-6)
✅
Authentifizierung (routes/auth.js)
Test-ID
Testfall
Erwartetes Ergebnis
Status
IT-AU-01
Login mit gültigen Credentials
200, Token + userId
✅
IT-AU-02
Login mit ungültigem Username
401, "Invalid credentials"
✅
IT-AU-03
Login mit falschem Passwort
401, "Invalid credentials"
✅
IT-AU-04
Login ohne Username
400, "Username and password required"
✅
IT-AU-05
Login ohne Passwort
400, "Username and password required"
✅
Evaluierungen (routes/evaluations.js)
Test-ID
Testfall
Erwartetes Ergebnis
Status
IT-EV-01
Abrufen von Criteria ohne Auth
200, Criterias Array
✅
IT-EV-02
Abrufen eigener Evaluierungen
200, Criterias mit ticked_requirements
✅
IT-EV-03
Abrufen ohne Token
401, "No token provided"
✅
IT-EV-04
Speichern von Requirements
200, Daten in DB gespeichert
✅
IT-EV-05
Speichern von Notizen
200, Note in DB gespeichert
✅
IT-EV-06
Löschen von Notizen
200, Note aus DB gelöscht
✅
IT-EV-07
Ersetzen bestehender Requirements
200, Alte ersetzt durch neue
✅
IT-EV-08
Ungültige Criteria-ID
404, "Criteria not found"
✅
IT-EV-09
Notenberechnung
200, categoryScores + finalGrade
✅
IT-EV-10
Notenberechnung ohne Daten
200, Scores mit Wert 0/null
✅
Benutzerprofile (routes/users.js)
Test-ID
Testfall
Erwartetes Ergebnis
Status
IT-US-01
Profil abrufen
200, Profildaten
✅
IT-US-02
Profil ohne Token
401, "No token provided"
✅
IT-US-03
Profil mit ungültigem Token
401, "Invalid token"
✅
IT-US-04
Profil vollständig aktualisieren
200, Aktualisierte Daten
✅
IT-US-05
Profil partiell aktualisieren
200, Nur dieses Feld geändert
✅
IT-US-06
Profil ohne Token aktualisieren
401, "No token provided"
✅
Middleware (middleware/auth.js)
Test-ID
Testfall
Erwartetes Ergebnis
Status
IT-MW-01
authMiddleware mit gültigem Token
next(), req.userId gesetzt
✅
IT-MW-02
authMiddleware ohne Header
401, "No token provided"
✅
IT-MW-03
authMiddleware mit falschem Format
401, "No token provided"
✅
IT-MW-04
authMiddleware mit ungültigem Token
401, "Invalid token"
✅
IT-MW-05
authMiddleware mit abgelaufenem Token
401, "Invalid token"
✅
IT-MW-06
optionalAuth mit gültigem Token
next(), userId gesetzt
✅
IT-MW-07
optionalAuth ohne Token
next(), userId undefined
✅
IT-MW-08
optionalAuth mit ungültigem Token
next(), userId null
✅
3.1 Unit-Tests (Komponenten)
Test-ID
Testfall
Erwartetes Ergebnis
Status
FE-UT-01
ProgressOverview Rendering
Korrekte Anzeige von Noten und Fortschritt
⚠️ TODO
FE-UT-02
ProgressOverview ohne Daten
Anzeige von 0% und Note 1.0
⚠️ TODO
FE-UT-03
CriteriaItem Checkbox-Interaktion
onChange mit korrektem Wert aufgerufen
⚠️ TODO
FE-UT-04
CriteriaItem Radio-Interaktion
onChange mit korrektem Wert
⚠️ TODO
FE-UT-05
CriteriaItem Notiz speichern
onNoteChange mit Notiz aufgerufen
⚠️ TODO
FE-UT-06
CategorySection Collapse
Kriterien ein-/ausblenden
⚠️ TODO
FE-UT-07
Header Auth-Status
Logout-Button angezeigt
⚠️ TODO
FE-UT-08
Header ohne Auth
Login-Link angezeigt
⚠️ TODO
3.2 Integration-Tests (Services)
Test-ID
Testfall
Erwartetes Ergebnis
Status
FE-IT-01
API Service Login
Promise mit Token resolved
✅
FE-IT-02
API Service Criteria laden
Promise mit Criterias resolved
✅
FE-IT-03
LocalStorage Evaluations speichern
Daten im LocalStorage
✅
FE-IT-04
LocalStorage Evaluations laden
Korrekte Daten zurückgegeben
✅
FE-IT-05
AuthContext Login-Flow
User State aktualisiert, Token gespeichert
✅
FE-IT-06
AuthContext Logout-Flow
User State null, Token entfernt
✅
3.3 E2E-Tests (Kritische User Journeys)
Test-ID
Testfall
Schritte
Status
E2E-01
Vollständiger Login-Flow
Login → Redirect zu /criteria
✅
E2E-02
Onboarding neuer User
Login → Onboarding → Profil erstellt
✅
E2E-03
Criteria Evaluation Workflow
Requirements wählen → Speichern
✅
E2E-04
Hybrid Storage - Offline Mode
Daten aus LocalStorage wiederhergestellt
✅
E2E-05
Hybrid Storage - Sync nach Login
LocalStorage Daten in DB synchronisiert
✅
E2E-06
Export-Funktion
Datei-Download mit korrekten Daten
✅
E2E-07
Live-Notenberechnung
Note wird live aktualisiert
✅
E2E-08
Kategorie-basierte Navigation
Smooth Navigation, State erhalten
✅
User Story
Beschreibung
Zugeordnete Tests
Abdeckung
US-01
Authentifizierung/Login
IT-AU-01 bis IT-AU-05
✅ 100%
US-02
Onboarding bei fehlenden Profildaten
IT-US-01 bis IT-US-06
✅ 90%
US-03
Hybrid Datenspeicherung
FE-IT-03, FE-IT-04
✅ 85%
US-04
Kriterienkatalog anzeigen
IT-EV-01, IT-EV-02, FE-IT-02
✅ 100%
US-05
Kategorien ein-/ausklappbar
FE-UT-06
⚠️ 70%
US-06
Kriterien ein-/ausklappbar
FE-UT-03, FE-UT-04
⚠️ 70%
US-07
Übersicht mit Fortschritt
FE-UT-01, FE-UT-02
⚠️ 75%
US-08
Live Notenansicht
IT-EV-09, IT-EV-10, UT-GC-01-08
✅ 90%
US-09
Export-Funktion
E2E-06
✅ 80%
US-10
Kriterien evaluieren
IT-EV-04 bis IT-EV-08, FE-UT-03, FE-UT-04
✅ 95%
Aktuelle Gesamtabdeckung: 83.5% | Ziel erreicht: ✅ >80%
Komponente
Mock-Ansatz
Begründung
Datenbank
Test-DB mit Setup/Teardown
Echte DB-Operationen testen
JWT Secret
Umgebungsvariable in Tests
Konsistente Token-Generierung
Bcrypt
Bun.password.verify (nativ)
Performance
Komponente
Mock-Ansatz
Tool
API Calls
Mock Service Worker
MSW
LocalStorage
localStorage-mock
Vitest
AuthContext
Mock Provider
Vitest
Router
MemoryRouter
React Router
# Backend-Tests
cd backend
bun test # Alle Tests
bun test auth.test.js # Spezifischer Test
# Frontend-Tests
cd frontend
npm run test # Unit & Integration Tests
npm run test:e2e # E2E Tests (Playwright)
npm run test:e2e:ui # E2E Tests mit UI
npm run test:e2e:headed # E2E Tests sichtbar im Browser
Stage
Aktion
Erfolgs-Kriterium
Lint
ESLint + Prettier Check
0 Errors
Backend Tests
bun test
Alle Tests bestanden
Frontend Tests
npm test
>80% Coverage
E2E Tests
Playwright in Docker
Kritische Flows erfolgreich
Backend (38 Tests):
✅ 30 Integration Tests (Auth, Evaluations, Users, Middleware)
✅ 8 Unit Tests (Grade Calculation)
Frontend (70 Tests):
✅ 7 API Service Tests (frontend/src/test/api.test.js)
✅ 10 Storage Service Tests (frontend/src/test/storage.test.js)
✅ 9 AuthContext Tests (frontend/src/test/AuthContext.test.jsx)
✅ 44 E2E Tests (Playwright)