Lavoro in una piccola azienda come sviluppatore solista. In realtà sono l'unico sviluppatore dell'azienda. Ho diversi progetti (relativamente) di grandi dimensioni che ho scritto e gestito regolarmente, e nessuno di essi ha test a supporto. Quando inizio 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. Tengo le cose il più semplice possibile e commentare e documentare cose che sarebbero difficili da comprendere. E il fatto è che questi progetti non sono così grandi o complicati che uno sviluppatore decente farebbe fatica a comprenderli.
Molti degli esempi che ho visto di test passano 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 un modello di test di scrittura e di test manuale. Trovo anche che i requisiti e le funzionalità cambino abbastanza frequentemente che il mantenimento dei test aggiungerebbe una notevole quantità di resistenza su un progetto. Tempo che altrimenti potrebbe essere speso per risolvere le esigenze aziendali.
Quindi finisco sempre con la stessa conclusione. L'utile sul capitale investito è troppo basso.
Occasionalmente ho impostato alcuni test per assicurarmi di aver scritto correttamente un algoritmo, come il calcolo del numero di anni in cui qualcuno è stato in azienda in base alla data di assunzione. Ma dal punto di vista della copertura del codice ho coperto circa l'1% del mio codice.
Nella mia situazione, troveresti ancora un modo per rendere le prove unitarie una pratica regolare o sono giustificato per evitare questo sovraccarico?
AGGIORNAMENTO: Alcune cose sulla mia situazione che ho lasciato fuori: I miei progetti sono tutte applicazioni web. Per coprire tutto il mio codice, dovrei usare i test UI automatizzati, e questa è un'area in cui ancora non vedo un grande vantaggio rispetto ai test manuali.