C'è una buona dose di dibattito in termini di quando, dove e come testare un'applicazione della complessità X. E una buona dose di zelo politico da tutte le parti. Nella mia esperienza personale, ho partecipato a molti progetti che erano piccoli e semplici, che probabilmente richiedevano pochi test automatici. E sinceramente, ho sviluppato con quasi zero test automatizzati e codice orrendamente non testabile per 10+ anni senza ripercussioni visibili .
Col passare del tempo, ho scoperto che la complessità di queste "semplici" applicazioni cresceva lentamente. E man mano che la complessità aumenta, seguirai più spesso bug di minuscole modifiche a un funzionamento di metodi che all'epoca sembravano benevoli. Oppure troverai i membri del team che utilizzano un metodo sbagliato perché interrompe una convenzione o non corrisponde alle loro aspettative.
Se si dispone di una copertura di codice elevato, queste preoccupazioni sono molto diminuite. E se provi prima , è più probabile che tu scriva codice verificabile che si comporta come altri si aspetterebbero. Stai iniziando con aspettative verificabili; non stai contorcendo i test per abbinare il codice non testabile o lasciare che le aspettative siano influenzate dalle tue idee di implementazione. Stai scrivendo il codice per passare un test significativo . (Rendi i tuoi test significativi.)
Testabilità è solo una preoccupazione naturale se vuoi testare. E tu fai vuoi testare! La domanda è se vuoi automatizzare quel test. (E lo fai.) Le applicazioni più complesse traggono grande vantaggio dai test automatici. Anche quelli semplici ne beneficiano. E se sei tentato di rinunciare ai test perché aggiunge più complessità di quanto sia inizialmente inerente all'applicazione, ricorda che alla fine la maggior parte delle applicazioni diventa complessa.
Nell'interesse della piena divulgazione, ho solo provato a rendere il mio codice più test-driven e più altamente testabile abbastanza recentemente. Detto questo, il numero di bug che i miei test automatici hanno rivelato e prevenuto è significativo. La mia fiducia nel codice altamente coperto è aumentata esponenzialmente. Il mio codice è diventato più carino. E sono stato più motivato continuamente a scrivere e soddisfatto del risultato positivo di ogni riga di codice da quando ho effettuato la transizione.
... Mi sento un po 'come un membro della setta malato di cervello. Ma è tutto vero!