Considere un método para barajar elementos aleatoriamente en una matriz. ¿Cómo escribiría una prueba unitaria simple pero robusta para asegurarse de que esto funciona?
Se me ocurrieron dos ideas, las cuales tienen defectos notables:
- Mezcle la matriz y luego asegúrese de que su orden sea diferente al anterior. Esto suena bien, pero falla si el aleatorio se baraja en el mismo orden. (Improbable, pero posible).
- Mezcle la matriz con una semilla constante y compárela con la salida predeterminada. Esto se basa en la función aleatoria que siempre devuelve los mismos valores dados la misma semilla. Sin embargo, esto a veces es una suposición no válida .
Considere 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 grandes cantidades de dados).
Estoy buscando respuestas que ofrezcan información para probar no solo estos ejemplos, sino elementos aleatorios de código en general. ¿Son las pruebas unitarias incluso la solución correcta aquí? Si no, ¿qué tipo de pruebas son?
Sólo para aliviar la mente de todos que estoy no escribir mi propio generador de números aleatorios.