In generale, per me è logico testare tutte le unità oltre alle classi di colla che non hanno logica. Spesso captano errori e odori di codice anche al momento della scrittura, e tanto meno ti proteggono dalle regressioni in seguito.
Ciò di cui sono meno sicuro sono i test di livello superiore. In particolare per le web-app MVC tradizionali hai spesso tre livelli di granularità:
-
I test del modello
- sono come test unitari e testano la logica di business di un modulo specifico, distruggendo le sue dipendenze
- test del controller simulano una richiesta http
- test funzionali o end-to-end utilizzano un browser programmabile tramite selenio o similare per simulare un utente che fa clic nel suo browser web
Il trade-off è tra una copertura completa (scrivi solo test end-to-end per ogni singolo caso edge) e succintamente (i test dei modelli sono molto più semplici da scrivere).
Quali sono alcune buone euristiche per sapere quanti casi testare a livello di controller e funzionalità?