← Tutti gli episodi
Copertina di Isolare il pezzo
Stagione 69 · Episodio 004

Isolare il pezzo

21 settembre 2026 5:00
0:00 5:00

Ciao, e benvenuto nella quarta puntata della sessantanovesima stagione. Nella piramide abbiamo detto che i test di unità provano un pezzo isolato, in provetta. Ma fermati un secondo: come si fa, in pratica, a isolare un pezzo di codice? Il tuo codice quasi mai vive da solo. Parla con un database, chiama un servizio esterno, legge l'orologio, manda una mail. Come fai a provarlo da solo se dipende da tutte queste cose? La risposta è una delle tecniche più usate, e più fraintese, del testing: le controfigure.

Partiamo dal problema concreto, perché lo conosci bene. Immagina una funzione che deve decidere qualcosa, ma per farlo interroga il database. Se la testi così com'è, il tuo esperimento dipende dal database: deve essere acceso, popolato con i dati giusti, veloce, sempre uguale. Il test diventa lento, e fragile: basta che il database sia in uno stato diverso, e il risultato cambia. Ma tu non stai provando il database. Stai provando la tua funzione, la sua logica, la sua decisione. Il database è solo un attore di contorno, di cui in questo esperimento non t'importa nulla.

Vediamo la soluzione, che è più semplice di come suona. Sostituisci l'attore di contorno con una controfigura: un finto database, che al posto di andare davvero a cercare i dati, restituisce esattamente quello che decidi tu. Gli dici: quando ti chiederanno l'utente numero cinque, rispondi con questo utente qui. Adesso il tuo test è pulito e prevedibile. Tu controlli tutto lo scenario, e resta incerta una cosa sola: la logica della tua funzione, che è esattamente quello che vuoi mettere alla prova. È di nuovo l'esperimento controllato: hai bloccato tutte le variabili tranne una. Il test diventa anche velocissimo, perché non aspetta più nessuno: niente rete, niente disco, solo la tua logica che gira.

Nota che di controfigure ne esistono di tipi diversi, e i nomi ballano parecchio, quindi lasciamo perdere il vocabolario preciso e teniamo l'idea. Alcune controfigure servono solo a rispondere qualcosa quando vengono interrogate, per far contento il codice: dai loro una battuta e stanno zitte. Altre servono a verificare come sono state usate: vuoi controllare che la tua funzione abbia davvero mandato la mail, allora usi una controfigura che si ricorda se e come è stata chiamata, e poi le chiedi conto. Le prime rispondono, le seconde sorvegliano. C'è chi litiga per ore su quale nome dare a quale, ma è tempo sprecato. Sotto, l'idea è unica: metti un attore finto e obbediente al posto di uno vero e imprevedibile.

E qui arriva il pericolo, il motivo per cui questa tecnica è tanto potente quanto insidiosa. Quando sostituisci un pezzo con una controfigura, stai anche dicendo al test come pensi che quel pezzo si comporti. Ma se ti sbagli, se la controfigura risponde in un modo, e il database vero, quello di produzione, risponde in un altro, il tuo test diventa verde felice mentre il codice, nella realtà, si rompe. Hai testato la controfigura, non l'attore vero. Il test conferma le tue idee su come funziona il mondo, non come funziona davvero il mondo. È l'illusione più pericolosa del testing con le controfigure: passi ore a verificare le tue stesse supposizioni.

C'è una regola pratica che mi ripeto, per non cadere in questa trappola. Sostituisci ciò che è lento, imprevedibile o costoso, ma non sostituire il cuore di ciò che stai provando. Il database esterno, la rete, l'orologio di sistema, il servizio di pagamento: questi puoi anche fingerli, perché non sono l'oggetto del tuo esperimento e sono scomodi da usare per davvero. Ma se cominci a sostituire pezzi della tua stessa logica, quella che vuoi verificare, allora stai svuotando il test dall'interno. Alla fine controlli un teatrino di controfigure che recitano il copione che hai scritto tu, e il codice vero non l'hai messo alla prova per niente.

Ecco l'immagine che porto con me. Le controfigure sono come gli attori sostituti nelle scene pericolose di un film. Servono, eccome: nessuno manda l'attore protagonista a saltare da un palazzo. Ma se in tutte le scene c'è la controfigura, alla fine non hai girato un film con quell'attore: hai girato un film con la controfigura, e hai solo finto che fosse lui. Il pubblico, cioè la produzione, se ne accorge nel momento peggiore. Usa le controfigure per le acrobazie, non per i primi piani. Il primo piano, la logica che conta, tienilo vero.

Per oggi ci fermiamo qui. Abbiamo visto come si isola davvero un pezzo di codice: sostituendo i suoi collaboratori scomodi, il database, la rete, l'orologio, con delle controfigure obbedienti, che rispondono quello che decidi tu. È l'esperimento controllato portato fino in fondo: blocchi ogni variabile tranne quella che studi. Alcune controfigure rispondono e basta, altre sorvegliano come sono state usate, ma l'idea è una. E c'è il pericolo grosso: se la controfigura non si comporta come l'originale vero, testi le tue supposizioni, non la realtà, e il verde ti inganna. La regola: fingi ciò che è lento o scomodo, mai il cuore di ciò che vuoi provare. Nella prossima puntata: quando i test ti ingannano. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.