El "Monkey Testing" o cómo descubrir errores en tu aplicación "gratis"

1

A día de hoy, las corporaciones invierten mucho dinero en realizar todo tipo de pruebas a su software. La mayoría de las pruebas que se realizan son pruebas manuales, las cuales requieren una formación de los testers para saber qué probar, cómo se debe probar, cómo validar y evaluar los resultados obtenidos. Estas pruebas son imprescindibles e irremplazables.

De un tiempo a esta parte, se está invirtiendo mucho dinero para automatizar parte de estas pruebas que se venían haciendo de manera manual, para así tener un conjunto de pruebas de regresión automáticas.

El desarrollo y el mantenimiento de estas pruebas automáticas es también muy costoso y el retorno de la inversión de esta automatización de pruebas tarda en llegar y va directamente ligado al número de errores que encontremos con nuestra metodología de pruebas.

Una práctica habitual a día de hoy en la mayoría de las corporaciones es realizar pruebas manuales de progresión y automatizar un subconjunto de ellas como pruebas de regresión. Aunque sea costoso, se antoja indispensable disponer de una buena metodología de pruebas, tanto manuales como automáticas, para minimizar los bugs en nuestro software y así dotar de mayor calidad al mismo.

Entonces, ¿cómo maximizar las posibilidades de encontrar errores en nuestra aplicación sin incrementar la inversión que estamos ya realizando en automatización de pruebas / pruebas manuales?

 

Idea!

Es aquí donde, investigando, leyendo y compartiendo ideas con compañeros de profesión, nos encontramos con un gran aliado: El Monkey Testing!

¿Qué es el Monkey Testing?

A modo de introducción, podemos decir que el Monkey Testing es una técnica en la que el usuario prueba la aplicación a través de inputs o clicks aleatorios sobre la aplicación y se comprueba el comportamiento de la misma.

A priori podría parecer que esta técnica carece de utilidad, o de fundamento, pero profundicemos sobre ello.

1. Adentrándonos en el Testing Aleatorio

Es altamente probable que si aislamos una de las pruebas que se estén haciendo a través del testing aleatorio, lleguemos a la conclusión de que la prueba que se está realizando no es una prueba "real", no es un flujo que tenga sentido para el usuario, o que sería un camino que un usuario nunca llevaría a cabo.

Pero, y aquí es donde viene la clave de todo esto, y si en lugar de realizar una, dos, diez pruebas aleatorias, se realizaran diez mil, durante 12 horas en uno o varios ordenadores??

Estudios recientes sobre esto arrojan datos realmente sorprendentes respecto al número de errores, incluso errores críticos para el usuario, que son encontrados a través del Monkey Testing.

2. Tecnologías y Herramientas

Obviamente, para conseguir esa "ventana de ejecución desasistida" necesitamos automatizar el proceso. Pues de no ser así, estaríamos de nuevo ante el coste, en este caso desmesurado, de probar manual tantos y tantos distintos casos de prueba. Y es más, el random Testing es mucho más efectivo si lo realiza una máquina que un humano, pues la aleatoriedad de una máquina es mucho mayor que la previsibilidad de un ser humano.

Aquí es donde diversas herramientas aparecen para ayudarnos. Podríamos hablar de varias de ellas, pero en este caso, me gustaría hablar de un innovador proyecto llevado a cabo por la Universidad Politécnica de Valencia, el cual, apoyándose en todo lo hablado anteriormente nos propone una herramienta de automatización basada en GUI que nos da total versatilidad para realizar random testing. Se llama Testar (Test*) y se puede descargar GRATUITAMENTE desde aquí:

https://testar.org/download/

Desde el anterior enlace podemos descargarnos la herramienta, así como el manual para poder grabar y ejecutar pruebas automáticas sobre la aplicación que deseemos.

La mejor manera de utilizar esta herramienta es a través de una máquina virtual con la herramienta ya instalada, pues al ser clicks totalmente aleatorios, puede que si la herramienta que estamos probando tenga acceso al sistema de archivos del sistema, nos “carguemos” alguno de nuestros ficheros.

La imagen se puede descargar desde aquí.

La documentación de la herramienta se puede descargar desde aquí.

Una vez instalada y configurada la herramienta, ésta reconocerá los elementos clickables dentro de ella:

 2

 

 

 

 

 

 

 

 

 

 

 

El siguiente paso será indicarle a TestAr qué títulos, textos, salidas pueden ser indicativas de que se ha producido un error. Como por ejemplo:

 3

Estaríamos identificando este tipo de errores:

4

 

TestAR nos permite también probar aplicaciones web que precisen de un login previo como la mayoría de las aplicaciones de hoy en día.

Para ello podemos utilizar el módulo de grabación que incluye la propia herramienta y grabar como paso previo de nuestras baterías de test aleatorios el login con el que acceder a la aplicación que queremos testar.

Una vez hecho todo esto, sólo nos quedaría crear las distintas baterías de pruebas que queremos realizar y la profundidad (en número de clicks) de cada batería.

 

3. ¿Por qué hablo de cómo descubrir errores gratis?

Antes hemos hablado de lo costoso que es automatizar pruebas, por tiempo de desarrollo, por mantenimientos posteriores y por lo difícil de encontrar a los perfiles que realizan este tipo de trabajo.

Pero igualmente, probar a mano es también costoso, pues requiere una formación previa funcional más todas las horas de trabajo que requiere la ejecución de una buena suite de pruebas.

Con todas estas cartas en la mano, surge la idea que venimos desarrollando. El Monkey Testing. Por qué hablamos que podemos descubrir errores gratis?

Con una pequeña base de cómo empezar a grabar test con alguna herramienta de automatización aleatoria como Testar y SIN NINGUNA BASE FUNCIONAL podríamos empezar a programar ejecuciones con el único coste de la máquina, que comparado con el humano, es despreciable, casi gratis.

Aquí podemos ver algún ejemplo de cómo probando aleatoriamente obtenemos (durante muchas horas de prueba) resultados similares e incluso mejores al testing manual:

 ult

 

No se pierde nada, apenas unas horas en grabar y preparar una ejecución y el posible beneficio puede ser muy alto.

Así que, ¿por qué no?

¿Te atreves a probarlo?