docs: Test-Plan erweitert auf 54 Kategorien (+Tenant Provisioning, Contract Testing, Regression, Exploratory, Cross-Browser, Data Truncation, API Versioning, Test Pyramid, Negative Testing, Sanity, Production Safety, Test Environment)

This commit is contained in:
Agent Zero
2026-08-21 21:36:23 +02:00
parent d16bd388b1
commit c48513349e
+107
View File
@@ -886,6 +886,113 @@
---
## 43. Tenant Provisioning Tests
- [ ] Neuen Tenant erstellen → Schema, RLS, Default-Daten korrekt
- [ ] Tenant mit eigenem Admin-User → Login funktioniert
- [ ] Tenant Default-Plugins aktiviert
- [ ] Tenant Default-Settings gesetzt
- [ ] Tenant löschen → alle Daten gelöscht (nur in Staging!)
- [ ] Tenant-Isolation: Daten zwischen Tenants komplett getrennt
## 44. Contract Testing (Frontend ↔ Backend)
- [ ] Frontend API Client Types stimmen mit Backend Schemas überein
- [ ] Response-Struktur: PaginatedResponse hat items, total, page, page_size
- [ ] Entity-IDs sind UUIDs (keine Integer)
- [ ] Datetime-Felder sind ISO 8601 mit Timezone
- [ ] Error-Response: {code, detail, field, trace_id, retryable, category}
- [ ] OpenAPI Schema mit Frontend Types generieren und vergleichen
## 45. Regression Testing
- [ ] Nach jedem Bug-Fix: betroffene Tests erneut ausführen
- [ ] Nach jedem Deploy: Smoke Tests erneut ausführen
- [ ] Nach jeder Migration: Schema-Validierung erneut ausführen
- [ ] Test-Suite bleibt grün nach Fixes (keine neuen Bugs durch Fixes)
## 46. Exploratory Testing (manuell)
- [ ] Login → Dashboard → alle Menüpunkte durchklicken
- [ ] Contact erstellen → bearbeiten → löschen → wiederherstellen
- [ ] Mail lesen → beantworten → weiterleiten
- [ ] Kalender: Termin erstellen → verschieben → löschen
- [ ] Wiki: Artikel erstellen → WYSIWYG Editor testen → speichern → Versionen
- [ ] Tasks: erstellen → zuweisen → Status ändern → Kanban-Board
- [ ] Tags: erstellen → zuweisen → filtern → löschen
- [ ] Kommunikation: Chat starten → AI Chat → Message senden
- [ ] Settings: alle Settings-Seiten durchklicken
- [ ] Search: verschiedene Suchbegriffe testen
## 47. Cross-Browser & Cross-Device Tests
- [ ] Chrome: alle Seiten laden
- [ ] Firefox: alle Seiten laden
- [ ] Safari: alle Seiten laden (falls verfügbar)
- [ ] Mobile Viewport (375px): alle Seiten laden
- [ ] Tablet Viewport (768px): alle Seiten laden
- [ ] Desktop Viewport (1920px): alle Seiten laden
## 48. Data Truncation & Formatting Tests
- [ ] Form-Daten mit max-length werden korrekt in DB gespeichert
- [ ] Unicode-Zeichen werden nicht trunciert
- [ ] Datumsformatierung: DD.MM.YYYY vs YYYY-MM-DD
- [ ] Zahlenformatierung: 1.234,56 vs 1,234.56
- [ ] Währungsformatierung korrekt
- [ ] Telefonnummern-Formatierung
## 49. API Version Compatibility
- [ ] `/api/v1/` Endpunkte funktionieren
- [ ] Alte API-Pfade geben 404 oder Deprecation Warning
- [ ] API Versionierung in OpenAPI dokumentiert
## 50. Test Pyramid Struktur
- [ ] **Unit Tests** (pytest, vitest): einzelne Funktionen, Models, Schemas
- [ ] **Integration Tests** (pytest): API Endpunkte mit Test-DB
- [ ] **E2E Tests** (Playwright): komplette User-Flows im Browser
- [ ] **Contract Tests**: Frontend ↔ Backend Types
- [ ] **Performance Tests**: Response Times
- [ ] **Security Tests**: CSRF, XSS, Rate Limiting
## 51. Negative Testing
- [ ] POST mit fehlenden Pflichtfeldern → 422
- [ ] POST mit falschem Datentyp (String statt Integer) → 422
- [ ] GET mit nicht existierender UUID → 404
- [ ] DELETE auf bereits gelöschtem Eintrag → 404
- [ ] POST mit zu langem String → 422 oder trunciert
- [ ] PATCH mit leerem Body → 422
- [ ] Login mit deaktiviertem Account → 403
- [ ] API ohne Auth → 401
- [ ] API mit falschem CSRF Token → 403
## 52. Sanity Testing (nach Deploy)
- [ ] Health Check: 200 healthy
- [ ] Login: Admin kann sich einloggen
- [ ] Contacts: Liste lädt
- [ ] Mail: Accounts sichtbar
- [ ] Frontend: Login-Seite rendert
- [ ] DB: Alembic Version korrekt
- [ ] Redis: Verbindung OK
- [ ] Worker: Queue leer
## 53. Production Safety Rules
- [ ] **KEINE destruktiven Tests in Produktion** (Tenant-Löschung, Hard-Delete aller Daten)
- [ ] **KEINE Test-Daten in Produktion lassen** (außer Test-User die für Rechte-Tests gebraucht werden)
- [ ] **KEINE Migrationen in Produktion testen** (nur in Staging)
- [ ] **KEINE Plugin-Deaktivierung in Produktion** (kann Datenverlust verursachen)
- [ ] **Test-User nach Tests löschen** (sales@test.com, reader@test.com)
- [ ] **Test-Daten nach Tests löschen** (Test-Contacts, Test-Tags, Test-Tasks, Test-Wiki)
- [ ] **Backup vor großen Test-Sessions** (pg_dump)
## 54. Test Environment Setup
- [ ] **Lokale Test-DB**: PostgreSQL mit `leocrm_test` User, `test123` Passwort, `leocrm_test` DB
- [ ] **pgvector Extension**: in Test-DB installiert
- [ ] **Redis**: lokal verfügbar (PONG)
- [ ] **Node/npm**: v22+ installiert
- [ ] **Playwright**: installiert (v1.61.1)
- [ ] **pytest**: mit asyncio, coverage config
- [ ] **vitest**: mit jsdom, coverage config
- [ ] **CI Pipeline**: `scripts/ci_pipeline.sh` vorhanden
- [ ] **pre-commit hooks**: cross-plugin import check
- [ ] **Coverage**: pytest --cov mit branch coverage
---
## Ausführungs-Reihenfolge
1. Smoke Tests (1.) — schnell, prüft ob System läuft