domingo, mayo 17, 2020

Hacer un procedimiento sin hacer Unit Test "Es una irresponsabilidad"

El título de este artículo lo tome de la charla que dio Gaston Milano en el GUG Montevideo, la misma se llama: "Gente, Ideas, Herramientas - Gaston Milano sobre App Coronavirus UY".

En la charla Gaston explica el proceso de desarrollo de la aplicación "Coronavirus UY", cuando se refiere al testing que se le hizo a la aplicación hace hincapié en los Unitt Test.  Sin dudas que esto es importante pero en ocasiones hay que lograr que los equipos y las organizaciones se encuentren maduros para sumar al proceso de desarrollo esta buena práctica.

Hace casi un año escribía algunos artículos sobre "Pruebas unitarias en GeneXus", no fue nada técnico pero conté un poco mi proceso para llegar a la necesidad de contar con Unit Test. Tuve un largo camino dado que primero debía lograr migrar a GeneXus 16 para lograr usar GXTest

Tuve que atravesar algunos problemas antes de poder llegar a implementar Unit Test con GeneXus pero luego de migrar la aplicación de GX9 a GX 15 y por último a GX16 pude llegar a comenzar a implementar mis primeros Unit Test.

En nuestra experiencia tuvimos algunos problemas que fuimos resolviendo pero que nos hicieron cambiar de parecer a la hora de hacer pruebas unitarias para cada procedimiento de nuestra KB. Los principales problemas que encontramos fueron los siguientes:

  • La KB creció considerablemente: por defecto se crean tres objetos (Unit Test, SDT y un Data Provider). 
  • Se necesita Licencia para usar GX-Server y para usar con integración continua
  • No es una práctica extendida dentro de los desarrolladores

En realidad el problema mas complejo de resolver es que los unit test no son una práctica extendida dentro de los desarrolladores genexus y esto hace que no se tenga apoyo para poder lograr recursos para usar GX-Test.

El problema del crecimiento de la kb se puede solucionar modificando los unit test en los casos que sea posible (En un próximo artículo voy a explicar como lo hacemos).

El licenciamiento se puede solucionar pero todavía no pude lograr que se vean los beneficios de esto para obtener los recursos necesarios (Estoy en proceso).

En resumen considero que debemos comenzar a utilizar las pruebas unitarias y extender esta práctica entre la comunidad genexus para poder enriquecer la herramienta, logrando que las organizaciones tengan esto como obligatorio.

El principal debe en la utilización de los unit test esta del lado de los desarrolladores que todavía no han integrado esto a su forma de trabajo y esto hace que en equipos grandes sea complejo implementar esta práctica.

En otro artículo voy a explicar como usamos los unit test en una KB grande que esta teniendo liberaciones de versiones a producción de forma mensual.