L'obiettivo del test unitario non è quello di testare tutte le possibilità di input rispetto a output.
L'obiettivo del test unitario è testare ogni singola regola aziendale e, nell'ambito di ciascuna regola aziendale, tutti i casi potenzialmente problematici. (Conosciuto anche come "casi limite".)
Quindi, in sostanza, se il tuo utente fornisce un pezzo di input specifico, noto in anticipo, (che è stato codificato nel test), il tuo codice produce un pezzo di output specifico, noto in anticipo (anche hard-coded nel test)?
E, se il tuo utente dà una stringa vuota, si comporta bene il tuo codice?
E, se i tuoi requisiti dicono che il tuo utente deve essere in grado di digitare fino a 10.000 caratteri, il tuo codice in effetti gestisce 10.000 caratteri? E fallisce con garbo (con un'eccezione corretta, che verrebbe in seguito tradotta in un messaggio di errore per l'utente) se l'utente fornisce 10,001 caratteri?
Inoltre, la copertura del codice è una misura di quanto è buono il tuo test unitario, non nel senso che se hai copertura del 100% del codice, allora sei a posto, ma nel senso che se hai molto meno del 100% copertura del codice allora è possibile che ti sia perso qualcosa. Quindi, usa uno strumento di copertura del codice per vedere quali parti del tuo codice non sono coperte dai tuoi test, e se qualcuna di esse è cruciale, allora costruisci un caso di test in modo tale da coprire questo pezzo di codice.