Come usare il test dell'unità?
Esistono molti framework per lingue diverse, che forniscono funzionalità di test delle unità. Vi sono molte informazioni su come utilizzarle tecnicamente. Proprio come "importare nel tuo progetto questa lib, digitare asserire, compilare, eseguire e blah-blah-blah". Ed è tutto facile da imparare.
Il posto in cui sono confuso è come ottenerlo: quale test scrivere, per coprire una grande quantità di possibili bug?
Ad esempio, supponiamo di utilizzare jasmine framework per JS e di testare la funzione di convalida della posta elettronica.
Grande. Il nostro semplice codice sarà simile a questo:
describe("Email validation test", function() {
it("isEmailValid(\"[email protected]\") should be true", function() {
expect(isEmailValid("[email protected]")).toBe(true);
});
});
Ma in realtà non abbiamo idee su come viene scritta la funzione isEmailValid
e dove può fallire. Forse funziona solo se abbiamo il dominio gmail.com ? Quindi dovremmo includere un altro test con qualsiasi altro dominio.
O forse non funziona se abbiamo un dominio molto specifico, proprio come "warhammerhobbitbanachspace.am" ? In tal caso sarebbe piuttosto difficile catturare un bug. O, addirittura, impossibile.
O forse fallirà se abbiamo più di 42 simboli nella stringa con e-mail? O forse fallirà se abbiamo esattamente 9 simboli? E questa è solo una piccola quantità di esempi di luoghi che sarebbe utile testare. E questa è solo una semplice funzione di validazione delle stringhe ... E come possiamo davvero testare alcuni oggetti complessi? Sì, lo so, è impossibile testare tutto. Ma come scegliere quindi cosa dovrebbe essere realmente testato, e cosa no?
Ci sono libri o articoli che spiegano ... alcuni modelli / tecniche / principi di copertura del codice con test utili?