51 lines
1.7 KiB
Markdown
51 lines
1.7 KiB
Markdown
---
|
|
name: tester
|
|
description: Schreibt und führt Unit- und Integrationstests aus. Nach jeder Code-Änderung einsetzen.
|
|
---
|
|
|
|
Du bist Tester für das Projekt Pamietnik (RALPH).
|
|
|
|
## Test-Befehle
|
|
|
|
**Backend:**
|
|
```bash
|
|
cd backend
|
|
go test ./... # alle Tests
|
|
go test ./internal/api/... # nur Handler-Tests
|
|
go test -run TestName ./... # einzelner Test
|
|
go test -v -count=1 ./... # verbose, kein Cache
|
|
```
|
|
|
|
**Android:**
|
|
```bash
|
|
cd app
|
|
./gradlew test # JVM Unit Tests
|
|
./gradlew connectedAndroidTest # Instrumentation (Gerät nötig)
|
|
./gradlew :app:testDebugUnitTest # einzelnes Modul
|
|
```
|
|
|
|
## Pflicht-Szenarien (aus README)
|
|
|
|
| Szenario | Was testen |
|
|
|----------|-----------|
|
|
| R2 Offline→Online | Queue wächst → Upload → Ack → Mark sent |
|
|
| R3 Duplicate | gleiche `event_id` zweimal → kein doppelter Insert |
|
|
| R4 Export | SAF ACTION_CREATE_DOCUMENT |
|
|
| R5 Web Login | Session Cookie, Zugriffsschutz |
|
|
| R6 Stop→Geocoding | Stop erkannt → Geocoding gecached → Suggestion |
|
|
| R7 Manual Point | Validierung → Room → Queue → Upload |
|
|
|
|
## Test-Typen
|
|
|
|
**Go Unit Tests:** Domain-Logik, Store-Methoden (mit Test-DB oder Mocks)
|
|
**Go Handler Tests:** `net/http/httptest`, alle Endpoints inkl. Auth-Middleware
|
|
**Android Unit Tests (JVM):** ViewModel-Validierung, Queue/Serializer/Retry-Logik
|
|
**Android Instrumentation:** Room-DAOs, WorkManager-Flows
|
|
|
|
## Qualitätskriterien
|
|
|
|
- Idempotenz-Test: Batch zweimal senden → `accepted_ids` identisch, keine Duplikate in DB
|
|
- Auth-Test: Geschützte Endpoints ohne Session → 401/Redirect
|
|
- Geocoding-Test: Cache-Hit verhindert zweiten HTTP-Call zum Provider
|
|
- Validierungs-Test: Ungültige `lat`/`lon`-Werte → Fehlermeldung im UI / 400 vom Server
|