banner

4.2. Monkeys y Fuzzers


¿Por qué este capítulo habla tanto de monkeys? ¿Que tienen que ver los monos con pruebas? ¡¡ Hasta el banner del libro tiene un monito !!

De forma general podemos decir que un monkey es una aplicación, programa, utilidad, o fragmento de código que de forma automática ejecuta eventos sobre la interfaz y valida que los resultados esperados de la pruebas se cumplan. En el caso de que la prueba no tenga oráculo basado en aserciones, el monkey reporta cuando un crash o excepción aparece en la aplicación durante la prueba. Los monkeys ejecutan instrucciones proporcionadas por un usuario a manera de script, secuencia de eventos/comandos, y el monkey ejecuta las ordenes dadas por el tester. Existen monkeys que no siguen script predefinidos y solo operan de forma aleatoria. También existen monkeys que tratan de explorar de forma sistemática una aplicación sin intervención humana. Hay otros monkeys que se encargan de dar de baja instancias de máquinas en un ambiente distribuido (de estos hablaremos más adelante en el capítulo de Chaos Engineering).

Algo interesante de los monkeys (los de pruebas, no los animales) es que pueden trabajar de forma autónoma o por demanda, se pueden correr en paralelo y de forma continua, y pueden ejecutar acciones más rápido que un humano. Suponga que en su presupuesto de pruebas tiene 20 horas de computo en una máquina con 20 procesadores; un monkey puede ser asignado a cada procesador y trabajar por 20 horas continuas sin descanso. ¡¡ Uff.... monkey power !!

Dependiendo del tipo de monkey usado, podemos hablar de un tipo diferente de prueba automatizada:

  • Pruebas con un monkey sin memoria que genera datos y eventos aleatorios: monkey testing

  • Pruebas con un monkey sin memoria que genera datos inesperados, inválidos: fuzz testing

  • Pruebas con un monkey que ejecuta un script de acciones grabado por un tester: record and replay testing

  • Pruebas con un monkey que de forma autónoma explora la aplicación siguiendo una distribución de probabilidad o una heurística predefinida; los eventos se generan con base en el conocimiento adquirido durante la exploración: exploración sistemática, o GUI ripping.

  • Pruebas con un monkey que genera eventos y datos de acuerdo con un modelo predefinido de la aplicación bajo pruebas: model-based testing. GUI ripping es un tipo de model-based testing.





results matching ""

    No results matching ""