9. Januar 2026 · Phase 1

Unit Tests — oder wie ich lernte meinem Code zu misstrauen

Ich gestehe: Am Anfang hab ich keine Tests geschrieben. „Das teste ich von Hand“ — berühmte letzte Worte. Nach dem dritten Mal wo eine kleine Änderung in der Match Engine den Transfermarkt zerschossen hat, war klar: Unit Tests müssen her.

Was getestet wird

Ich nutze xUnit als Test-Framework. Aktuell gibt es Tests für:

  • Match Engine: Stimmen die Durchschnittswerte? Liegt die Torquote bei ~2.7 pro Spiel? Funktioniert der Heimvorteil? Baut die Energie korrekt ab?
  • Datenbank: Werden Spieler korrekt kopiert? Stimmen die Relationen nach dem Clone? Gehen beim Speichern keine Daten verloren?
  • Taktik: Wird die richtige Formation geladen? Stimmt die Rollenberechnung? Sind die Slider-Werte im gültigen Bereich?
  • CSV-Import: Werden ungültige Daten korrekt abgefangen? Stimmen die Grenzen der Attribute?

Der wichtigste Test: 1000 Spiele simulieren und die Statistiken prüfen. Durchschnittliche Tore, Heimsiegquote, Verteilung der Ergebnisse. Wenn da was ausreisst, stimmt was mit der Engine nicht.

Deterministische Tests dank Seeded RNG

Der Clou: Durch den Seeded Random Number Generator kann ich Tests schreiben die immer das gleiche Ergebnis liefern. Gleicher Seed = gleiches Spiel = gleiche Tore. Das macht Debugging zum Kinderspiel — statt „manchmal geht es, manchmal nicht“ weiss ich exakt was passiert.

Lektion gelernt: Tests schreiben kostet Zeit, spart aber ein Vielfaches davon beim Debugging. Nächstes Mal fange ich von Tag eins damit an.

Kommentar schreiben