docs: restructure and streamline sprint execution order

- Consolidated and removed redundant steps in `SPRINT_EXECUTION_ORDER.md`.
- Simplified descriptions and roadmap formatting for improved clarity.
- Updated progress and dependencies to align with Phase 8 objectives.
- Adjusted role-specific roadmaps to reflect the latest sprint updates.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-04-03 09:43:08 +02:00
parent 14b458860c
commit 236876a043
9 changed files with 541 additions and 826 deletions
+55 -50
View File
@@ -1,89 +1,94 @@
# 🧐 [QA Specialist] — Schritt-für-Schritt Roadmap
# 🧐 [QA Specialist] — Zwischenstand & Roadmap
> **Stand:** 2. April 2026
> **Rolle:** Test-Strategie, Edge-Cases, Regressions-Tests, Qualitätssicherung
> **Stand:** 3. April 2026
> **Rolle:** Test-Strategie, Edge-Cases, Integrationstests, Regressionssicherung
---
## 🔴 Sprint A — Sofort (diese Woche)
## ✅ Erledigte Sprints
- [x] **A-1** | Test-Strategie für Desktop-App definieren — siehe „QA Test-Strategie — Compose Desktop App“
- [x] Testpyramide für Compose Desktop festlegen (Unit / Integration / UI-Tests)
- [x] Tooling entscheiden: `kotlin.test`, Compose UI Test, Mockk
- [x] Test-Konventionen dokumentieren (Namensschema, Ordnerstruktur, Arrange-Act-Assert)
- [x] Dokument in `docs/06_Frontend/` oder `docs/07_Infrastructure/` ablegen
- 📄 Dokument: [`docs/06_Frontend/Teststrategie_Desktop.md`](../../06_Frontend/Teststrategie_Desktop.md)
### Sprint A — Abgeschlossen
- [x] **A-1** | Test-Strategie für Desktop-App definiert
- [x] Testpyramide für Compose Desktop festgelegt (Unit / Integration / UI-Tests)
- [x] Tooling entschieden: `kotlin.test`, Compose UI Test, Mockk
- [x] Test-Konventionen dokumentiert (Namensschema, Ordnerstruktur, Arrange-Act-Assert)
- [x] `IdempotencyPluginTest` stabilisiert (Unit-Test GRÜN)
- [x] `OetoValidatorsTest.kt` als Basis für Grenzfall-Abdeckung etabliert
---
## 🟠 Sprint B — Kurzfristig (nächste Woche)
## 🔴 Sprint B — Offen (höchste Priorität)
- [ ] **B-1** | Test-Suite: V2-Navigation und Back-Stack
- [ ] Navigations-Flows für alle V2-Screens abdecken (vorwärts + zurück)
- [ ] Back-Stack-Verhalten testen (korrekter Zustand nach Zurück-Navigation)
- [ ] Deep-Link / direkter Screen-Aufruf testen (falls implementiert)
- [ ] **B-1** | Test-Suite: Navigation & Back-Stack (V2/V3)
- [ ] Navigations-Flows für alle Screens (vorwärts + zurück)
- [ ] Back-Stack-Verhalten nach Zurück-Navigation (korrekter Zustand)
- [ ] SingleTop-Tabs: kein doppelter Stack-Eintrag bei Tab-Wechsel
- [ ] Logout poppt MainShell komplett (keine Screens im Back-Stack)
- [ ] **B-2** | Test-Suite: Onboarding-Wizard Edge-Cases
- [ ] Leere Pflichtfelder → Button bleibt deaktiviert
- [ ] Schnelles wiederholtes Klicken auf „Weiter" / „Speichern" → kein doppelter Submit
- [ ] Leere Pflichtfelder → Speichern-Button bleibt deaktiviert
- [ ] Schnelles Doppelklick auf „Weiter" / „Speichern" → kein doppelter Submit
- [ ] Abbrechen mitten im Wizard → kein inkonsistenter Zustand
- [ ] Ungültige Eingaben (z.B. falsches OEPS-Nummern-Format) → Fehlermeldung sichtbar
- [ ] Zurück-Navigation: Gerätename und Sicherheitsschlüssel bleiben erhalten (`rememberSaveable`)
- [ ] Ungültige OEPS-Nummer → Fehlermeldung sichtbar, Submit gesperrt
- [ ] **B-3** | Test-Suite: Abteilungs-Logik
- [ ] CSN-C-NEU Bewerb ≤95cm: Pflicht-Teilung `ohne Lizenz` / `mit Lizenz` wird erzwungen
- [ ] CSN-C-NEU Bewerb ≥100cm: Pflicht-Teilung `R1` / `R2+` wird erzwungen
- [ ] Organisatorische Abteilung: Gesamtrangliste wird korrekt zusammengeführt
- [ ] Separate Siegerehrung: Abteilungen werden nicht zusammengeführt
- [ ] CSN-C-NEU ≤95cm: Pflicht-Teilung `ohne Lizenz` / `mit Lizenz` wird vorgeschlagen
- [ ] CSN-C-NEU ≥100cm: Pflicht-Teilung `R1` / `R2+` wird vorgeschlagen
- [ ] `ORGANISATORISCH`: Gesamtrangliste korrekt zusammengeführt
- [ ] `SEPARATE_SIEGEREHRUNG`: Abteilungen werden nicht zusammengeführt
- [ ] Basis: `OetoValidatorsTest.kt`-Grenzfälle aus Rulebook B-1
- [ ] **B-4** | Test-Suite: ViewModel-Verhalten (nach Frontend Sprint A)
- [ ] State-Initialisierung korrekt
- [ ] Intent → State-Transition für alle definierten Intents
- [ ] Fehler-State bei Backend-Fehler korrekt gesetzt
- [ ] Loading-State während asynchroner Operationen
- [ ] **B-4** | Test-Suite: ViewModel-Verhalten
- [ ] State-Initialisierung korrekt (Loading-State beim Start)
- [ ] Intent → State-Transition für alle Sealed-Class-Intents
- [ ] Fehler-State bei simuliertem Backend-Fehler korrekt gesetzt
- [ ] Loading-State während asynchroner Operationen (nicht flackern)
---
## 🟡 Sprint C — Mittelfristig (in 2 Wochen)
## 🟠 Sprint C — Priorität 2 (nächste Woche)
- [ ] **C-1** | Test-Suite: Mandanten-Isolation
- [ ] **C-1** | Test-Suite: Mandanten-Isolation (nach Backend A-1)
- [ ] Veranstaltung A kann keine Daten von Veranstaltung B lesen
- [ ] Veranstaltung A kann keine Daten in Veranstaltung B schreiben
- [ ] Turnier-übergreifender Kassa-Zugriff nur innerhalb derselben Veranstaltung möglich
- [ ] Kassa-Zugriff nur innerhalb derselben Veranstaltung möglich
- [ ] Basis: Backend E2E-Isolationstest re-enablen (aktuell `@Disabled`)
- [ ] **C-2** | Test-Suite: Kassa und Zahlvorgang
- [ ] Teilnehmer an 2 Turnieren → 1 Zahlvorgang → 2 korrekte separate Rechnungen
- [ ] Saldo-Berechnung korrekt (Summe aus beiden Turnier-Kassas)
- [ ] Bereits bezahlte Beträge werden nicht doppelt verrechnet
- [ ] **C-3** | Test-Suite: ÖTO-Validierung (nach Rulebook Sprint A-5)
- [ ] **C-3** | Test-Suite: ÖTO-Validierung (nach Rulebook C-1)
- [ ] OEPS-Nummer: Gültige und ungültige Formate testen
- [ ] FEI-ID: Gültige und ungültige Formate testen
- [ ] Lizenzklasse × Bewerbs-Klasse: Alle erlaubten und verbotenen Kombinationen
- [ ] Altersklasse Pferd × Bewerb: Grenzfälle (genau im Grenzjahr)
- [ ] Altersklasse Pferd × Bewerb: Grenzfälle (genau im Grenzjahr, Stichtag)
- [ ] **C-4** | Regressions-Test-Suite aufbauen
- [ ] **C-4** | Regressions-Test-Suite & CI-Integration
- [ ] Kritische User-Flows als automatisierte Tests abdecken
- [ ] Tests in CI/CD-Pipeline integrieren (gemeinsam mit 🐧 DevOps)
---
## ⏸️ Zurückgestellt
> ⏸️ **USB-Stick Fallback Tests** — Separate Besprechung zu einem späteren Zeitpunkt
> ⏸️ **Nennungs-Workflow End-to-End Test (Web → Backend → Desktop)** — Nach Web-App Besprechung
- [ ] `IdempotencyApiIntegrationTest` re-enablen (Port-Binding/Server-Lifecycle-Fix)
---
## 📌 Abhängigkeiten
| Warte auf | Von wem |
|------------------------------------|--------------------|
| ViewModel-Referenz-Implementierung | 🎨 Frontend |
| Validierungs-Spezifikation | 📜 Rulebook Expert |
| CI/CD Pipeline (headless) | 🐧 DevOps |
| Testdaten-Seeder | 👷 Backend |
| Warte auf | Von wem | Betrifft |
|------------------------------------|---------------|-----------------------------|
| Backend A-1 Rollout + E2E-Test-Fix | 👷 Backend | C-1 Isolations-Tests |
| Rulebook C-1 AltersklasseRechner | 📜 Rulebook | C-3 Validierungs-Tests |
| Backend B-2 Kassa-Service | 👷 Backend | C-2 Kassa-Tests |
| DevOps CI/CD Pipeline | 🐧 DevOps C-1 | C-4 Regressions-Integration |
| Meine Aufgabe | Ermöglicht wem |
|----------------------|-------------------------------------------------|
| Test-Strategie (A-1) | 🐧 DevOps: korrekte Pipeline-Konfiguration |
| Alle Test-Suites | Alle: Vertrauen in Codequalität und Korrektheit |
---
## 💡 Empfehlungen (nach Priorität)
1. **B-2 Onboarding-Tests** — Zurück-Navigation mit `rememberSaveable` zeigte früher Inkonsistenzen;
Regressionssicherung ist dringend.
2. **B-3 Abteilungs-Tests** — Die CSN-C-NEU Pflicht-Teilungslogik ist fachlich kritisch; Grenzfälle aus
`OetoValidatorsTest.kt` direkt wiederverwenden.
3. **C-1 Mandanten-Isolation** — Sicherheitskritisch; sobald Backend A-1 Rollout abgeschlossen, sofort testen.