Suggerisco di scrivere una suite di test completa nelle aree in cui è ragionevole e pratico da fare. In aree meno pratiche, scrivere controlli di integrità.
Nella mia esperienza, l'overhead di una serie completa di casi di test è sicuramente valsa la pena nella maggior parte dei casi, ma realisticamente la copertura del codice ha rendimenti decrescenti. Ad un certo punto, scrivere più test solo per aumentare la copertura del codice non ha senso.
Ad esempio, a seconda della lingua / della tecnologia, testare l'interfaccia utente potrebbe non essere pratico o addirittura fattibile. Molti test si baseranno probabilmente su ciò che un utente vede e non possono essere automatizzati. Come testeresti che un metodo per generare un captcha produce ad esempio un'immagine leggibile da un essere umano?
Se ci vorranno tre giorni per scrivere un set completo di test, la probabilità che un bug venga introdotto in quel componente lungo la traccia è molto bassa e la stessa funzione richiede solo mezz'ora per scrivere, probabilmente dovresti pensare molto sul fatto che quel tempo valga la pena. Forse solo scrivere un controllo di integrità di base per quella funzione fornirebbe valore?
Il mio consiglio generale è che dovresti testare completamente i componenti dove i test possono essere scritti relativamente facilmente. Tuttavia, se si tratta di un'area che è molto difficile da testare, tracciare una linea nella sabbia e scrivere test che testeranno l'area a un livello superiore anziché testarla completamente.
Nel precedente esempio captcha, forse scrivere test che controllano che venga restituita un'immagine della dimensione e del formato corretti e che non vengano generate eccezioni. Questo ti dà un certo livello di sicurezza senza esagerare.