2010-07-25 18 views
12

¿Existe una forma sensata de probar un proceso estocástico? Por ejemplo, diga que ha codificado un simulador para un modelo de sistema específico. El simulador funciona de forma aleatoria en función de las semillas de los rngs, por lo que no se puede predecir el estado del sistema y, si puede ser así, cada prueba debe llevar al sistema a un estado específico antes de intentar probar cualquier método de una clase. ¿Hay una mejor manera de hacer esto?¿Pruebas unitarias para procesos estocásticos?

Respuesta

3

Aquí hay un nice blog post que cubre este tema. Básicamente, deberá inyectar una aleatoriedad controlada en el objeto bajo prueba.

7

Las dos opciones obvias son eliminar la aleatoriedad (es decir, utilizar una, semilla fijo conocido para sus pruebas de unidad y proceda de allí), o para probar estadísticamente (es decir, ejecutar la misma prueba caso un millón de veces y verifique que la media y la varianza (etc.) coinciden con las expectativas). Este último es probablemente una mejor prueba de su sistema, pero tendrá que vivir con algunas falsas alarmas.

+3

una debilidad del enfoque de semilla fija podría ser que si cambia el algoritmo que está probando de manera que realiza más llamadas (o menos llamadas) al generador aleatorio, también tendrá que volver a corregir la prueba de la unidad para cumplir este cambio. – Michelrandahl