Zum Inhalt

Testkonzept fuer das Spring Boot MVC "Card Game" Projekt

Einleitung

Dieses Testkonzept beschreibt Vorgehen, Testarten, Testdaten, Testumgebungen, Tools und CI-Integration fuer das Spring Boot MVC "Card Game" Projekt.

Zielsetzung

  • Sicherstellung funktionaler Korrektheit der Backend- und UI-Komponenten.
  • Automatisierte Tests bei Pull Requests und Releases.
  • Einhaltung nicht-funktionaler Anforderungen: Responsetime < 0.8s in 95% der Fälle und klare Benutzerfuehrung.
  • Reproduzierbare Testumgebungen mittels Testcontainers/Docker in CI.
  • Coverage-Metrik >= 75\%
  • Vordefinierte Testdaten und Testfälle

Umfang

  • Backend: Spring Boot Controllers, Services, Repositories, DTOs, Validierungen.
  • Persistenz:
    • MariaDB fuer Karten-Definitionsdaten;
    • MongoDB fuer Spielhistorie (Kartenverteilung, Spielzuege, Gewinner mit Timestamp).
  • UI: Browser-basiertes Spiel (Chrome).
  • Testarten: Unit, Integration, Komponenten-/Contract-Tests, E2E, Performance, Security, Smoke/Regression.

Annahmen / Abgrenzungen

  • Maven als Build-Tool.
  • Docker-Image-Deployment nach Build (Docker Hub).
  • Keine externen APIs; keine Authentication.
  • Staging-Umgebung vorhanden fuer volle Integrations- und Performance-Tests (optional mit geplanten Jobs).

Testarten und Vorgehen

Unit-Tests

  • Frameworks: JUnit 5, Mockito, AssertJ.
  • Fokus: Business-Logik, Service-Regeln, Validierungsregeln, Randfaelle, Exception-Flows.
  • Mocking fuer Repositories/externale Komponenten.
  • Abdeckung pro Klasse/sinnvoller Modulgrenze messen, damit Gesamt-Coverage >= 75\% erreicht wird.

Die konkreten Testfälle

Nummer Testfallbeschreibung Eingabe Erwartetes Ergebnis
TC-01 Karte mischen gibt alle Karten zurueck Liste aller Karten Liste mit allen Karten in zufaelliger Reihenfolge
TC-02 Karte austeilen reduziert Kartenstapel Kartenstapel mit 52 Karten, Anzahl 5 Kartenstapel mit 47 Karten, Hand mit 5 Karten
TC-03 ... ... ...

Integrationstests

  • Spring Boot Test mit realem Kontext, Testprofile.
  • Testcontainers fuer MariaDB und MongoDB; bei Bedarf vordefinierte Images in CI-Caches verwenden.
  • Datenbankmigrationen (Flyway) im Teststart ausfuehren bzw. Test-spezifische Migrationspfade nutzen.
  • Failsafe-Plugin fuer IT-Lifecycle (maven-failsafe-plugin, mvn verify).
  • Fokus: Repository-Integration, transaktionales Verhalten, Mapping, Persistenz-Constraints.

Die konkreten Testfälle

Nummer Testfallbeschreibung Eingabe Erwartetes Ergebnis
TC-50 ... ... ...

Komponenten-/Controller-Tests

  • MockMvc oder TestRestTemplate mit Testprofile, Eingabevalidierung, HTTP-Status, Fehler-Handling, DTO-Konversion.
  • Tests fuer MVC-Flows, Form-Validation und Response-Time-Basischecks (unit/integration level).
  • Sicherstellen, dass Controller-Fehler angemessen behandelt und korrekte HTTP-Codes zurueckgegeben werden.

Die konkreten Testfälle

Nummer Testfallbeschreibung Eingabe Erwartetes Ergebnis
TC-100 ... ... ...

End-to-End (E2E) Tests

  • Szenarien: Spielstart (Kartenausgabe), Spielzug (Karte tauschen/ablegen), Spielende (Gewinneranzeige), UI-Navigation und Fehlermeldungen.

Die konkreten Testfälle

Nummer Testfallbeschreibung Eingabe Erwartetes Ergebnis
TC-150 ... ... ...

Performance Tests

  • Tool: Gatling fuer Last- und Responsetime-Tests.
  • Szenarien: typische Nutzerflow mit 2 Concurrent Users, Messung in 95% der Fälle Response-Time; CI-Smoke prueft RT < 0.8 s.
  • Volle Last- und Langzeittests in Staging (grössere Datensätze).
  • Tests parameterisierbar (URLs, Baselines, Zielwerte).

Die konkreten Testfälle

Nummer Testfallbeschreibung Eingabe Erwartetes Ergebnis
TC-200 ... ... ...

Security Tests

  • Statische Abhängigkeitspruefung: dependency-check (OWASP), Snyk optional.
  • Static Code Analysis: SpotBugs, Checkstyle.
  • Dynamische Scans: OWASP ZAP in Merge/Release-Pipeline (Light in PRs, vollstaendig in Release/ nightly).
  • Fokus: OWASP Top10-Checks (Injection, XSS, CSRF-Pruefungen, Sensitive Data Exposure, etc.). Da keine Auth vorgesehen, besonderes Augenmerk auf Input-Validierung und CSRF/Session-Handling.

Die konkreten Testfälle

Nummer Testfallbeschreibung Eingabe Erwartetes Ergebnis
TC-250 ... ... ...

Testumgebungen

  • Lokal (Developer): schnelle Unit-Iterationen; Testcontainers erlaubt Integrationstests lokal.
  • CI (GitHub Actions, Hosted Runner): PR-Job (Unit + Static Checks + JaCoCo + kleiner E2E-Smoke), Merge-Job (Integration via Failsafe + Build Docker Image + Push zu Docker Hub).
  • Staging: vollstaendige Integration + Performance (Gatling) + ausfuehrlicher ZAP-Scan.
  • Produktion: nach Deployment automatisierte Post-Deploy Smoke-Checks (Endpoint-Health, kleine Funktionstests).