Dopo alcuni anni di programmazione e lavorazione dei progetti, fornirò una risposta alla mia domanda.
Sì, dovresti scrivere test unitari. I test end-to-end sono più difficili da scrivere e fragili, specialmente se si affidano a componenti dell'interfaccia utente.
Se utilizzi un framework come Django o Rails (o le tue classi personalizzate) dovresti avere una classe modulo che gestirà la convalida del modulo. Avrai anche le classi di visualizzazione che visualizzano i modelli di rendering e il modulo e gestiscono le richieste GET e POST.
Nel test end-to-end ti piacerebbe:
- ottieni l'URL
- compila il modulo con dati validi
- pubblica il modulo nell'URL
- controlla per accertarti che il database sia stato aggiornato o che sia stata eseguita qualche azione come risultato del modulo valido
Stai testando un sacco di codice e la tua copertura sarà abbastanza buona, ma stai solo testando la strada felice quando tutto va bene. Come ti assicuri che il modulo abbia la giusta validazione in esso? Cosa succede se quel modulo è utilizzato su più pagine? Scrivi ancora un altro test end-to-end?
Proviamo di nuovo con i test unitari:
- prova il metodo GET della vista
- verifica il metodo di visualizzazione POST con un falso / modulo di simulazione
- verifica il modulo con dati validi
- verifica il modulo con dati non validi
- verifica gli effetti collaterali del modulo
Usando i test unitari, stai testando pezzi di codice più piccoli ei test sono specifici e più facili da scrivere. Quando lo combini con TDD (Test Driven Development) ottieni un codice di qualità superiore.
La facilità di scrittura dei test unitari non deve essere ignorata perché quando sei su un progetto che ha nessun test automatico, devi iniziare da qualche parte. Iniziare con i test unitari è più facile e veloce e ti consente di iniziare immediatamente a testare i bug piuttosto che solo per il percorso felice.