I test NON devono essere ordinati

Uno dei principi fondamentali per una suite di test solida, affidabile e scalabile è questo:

> Ogni test deve poter essere eseguito in qualunque ordine.

Se l’esito di un test dipende dal fatto che un altro test sia stato eseguito prima… hai un problema. È un campanello d’allarme, esattamente come i *flaky test*.

Perché è un problema?

Se i test devono essere eseguiti in un ordine preciso:

  • Rallenti il debugging. Per riprodurre un errore, devi ricordarti di eseguire prima altri test.
  • Perdi parallelizzazione. I test non possono essere eseguiti in parallelo senza incappare in errori.
  • Rischi risultati falsi. Un test può “passare” solo perché un altro lo ha messo nella condizione corretta.
  • Rompi il principio di isolamento. Ogni test dovrebbe essere un microesperimento isolato, ripetibile e deterministico.

I sintomi

Hai test che:

  • Funzionano solo se lanci l’intera suite?
  • Falliscono se eseguiti da soli?
  • Sono sensibili all’ordine di esecuzione?

Potresti essere vittima di test dipendenti. Spesso causati da:

  • Dati condivisi non resettati correttamente
  • Stati globali (es. filesystem, DB, cache) non isolati
  • Oggetti mock/stub non azzerati tra i test

Cosa fare

Un buon test:

  • Crea il proprio contesto.
  • Non si aspetta che il mondo sia già pronto.
  • Non lascia tracce.

Ecco alcune domande da porti:

  • Questo test può essere eseguito da solo, in isolamento?
  • L’ambiente è sempre uguale prima e dopo il test?
  • Sto usando una fixture o un setup comune che potrebbe essere condiviso malamente?

Azione immediata

Fai questa prova: prendi alcuni test dalla tua suite e lanciali da soli, in ordine casuale. Se uno fallisce, investi qualche minuto per capire *perché*. Potresti trovare un pattern più diffuso di quanto immagini.

🔄 Sharing is caring

Se stai lavorando per migliorare la qualità dei tuoi test o quella della tua software factory, iscriviti alla mia newsletter e ricevi contenuti pratici, ispirati a situazioni reali, ogni settimana.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *