Questo risponde al motivo per cui dovresti fare test unitari.
I 3 video seguenti descrivono i test unitari in javascript ma i principi generali si applicano in molte lingue.
Test unitari: i minuti ora risparmieranno ore dopo - Eric Mann - https://www.youtube.com/watch?v=_UmmaPe8Bzc
Test di unità JS (molto buono) - https://www.youtube.com/watch?v=-IYqgx8JxlU
Scrivere JavaScript testabile - https://www.youtube.com/watch?v=OzjogCFO4Zo
Ora sto solo imparando sull'argomento, quindi potrei non essere al 100% corretto e c'è di più rispetto a quello che sto descrivendo qui, ma la mia comprensione di base del test unitario è che scrivi un codice di test (che è tenuto separato dal tuo codice principale) che chiama una funzione nel codice principale con input (argomenti) richiesti dalla funzione e il codice controlla quindi se restituisce un valore di ritorno valido. Se restituisce un valore valido, il framework di unit testing che si sta utilizzando per eseguire i test mostra una luce verde (tutto bene) se il valore non è valido si ottiene una luce rossa e quindi è possibile risolvere immediatamente il problema prima di rilasciare il nuovo codice in produzione, senza il test potresti non aver effettivamente riscontrato l'errore.
Quindi scrivi i test per il tuo codice corrente e crei il codice in modo che superi il test. Mesi dopo, tu o qualcun altro devi modificare la funzione nel tuo codice principale, perché in precedenza avevi già scritto il codice di test per quella funzione, ora esegui di nuovo e il test potrebbe fallire perché il programmatore ha introdotto un errore logico nella funzione o restituisce qualcosa completamente diverso da quello che dovrebbe restituire quella funzione. Ancora una volta senza il test in atto quell'errore potrebbe essere difficile da rintracciare in quanto potrebbe influire anche su altro codice e passerà inosservato.
Inoltre, il fatto di disporre di un programma per computer che esegue il codice e lo verifica invece di farlo manualmente nella pagina del browser pagina per pagina consente di risparmiare tempo (unit test per javascript). Supponiamo che modifichi una funzione utilizzata da alcuni script in una pagina Web e che funzioni perfettamente per il suo nuovo scopo. Ma diciamo anche che, per amor di argomenti, c'è un'altra funzione che hai da qualche altra parte nel tuo codice che dipende da quella funzione appena modificata perché funzioni correttamente. Questa funzione dipendente ora potrebbe smettere di funzionare a causa delle modifiche apportate alla prima funzione, tuttavia senza i test in atto che vengono eseguiti automaticamente dal tuo computer non noterai che c'è un problema con quella funzione fino a quando non viene effettivamente eseguita e tu'
Per ribadire, avere test eseguiti durante lo sviluppo della tua applicazione rileverà questo tipo di problemi mentre stai programmando. Non avendo i test in atto dovresti passare manualmente attraverso l'intera applicazione e anche in questo caso può essere difficile individuare il bug, ingenuamente lo invii in produzione e dopo un po 'un gentile utente ti invia una segnalazione di bug (che non sarà buono come i tuoi messaggi di errore in un framework di test).
È abbastanza confuso quando senti parlare per la prima volta dell'argomento e pensi a te stesso, non sto già testando il mio codice? E il codice che hai scritto funziona come dovrebbe già, "perché ho bisogno di un altro framework?" ... Sì, stai già testando il tuo codice ma un computer è più bravo a farlo. Devi solo scrivere test abbastanza buoni per una funzione / unità di codice una volta e il resto è curato per te dalla potente cpu invece di dover controllare manualmente che tutto il tuo codice funzioni ancora quando apporti una modifica a il tuo codice.
Inoltre, non è necessario testare l'unità del codice se non lo si desidera, ma paga quando il progetto / base di codice inizia a crescere man mano che aumentano le possibilità di introdurre bug.