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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user