Sembra che scrivere test sia un lavoro extra, dà alle persone una stampella quando scrivono il vero codice e potrebbero non essere efficaci molto spesso.
Il test unitario ha valore come stampella. Supporta i tuoi sforzi di sviluppo, consentendoti di modificare l'implementazione senza temere che l'applicazione smetta di funzionare come richiesto. I test unitari sono anche molto più di una stampella, in quanto offrono uno strumento con il quale è possibile verificare che l'implementazione soddisfi i requisiti.
Tutti i test, siano essi test unitari, test di collaudo, test di integrazione e così via, sono efficaci solo quanto le persone che li utilizzano. Se ti avvicini al tuo lavoro in modo sciatto, i tuoi test saranno sciatti e la tua implementazione avrà problemi. Allora perché preoccuparsi? Ti preoccupi dei test perché devi dimostrare a te stesso e ai tuoi clienti che il tuo software funziona e che non ha problemi che potrebbero impedire l'utilizzo del software. Sì, i test sono sicuramente un lavoro extra, ma il modo in cui eseguirai i test determinerà quanta fatica dovrai fare per correggere i bug dopo il rilascio e quanta fatica il tuo codice richiederà per cambiare e mantenere.
Capisco come funzionano i test unitari e come scriverli, ma qualcuno può dire che è davvero una buona idea e che vale la pena e il tempo?
TDD, e in realtà qualsiasi metodo che richiede di scrivere test prima di scrivere il codice, utilizza l'approccio che si impegna in anticipo come acconto sul debito tecnico futuro. Mentre lavori attraverso il progetto, tutto ciò che si perde o non viene implementato bene comporta un maggiore debito tecnico sotto forma di una maggiore difficoltà di manutenzione, che influisce direttamente sui costi futuri e sui requisiti di risorse. I test anticipati assicurano che non solo tu abbia fatto uno sforzo per affrontare il debito tecnico futuro, ma ti assicurano anche di codificare i tuoi requisiti in modo tale che possano essere verificati semplicemente eseguendo il tuo codice. Il test prima ti dà anche l'opportunità di convalidare la tua comprensione del dominio del problema prima di impegnarti a risolvere il problema nel codice e convalida i tuoi sforzi di implementazione.
Dipende davvero dal tentativo di massimizzare il valore commerciale del tuo codice. Il codice ampiamente non testato e difficile da mantenere è generalmente economico e veloce da creare e molto costoso da mantenere per tutta la durata del prodotto dopo il rilascio. Il codice che è stato testato accuratamente a livello di unità è generalmente più costoso da creare, ma costa relativamente poco da mantenere per tutta la durata del prodotto dopo il rilascio.
Inoltre, c'è qualcosa che rende TDD particolarmente buono per SCRUM?
TDD non è specificamente buono per una particolare metodologia. È semplicemente uno strumento. Una pratica che puoi integrare nei tuoi processi di sviluppo al fine di aiutarti a raggiungere i tuoi risultati specifici. Quindi, per rispondere alla tua domanda, TDD è complementare al tuo metodo, che sia SCRUM o qualsiasi altro approccio.