La testabilità e la mockability sono davvero così importanti nello sviluppo web?

0

Sto leggendo questa serie su Laravel, ed è in grande profondità che consiste nel rendere tutto testabile, usando Repository invece di usare solo i Modelli , usando Iniezione delle dipendenze e altre tecniche oscure.

Ho la sensazione che aggiungere questa complessità in più nel nome di Testability potrebbe non essere la cosa giusta. Scrittura di unit test per tutto, sembra semplice sciocco.

Ho già usato Laravel, senza tutte queste cose di "testabilità", e ha funzionato.

La "testabilità" vale lo sforzo e rendere il codice più difficile da capire?

(nota che sto postando qui invece di StackOverflow, perché questo è basato sul parere. Spero di non essere disapprovato per averlo chiesto.)

    
posta MightyPork 13.07.2014 - 21:42
fonte

1 risposta

8

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!

    
risposta data 13.07.2014 - 22:14
fonte

Leggi altre domande sui tag