- Logged session in `2026-04-03_Curator_B1_Roadmaps-Verzeichnis.md`, summarizing all roadmap reviews and corrections. - Updated `Curator_Roadmap.md`: marked Sprint B-1 as complete, adjusted dependencies, and refined upcoming priorities. - Corrected `QA_Roadmap.md` Sprint-B header to reflect partial completion (`🔴 → 🟡`). - Added detailed revisions for QA, backlog, and dependency management in all roadmaps. Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
102 lines
5.0 KiB
Markdown
102 lines
5.0 KiB
Markdown
# 🧐 [QA Specialist] — Zwischenstand & Roadmap
|
||
|
||
> **Stand:** 3. April 2026
|
||
> **Rolle:** Test-Strategie, Edge-Cases, Integrationstests, Regressionssicherung
|
||
|
||
---
|
||
|
||
## ✅ Erledigte Sprints
|
||
|
||
### 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 — Teilweise offen
|
||
|
||
- [ ] **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)
|
||
|
||
- [x] **B-2** | Test-Suite: Onboarding-Wizard Edge-Cases ✅ *3. April 2026*
|
||
- [x] Leere Pflichtfelder → Speichern-Button bleibt deaktiviert
|
||
- [x] Schnelles Doppelklick auf „Weiter" / „Speichern" → kein doppelter Submit
|
||
- [x] Abbrechen mitten im Wizard → kein inkonsistenter Zustand
|
||
- [x] Zurück-Navigation: Gerätename und Sicherheitsschlüssel bleiben erhalten (`rememberSaveable`)
|
||
- **Fix:** `remember` → `rememberSaveable` in `OnboardingScreen.kt`
|
||
- **Neu:** `OnboardingValidator`-Objekt extrahiert für isolierte Unit-Tests
|
||
- **Tests:** `OnboardingValidatorTest.kt` (17 Tests, alle GRÜN)
|
||
- [ ] Ungültige OEPS-Nummer → Fehlermeldung sichtbar, Submit gesperrt *(offen: abhängig von C-3)*
|
||
|
||
- [x] **B-3** | Test-Suite: Abteilungs-Logik ✅ *3. April 2026*
|
||
- [x] CSN-C-NEU ≤95cm: Pflicht-Teilung `ohne Lizenz` / `mit Lizenz` wird vorgeschlagen
|
||
- [x] CSN-C-NEU ≥100cm: Pflicht-Teilung `R1` / `R2+` wird vorgeschlagen
|
||
- [x] `ORGANISATORISCH`: Gesamtrangliste korrekt zusammengeführt
|
||
- [x] `SEPARATE_SIEGEREHRUNG`: Abteilungen werden nicht zusammengeführt
|
||
- [x] Caprilli-Regression abgesichert (LIZENZFREI → Abt. 1, R1 → Abt. 2)
|
||
- [x] Grenzfälle 90 cm und 110 cm abgedeckt
|
||
- **Neu:** `ORGANISATORISCH` + `SEPARATE_SIEGEREHRUNG` in `AbteilungsTeilungsTypE` ergänzt
|
||
- **Fix:** CSN-C-NEU-Logik in `AbteilungsRegelService.kt` implementiert
|
||
- **Tests:** `AbteilungsRegelServiceTest.kt` (14 neue Tests, alle GRÜN)
|
||
|
||
- [ ] **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 — Priorität 2 (nächste Woche)
|
||
|
||
- [ ] **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
|
||
- [ ] 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 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, Stichtag)
|
||
|
||
- [ ] **C-4** | Regressions-Test-Suite & CI-Integration
|
||
- [ ] Kritische User-Flows als automatisierte Tests abdecken
|
||
- [ ] Tests in CI/CD-Pipeline integrieren (gemeinsam mit 🐧 DevOps)
|
||
- [ ] `IdempotencyApiIntegrationTest` re-enablen (Port-Binding/Server-Lifecycle-Fix)
|
||
|
||
---
|
||
|
||
## 📌 Abhängigkeiten
|
||
|
||
| 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 |
|
||
|
||
---
|
||
|
||
## 💡 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.
|