diff --git a/docs/test-plan-complete.md b/docs/test-plan-complete.md index dcaddd7..cbe8804 100644 --- a/docs/test-plan-complete.md +++ b/docs/test-plan-complete.md @@ -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