Considera un metodo per mescolare casualmente gli elementi in un array. Come scriveresti un test unitario semplice ma solido per assicurarti che funzioni?
Ho trovato due idee, entrambe con difetti evidenti:
- Mescola l'array, quindi assicurati che il suo ordine differisca da prima. Questo suona bene, ma fallisce se lo shuffle capita di mescolare nello stesso ordine. (Improbabile, ma possibile.)
- Mescola l'array con un seme costante e confrontalo con l'output predeterminato. Questo si basa sulla funzione casuale che restituisce sempre gli stessi valori dati lo stesso seme. Tuttavia, questo è a volte un presupposto non valido .
Considera una seconda funzione che simula i lanci di dadi e restituisce un numero casuale. Come testare questa funzione? Come testesti la funzione ...
- non restituisce mai un numero al di fuori dei limiti specificati?
- restituisce i numeri in una distribuzione valida? (Uniforme per un dado, normale per un gran numero di dadi.)
Sto cercando risposte che offrano informazioni sulla verifica non solo di questi esempi, ma di elementi casuali del codice in generale. Sono unit test anche la soluzione giusta qui? In caso negativo, che tipo di test sono?
Solo per tranquillizzare la mente di tutti sono non che scrive il mio generatore di numeri casuali.