← Tutti gli episodi
Copertina di A cosa servono davvero
Stagione 69 · Episodio 008

A cosa servono davvero

21 settembre 2026 4:48
0:00 4:48

Ciao, e benvenuto nell'ottava puntata della sessantanovesima stagione. Abbiamo smontato tanti meccanismi. Ora la domanda pratica, quella che conta quando devi convincere te stesso a spendere tempo sui test: a cosa servono davvero? La risposta ovvia è: a trovare i bug. Vero, ma è la meno importante. I test fanno per te almeno quattro cose, e quella di trovare bug è forse la più piccola di tutte. Oggi vediamo le altre tre, che valgono molto di più.

Partiamo dalla prima, e per me è la ragione numero uno per cui esistono i test: sono una rete di sicurezza per il cambiamento. Pensa a cosa provi quando devi mettere le mani in un pezzo di codice vecchio, complicato, scritto magari da un altro. Hai paura. Ogni modifica potrebbe rompere qualcosa lontano, in un punto che non vedi. Senza test, l'unica difesa è la prudenza e la fortuna. Con una buona suite di test, invece, cambi, lanci i test, e in pochi secondi sai se hai rotto qualcosa. Il vero regalo dei test non è dirti che il codice funziona oggi: è darti il coraggio di cambiarlo domani. I test sono ciò che rende sicuro il rifacimento. Senza di loro, il codice tende a fossilizzarsi: nessuno osa toccarlo, e col tempo marcisce.

Vediamo la seconda, che quasi nessuno considera un beneficio dei test: sono documentazione che non può mentire. Un commento nel codice, o un manuale, con il tempo invecchia: il codice cambia, e la spiegazione resta indietro, finché diventa una bugia. Un test, no. Un test che dice come si usa una funzione, con quali ingressi e quali risultati, deve restare vero, altrimenti diventa rosso e qualcuno se ne accorge. È l'unica documentazione che è obbligata a stare aggiornata, perché se smette di essere vera, urla. Quando arrivi su un codice sconosciuto, spesso i test sono il posto migliore per capire cosa fa davvero, e come lo si usa: leggi gli esempi che i test mettono alla prova, e vedi il contratto in azione.

E qui la terza, che è la più sottile e la più profonda: i test sono una pressione sul progetto del codice. C'è una legge quasi ferrea, che scoprirai da solo se ci fai caso. Il codice difficile da testare è quasi sempre codice mal progettato. Se per provare una funzione devi preparare mezzo mondo, vuol dire che quella funzione dipende da troppe cose, è troppo aggrovigliata. La difficoltà a scrivere il test è un campanello: ti sta dicendo che il design va ripensato. In questo senso, come dicevamo per lo sviluppo guidato dai test, provare a testare è un modo per ricevere un giudizio onesto sul tuo progetto, prima che sia troppo tardi.

Nota la quarta, che lega tutto alla stagione scorsa: i test ti dicono dove si è rotto qualcosa. Quando un sistema grande smette di funzionare, la fatica vera non è aggiustare il bug: è trovarlo. Una buona suite di test è una mappa che si illumina nel punto del guasto. Invece di dover eseguire tutto il programma a mente, come dicevamo parlando di stato e passo, hai decine di piccoli esperimenti che diventano rossi solo dove c'è il problema. Il test rosso è una freccia che punta al pezzo colpevole. Ti risparmia la parte più lenta e frustrante del debug: cercare l'ago nel pagliaio. E più i test sono piccoli e mirati, più la freccia è precisa.

C'è un posto dove tutti questi benefici si moltiplicano, e forse lo usi già ogni giorno: la pipeline automatica. Ricordi quando abbiamo parlato di integrazione e consegna continua? I test sono il cuore di quella macchina. Ogni volta che qualcuno propone una modifica, la pipeline lancia tutta la suite, da sola, prima che il codice entri nel progetto. È il guardiano automatico: nessuno può rompere ciò che gli altri hanno costruito senza che una luce rossa si accenda subito. I test da soli sono utili; i test che girano automaticamente a ogni cambiamento diventano un sistema immunitario per il codice.

Voglio che tu esca da questa puntata con un ribaltamento in testa, perché cambia tutto. Smetti di pensare ai test come al controllo di qualità che fai alla fine, quando il grosso è pronto. Pensali come all'infrastruttura che ti permette di muoverti veloce senza avere paura. Non sono un costo che paghi per essere diligente: sono un investimento che ti restituisce velocità, coraggio e serenità ogni giorno che lavori su quel codice. Chi ha una buona rete di test non è più lento: è più veloce, perché non deve muoversi in punta di piedi.

Per oggi ci fermiamo qui. Abbiamo risposto alla domanda pratica: a cosa servono davvero i test, al di là di trovare bug. Primo, sono una rete di sicurezza che ti dà il coraggio di cambiare il codice domani, non solo la prova che funziona oggi. Secondo, sono documentazione che non può mentire, perché se smette di essere vera diventa rossa. Terzo, sono una pressione sul progetto: il codice difficile da testare è codice mal disegnato. Quarto, sono una mappa che si illumina nel punto del guasto, e ti risparmiano la caccia. E nella pipeline automatica diventano il sistema immunitario del progetto. Nella prossima puntata: quanto testare. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.