Tengo una clase de generador de números pseudoaleatorios (PRNG) que deseo probar unitario. Hay dos enfoques:¿Cómo se prueba un generador de números pseudoaleatorios?
- escriba un caso de prueba que tome una gran cantidad de muestras y compruebe si están distribuidas correctamente. Este enfoque puede conducir a un tiempo de ejecución bastante largo para el caso de prueba;
- calcule una pequeña serie de muestras 'a mano' y verifique si el algoritmo PRNG la reproduce. Este enfoque puede conducir a que se genere una secuencia no aleatoria sin que se note;
Yo diría que el primer enfoque no es realmente la prueba unitaria porque no realiza una prueba de caja blanca del generador, pero por otro lado, prueba adecuadamente la responsabilidad de la clase. El segundo enfoque es más como una prueba de unidad real, centrándose en el algoritmo, pero no proporciona tanta evidencia como si la clase cumple con su responsabilidad.
¿Qué enfoque prefiere y por qué?
No puede probar que un generador de números aleatorios funciona. Ni siquiera puede probar que no, porque no hay un patrón para probar. Al menos dijiste "pseudo". ¿No sería mejor llamarlo generador de ruido blanco? –