Testing
Approccio
Considerata la natura del gioco — basato su un’architettura ECS (Entity-Component-System) e su logiche di aggiornamento continue — è stato fondamentale garantire l’affidabilità del codice attraverso test unitari e di integrazione.
L’obiettivo è stato quello di mantenere un’elevata qualità del codice sin dalle prime fasi di sviluppo, scrivendo i test in parallelo all’implementazione delle funzionalità e assicurando che ogni parte del sistema fosse verificabile in modo indipendente.
Tecnologie utilizzate
Per la scrittura e l’esecuzione dei test è stato utilizzato ScalaTest.
Le principali caratteristiche sfruttate includono:
- Suite modulari: una suite di test per ogni componente logico (Engine, ECS, Game Logic, Rendering)
- Matchers espressivi: per una sintassi più leggibile e semantica rispetto ai semplici
assert - Test isolati: grazie alla progettazione funzionale e immutabile, ogni test può essere eseguito senza dipendenze da stato globale
Grado di copertura
Tutte le principali funzionalità del gioco sono coperte da test automatici.
In particolare, sono stati testati:
- Game engine core: gestione dello stato, aggiornamenti e game loop
- Entity & Component System: creazione, rimozione e interazioni tra entità
- Logica di gioco: movimento e comportamento dei troll, attacchi e abilità dei maghi, generazione dell’elisir, condizioni di vittoria/sconfitta
- Sistema dell’elisir e progressione: bilanciamento risorse, costi e progressione delle ondate
- Gestione eventi e collisioni: eventi interni e interazioni tra entità
I test sono stati eseguiti regolarmente durante tutto il ciclo di sviluppo, assicurando:
- Correttezza logica
- Robustezza rispetto a input non validi
- Stabilità e coerenza tra moduli dopo ogni refactoring