Sto lavorando su un sistema di sviluppo molto agile, su un piccolo numero di persone con cui faccio la maggior parte del mio programma.
Sono arrivato alla fase di test e mi sono ritrovato a scrivere per lo più test di livello funzionale, che in teoria avrei dovuto lasciare per il nostro tester (in pratica non mi fido del tutto ... fidati del nostro tester per rilevare e identificare i difetti abbastanza lasciarlo l'unico autore di test funzionali). In teoria quello che dovrei scrivere sono i test a livello di unità.
Tuttavia, non sono sicuro che valga la pena. Il collaudo delle unità richiede un po 'di tempo per essere eseguito, più dei test funzionali poiché devo impostare i mock e le prese in unità più piccole che non erano progettate per essere eseguite in issolation. Ancora più importante, trovo il refactoring e la riprogettazione pesantemente - una parte di questo è dovuta al mio codice di scrittura che aveva bisogno di una riprogettazione pesante e viene ancora ripulito, ma anche una volta che ho finito di rimuovere parti che hanno bisogno di lavoro sono sicuro che nell'atto di espandere il codice farò ancora una discreta quantità di refactoring e riprogettazione. Mi sembra di spezzare i miei test unitari, costringendo anche a rifattorici tempo, spesso a causa del test unitario, per definizione, dovendo essere accoppiati così strettamente alla struttura del codice.
Quindi vale la pena perdere tempo quando i test funzionali, che non si interromperanno mai quando refactoring / redesign, dovrebbero trovare la maggior parte dei difetti? I test unitari forniscono davvero molto più detersione del difetto extra attraverso il funzionale? e come si creano buoni test unitari che funzionano con un codice molto veloce e agile che viene modificato rapidamente?
ps, sarei benissimo / felice con i collegamenti a qualsiasi cosa si consideri una risorsa eccellente per come eseguire il test delle unità in un ambiente altamente mutevole.
edit: per chiarire che sto facendo un po 'di TDD molto non formale, mi sembra che stia scrivendo dei test su quello che sarebbe considerato un livello funzionale piuttosto che a livello di unità. Penso che parte di questo sia dovuto al fatto che quasi tutto il progetto non mi sembra necessario per limitare il campo di applicazione; e parte di esso è che è scoraggiante pensare di provare a tornare indietro e aggiungere retroattivamente i test unitari necessari per coprire un numero sufficiente di codice che posso sentirmi a mio agio testando solo un'unità senza la piena funzionalità e confido che l'unità lavori > em> con il resto delle unità.