Considera un metodo per mescolare casualmente gli elementi in un array. Come scriveresti un test unitario semplice ma robusto per assicurarti che funzioni?
Ho escogitato due idee, entrambe con evidenti difetti:
- Mescola l'array, quindi assicurati che il suo ordine differisca da prima. Questo suona bene, ma fallisce se lo shuffle accade di mescolare nello stesso ordine. (Improbabile, ma possibile.)
- Mischia l'array con un seme costante e verificalo rispetto all'output predeterminato. Questo si basa sulla funzione casuale che restituisce sempre gli stessi valori dato lo stesso seme. Tuttavia, a volte questo è un presupposto non valido .
Considera una seconda funzione che simula i tiri di dado e restituisce un numero casuale. Come testeresti questa funzione? Come testeresti che la funzione ...
- non restituisce mai un numero al di fuori dei limiti indicati?
- restituisce numeri in una distribuzione valida? (Uniforme per un dado, normale per un gran numero di dadi.)
Sto cercando risposte che offrano spunti per testare non solo questi esempi ma elementi casuali di codice in generale. I test unitari sono la soluzione giusta qui? In caso contrario, che tipo di test sono?
Proprio per facilitare la mente di tutti che sto non scrivere il mio generatore di numeri casuali.