Considere un método para mezclar aleatoriamente elementos en una matriz. ¿Cómo escribiría una prueba unitaria simple pero robusta para asegurarse de que esto funciona?
Se me han ocurrido dos ideas, ambas con defectos notables:
- Baraja la matriz, luego asegúrate de que su orden sea diferente a la anterior. Esto suena bien, pero falla si sucede que el orden aleatorio se baraja en el mismo orden. (Improbable, pero posible).
- Mezcla la matriz con una inicialización constante y compárala con la salida predeterminada. Esto se basa en que la función aleatoria siempre devuelve los mismos valores dados la misma semilla. Sin embargo, esto es a veces una suposición no válida .
Considera una segunda función que simula tiradas de dados y devuelve un número aleatorio. ¿Cómo probarías esta función? ¿Cómo probarías que la función ...
- nunca devuelve un número fuera de los límites dados?
- devuelve números en una distribución válida? (Uniforme para un dado, normal para una gran cantidad de dados).
Estoy buscando respuestas que ofrezcan información para probar no solo estos ejemplos, sino también elementos aleatorios de código en general. ¿Son las pruebas unitarias, incluso la solución correcta aquí? Si no, ¿qué tipo de pruebas son?
Para facilitar la mente de todos, no estoy escribiendo mi propio generador de números aleatorios.