Testing Automatizado en GeneXus

From GXtest Wiki
Revision as of 15:53, 6 March 2010 by Ftoledo (Talk | contribs)

Jump to: navigation, search

Este artículo ha sido tomado principalmente de la charla dada por Abstracta en el Encuentro GeneXus 2009 Testing automatizado, hagamos que las máquinas trabajen por nosotros.

Contents

Intro: Discusión de "salados"

El término "salado" es utilizado como "referente" en un tema. A modo de introducción queríamos compartir lo que fue una "discusión entre salados".

El primer salado escribió en su blog (los salados escriben en blogs):

"Test automation is simply an automatic way of doing what testers were doing before” - Steve Rowe (Tester at Microsoft)

En un principio los testers tenían para probar un Software, entonces presionaban botones, invocaban funciones con distintos valores de sus parámetros y luego verificaban que el comportamiento sea el esperado. Luego estas funciones se volvieron más complejas cada vez más botones, los sistemas cada vez más sofisticados, y los testers no daban a basto. Los desarrolladores tenían que esperar mucho por el visto bueno de los testers para poder salir a la venta. Entonces la solución está en el testing automatizado, que consiste en algo tan simple como un programa que ejecuta las funcniones con distintos datos, toca los botones igual que un tester y luego verifica programáticamente si el resultado es el correcto. De ahí surge la frase antes citada.     El segundo salado se ofendió al leer esto, considerando que los testers no pueden ser reemplazados por máquinas, y respondió en su blog criticando estas afirmaciones.

“Test automation means extending the reach of testers” - James Bach (Tester Consultant at Satisfice)

Respondió en su blog con algo muy interesante: "La automatización no hace lo que los testers hacían, a menos que ignores la mayoría de las cosas que realmente hace un tester. El testing automatizado es para extender el alcance del trabajo de los testers, no para sustituirlo".

Referencias:


Nosotros, desde nuestra humilde opinión estamos más de acuerdo con el segundo referente, ya que no creemos que la automatización sea capaz de sustituir el trabajo de los testers, sino de lograr que sea mucho mejor y de mayor alcance.

  James Bach ha escrito bastante sobre su experiencia utilizando y desarrollando herramientas de automatización, por lo que se verán algunos de los desafíos que él mismo ha planteado en alguno de sus papers y artículos, y se verán algunas formas de solucionarlos, enfocando siempre a las particularidades de la comunidad GeneXus.


Existen muchos desafíos a resolver en la automatización, pero si se resuelven bien se pueden obtener grandes beneficios.

Definiciones introductorias

Testing de Regresión

En un principio pensaba que se refería a regresar a ejecutar las mismas pruebas. En realidad es verificar que lo que estoy probando no tenga regresiones.

Tampoco es verificar que se hayan arreglado los bugs que se habían reportado, pues lo importante es ver que lo que antes andaba bien ahora sigue funcionando, o sea que en ese sentido implicaría más ejecutar todo lo que antes andaba.

Hay quienes dicen que agarrar una listita con los pasos a seguir y las cosas a observar no están haciendo testing, sino un simple chequeo. Este hombre, Michael Bolton, uno de los salados en testing, comenta en [este artículo] las diferencias entre el testing y el chequeo. El testing es algo donde uno pone creatividad, atención, busca caminos nuevos, piensa “de qué otra forma se puede romper?”. Al chequear simplemente, nos dejamos llevar por lo que alguien ya pensó antes, por esa ya mencionada lista de pasos.

El tema también es que las pruebas de regresión viéndolas así son bastante aburridas.

El testing de regresión está atado al error humano. Es aburrido volver a revisar otra vez lo mismo! eso hace que uno preste menos atención.

A mi me pasa como tester que cuando se libera una nueva versión y ya pienso en todas las cosas que tengo que volver a probar a mano y lo aburrido que es esta tarea. Las personas se aburren de las tareas repetitivas, automatizables, de ejecutar las mismas pruebas.

Cuidado! No estoy diciendo que el testing sea aburrido! A mi al menos me encanta! Estoy diciendo que las cosas rutinarias son aburridas, y el aburrimiento lleva a la distracción y eso puede llevar a los errores.

Además los informáticos al menos tenemos como esa costumbre de ver las cosas que son automatizables, y pensar en cómo podría programar algo para no tener que hacer esta tarea a mano.

Ahí es donde podemos introducir testing automatizado, los robots no se aburren.

Automatización

Lo siguiente fue tomado de la definición de automatización industrial.


Adquirir tecnología para automatizar procesos manuales

Mejora:

  • calidad
  • performance en la producción
  • rendimiento de los recursos humanos

La automatización refiere a una tecnología que permita automatizar procesos manuales, trayendo varias ventajas asociadas:

  • Mejora la calidad pues hay menos errores humanos.
  • Mejora la performance de producción pues con las mismas personas se puede lograr mucho más trabajo, a mayor velocidad y escala, y en ese sentido mejoran el rendimiento de las personas.

Observar que esta definición de la automatización industrial aplica perfectamente a la automatización del testing (o del checking).

Esto se volverá a ver más adelante, pero es lo que decía James Batch, la automatización no es para reemplazar a los testers, sino para hacer que ellos tengan más tiempo libre para otras tareas, y de esa forma las puedan desempeñar mucho mejor.

Desafíos y soluciones

A continuación se verán cuales son los desafíos que tenemos al querer aplicar esto de automatizar en las pruebas de regresión. Si la automatización la menospreciamos, la tomamos como una tarea a hacer cuando nos sobre un tiempito, o para ver cómo sale, seguramente fracasemos. La automatización presenta una serie de dificultades/desafíos que hay que tenerlos presentes para lograr avanzar con éxito. Veamos algunos de ellos.