Se non hai test, come sai che il tuo codice funziona?
Modifica: l'asserzione che i test non possono dimostrare che il codice funziona non riesce a definire un termine cruciale, ovvero funziona . Cosa significa per un programma funzionare? Se si mantiene questo termine vago, allora non vi è alcun modo per dimostrare o essere sicuri che qualsiasi programma funzioni. Mai.
D'altra parte, puoi definire works come "si comporta secondo una specifica". Ora non puoi usare solo i test per mostrare che il codice funziona, ma i test stessi possono servire come una specifica eseguibile del comportamento del tuo codice. In altre parole, una suite di test ben scritta definisce cosa funziona .
Questo modo di pensare ti costringe anche a riesaminare il significato di un bug . Se il tuo codice supera tutti i test, allora non ci sono errori nel codice. Se, nonostante ciò, il sistema non si comporta come dovrebbe, il suo comportamento non viene specificato correttamente. I. e. il bug è nella specifica, definito dai test.
Questo approccio allo sviluppo del software separa le specifiche funzionali di un sistema dalla sua implementazione, che, secondo ogni libro di ingegneria del software nel mondo, è una cosa molto buona. Allo stesso tempo, questo approccio garantisce che l'implementazione corrisponda sempre alle specifiche funzionali.