Como usar GXTest para hacer el refactoring de una funcion de forma mas segura.

En mi trabajo me encuentro a menudo con el siguiente problema:

Optimizar un determinado objeto GeneXus que anda lento, o consume demasiados recursos (memoria, cpu, disco, ancho de banda, etc). 

Por lo general, son objetos de los que son Legacy Code. 

Me gusta la definición 

Legacy Code = Code without automated unit test. 

Tambien es comun que no lo haya programado y tengo una idea de que es lo que hace ese objeto, pero no un conocimiento profundo de como funciona.  Resulta entonces bastante peligroso hacer un cambio en un objeto para lograr que funcione mejor, sin tener una forma de comprobar que sigue teniendo el mismo comportamiento que antes. 

Una forma de trabajo que me ha resultado muy util, es ejecutar muchas veces el objeto que debo cambiar, con una combinación de parámetros que sean representativos de los parámetros habituales y de borde del objeto y registrar su resultado. Luego de hacer la modificación, volver a ejecutar las mismas pruebas y asegurarme que todo sigue igual, y pude mejorar el programa (es mas rapido o consume menos recursos). 

Todo esto es mucho mas fácil hacerlo ahora con GXTest y si el test devuelve parámetros de tipos simples, hay métodos para hacerlo todo automatizado. 

Hice un video para mostrar como se pueden generar objetos Unit Test en una KB Genexus para hacer el cambio de una función de forma mas segura y no romper nada en el proceso. 


Es muy sencillo de hacer y a mi me es de mucha ayuda. Espero que a ustedes también les sirva. 

Comentarios

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.