Lavoro in una piccola azienda come sviluppatore solista. Infatti, sono l'unico sviluppatore dell'azienda. Ho diversi progetti (relativamente) di grandi dimensioni che ho scritto e gestito regolarmente, e nessuno di loro ha test per supportarli. All'inizio di nuovi progetti mi chiedo spesso se dovrei provare un approccio TDD. Sembra una buona idea, ma onestamente non posso mai giustificare il lavoro extra in questione.
Lavoro duro per essere lungimirante nel mio design. Mi rendo conto che sicuramente un giorno un altro sviluppatore dovrà mantenere il mio codice, o almeno risolverlo. Mantengo le cose il più semplici possibile e commento e documento cose che sarebbero difficili da comprendere. E il fatto è che questi progetti non sono così grandi o complicati che uno sviluppatore decente avrebbe difficoltà a comprenderli.
Molti degli esempi che ho visto dei test si riducono alle minuzie, coprendo tutti gli aspetti del codice. Dato che sono l'unico sviluppatore e sono molto vicino al codice nell'intero progetto, è molto più efficiente seguire uno schema di scrittura, quindi manualmente. Trovo anche che i requisiti e le funzionalità cambiano abbastanza frequentemente che il mantenimento dei test aggiungerebbe una notevole quantità di trascinamento su un progetto. Tempo che altrimenti potrebbe essere impiegato per risolvere le esigenze aziendali.
Quindi finisco sempre con la stessa conclusione. Il ritorno sull'investimento è troppo basso.
Di tanto in tanto ho impostato alcuni test per assicurarmi di aver scritto correttamente un algoritmo, come calcolare il numero di anni in cui qualcuno è stato nella società in base alla data di assunzione. Ma da un punto di vista della copertura del codice ho coperto circa l'1% del mio codice.
Nella mia situazione, troveresti ancora un modo per rendere la sperimentazione unitaria una pratica regolare, o sono giustificato nell'evitare quel sovraccarico?
UPDATE: alcune cose sulla mia situazione che ho tralasciato: i miei progetti sono tutte applicazioni web. Per coprire tutto il mio codice, dovrei utilizzare i test dell'interfaccia utente automatizzati, e questa è un'area in cui ancora non vedo un grande vantaggio rispetto ai test manuali.