È meglio avere uno a
- Suite di test deterministico, che si traduce nel successo degli stessi test
- Suite di test non deterministico, che potenzialmente copre probabilmente più casi
?
Esempio: si scrive una suite di test per testare la funzionalità del controller in un'applicazione MVC. Il controller richiede i dati dell'applicazione da un database come input durante il test. Ci sono due opzioni per fare questo:
- Si hardcode quali righe del database di test sono selezionate come input (ad es. La decima e la quarta riga)
- Si utilizza un generatore di numeri casuali per selezionare in modo pseudocasuale i dati dal database (due righe selezionate da un generatore di numeri casuali)
Il primo è deterministico: ogni esecuzione del test per la stessa revisione del codice dovrebbe produrre lo stesso risultato. Il secondo non è deterministico: ogni esecuzione della suite di test ha la possibilità di produrre un risultato diverso. I dati raccolti in modo casuale potrebbero tuttavia essere una migliore rappresentazione dei casi limite di dati. Potrebbe simulare meglio un utente che fornisce ai nostri controller dati imprevedibili?
Quali sono i motivi per scegliere l'uno rispetto all'altro?