Automatización en la Gestión Aduanera usando GXtest y GeneXus
Concepto es una empresa uruguaya especializada en desarrollar soluciones integrales para el comercio exterior. Su enfoque principal es el software aduanero. Entre sus desarrollos más importantes se encuentra la plataforma GIA (Gestión Integral Aduanera), diseñada para centralizar y optimizar el control de las operaciones de comercio exterior, incluyendo la administración de importaciones, exportaciones, tránsitos, el cobro de tasas y la gestión de riesgos asociados.
GIA garantiza dinamismo, seguridad y transparencia en la interacción con los organismos aduaneros de Latinoamérica.
En un Sistema de Misión Crítica como GIA, los cambios constantes en atributos y tablas frecuentemente afectaban áreas no relacionadas, generando errores que podían llegar a producción. La falta de pruebas de regresión exhaustivas, debido al tiempo limitado para testeo manual, implicaba riesgos significativos en términos de robustez del sistema y cumplimiento del Acuerdo de Nivel de Servicio, exponiendo a Concepto a posibles sanciones y multas.
“GIA debe funcionar las 24 horas del día, los 365 días del año. Un posible fallo en este sistema puede frenar toda la actividad relativa al comercio exterior de un país. Por eso es de vital importancia que este sistema sea robusto”, agrega Enrique Almeida, Ingeniero de Software y Director de Concepto.
Por tales motivos era imperativo:
En 2012, Concepto implementó GXtest 3 para pruebas de regresión end-to-end en flujos críticos. Los test se ejecutaban automáticamente en un ambiente controlado, permitiendo a los desarrolladores analizar los resultados al día siguiente. En 2020, con la migración a GeneXus 16, se implementó GXtest 4, que introdujo:
Hoy, las pruebas unitarias se ejecutan automáticamente tras cada build, mientras que las pruebas de interfaz corren tras cada despliegue en un ambiente espejo de producción. Los resultados se reportan mediante un sistema basado en Allure, notificando diariamente a los desarrolladores.
"Nuestros desarrolladores realizan commits diarios en GXserver, y Jenkins verifica automáticamente cada hora si hubo cambios. Si detecta alguno, inicia el proceso de build de la Knowledge Base, que toma aproximadamente una hora. Además, todas las noches desplegamos el sistema en un ambiente de pruebas, utilizando una base de datos que es una copia del ambiente de producción del día anterior. Luego, ejecutamos los 140 flujos automatizados, lo cual lleva unas dos horas. Posteriormente, enviamos a los desarrolladores un correo con el reporte de resultados generado con Allure, informando tanto a ellos como a los jefes de desarrollo sobre el estado del sistema. Con esta metodología, cualquier error detectado se reporta de inmediato y se corrige antes de llegar a producción. Además, si encontramos errores fuera de las pruebas automatizadas, los incorporamos al siguiente sprint para asegurar que queden cubiertos en el futuro. Así, hemos logrado una automatización progresiva que evita la recurrencia de problemas y garantiza la calidad del sistema", agrega Almeida.
El uso de GXtest transformó la forma en que Concepto asegura la calidad de GIA. Al automatizar pruebas críticas y establecer un pipeline de integración continua, Concepto logró reducir el impacto de errores y optimizar los tiempos de desarrollo y pruebas.
La automatización de pruebas y configuración de integración continua también impactó en la metodología de trabajo. Concepto alcanzó una metodología de desarrollo ágil y fomentó la cultura DevOps en el equipo.
“Tener la misma herramienta para desarrollar y modificar los tests agiliza mucho el trabajo, ya que puedes trabajar con el mismo equipo, sin necesidad de contratar a una empresa externa para hacer los tests.
Aunque la frecuencia de entrega al cliente no depende únicamente del ciclo de desarrollo del sistema, ya que el delivery es gestionado por otra empresa encargada de administrar y monitorear el ambiente de producción, Concepto está plenamente preparado para cumplir con los tiempos solicitados por la aduana, ya sea semanal, quincenal o mensualmente. Además, el equipo tiene la capacidad de realizar liberaciones intermedias durante un sprint cuando la aduana solicita actualizaciones urgentes.
El problema
En un Sistema de Misión Crítica como GIA, los cambios constantes en atributos y tablas frecuentemente afectaban áreas no relacionadas, generando errores que podían llegar a producción. La falta de pruebas de regresión exhaustivas, debido al tiempo limitado para testeo manual, implicaba riesgos significativos en términos de robustez del sistema y cumplimiento del Acuerdo de Nivel de Servicio, exponiendo a Concepto a posibles sanciones y multas.
“GIA debe funcionar las 24 horas del día, los 365 días del año. Un posible fallo en este sistema puede frenar toda la actividad relativa al comercio exterior de un país. Por eso es de vital importancia que este sistema sea robusto”, agrega Enrique Almeida, Ingeniero de Software y Director de Concepto.
Por tales motivos era imperativo:
- Ejecutar pruebas de regresión diarias en módulos críticos.
- Incrementar la cobertura de pruebas y detectar errores tempranamente.
- Disminuir la incidencia de errores en producción.
- Adoptar una solución escalable que automatizara procesos repetitivos.
La Solución: GXtest como núcleo de la automatización
En 2012, Concepto implementó GXtest 3 para pruebas de regresión end-to-end en flujos críticos. Los test se ejecutaban automáticamente en un ambiente controlado, permitiendo a los desarrolladores analizar los resultados al día siguiente. En 2020, con la migración a GeneXus 16, se implementó GXtest 4, que introdujo:
- GXtest Recorder para grabar flujos automáticamente.
- Pruebas unitarias sobre la lógica del sistema, integrándose en el pipeline de integración continua con Jenkins.
Hoy, las pruebas unitarias se ejecutan automáticamente tras cada build, mientras que las pruebas de interfaz corren tras cada despliegue en un ambiente espejo de producción. Los resultados se reportan mediante un sistema basado en Allure, notificando diariamente a los desarrolladores.
"Nuestros desarrolladores realizan commits diarios en GXserver, y Jenkins verifica automáticamente cada hora si hubo cambios. Si detecta alguno, inicia el proceso de build de la Knowledge Base, que toma aproximadamente una hora. Además, todas las noches desplegamos el sistema en un ambiente de pruebas, utilizando una base de datos que es una copia del ambiente de producción del día anterior. Luego, ejecutamos los 140 flujos automatizados, lo cual lleva unas dos horas. Posteriormente, enviamos a los desarrolladores un correo con el reporte de resultados generado con Allure, informando tanto a ellos como a los jefes de desarrollo sobre el estado del sistema. Con esta metodología, cualquier error detectado se reporta de inmediato y se corrige antes de llegar a producción. Además, si encontramos errores fuera de las pruebas automatizadas, los incorporamos al siguiente sprint para asegurar que queden cubiertos en el futuro. Así, hemos logrado una automatización progresiva que evita la recurrencia de problemas y garantiza la calidad del sistema", agrega Almeida.
Los resultados
El uso de GXtest transformó la forma en que Concepto asegura la calidad de GIA. Al automatizar pruebas críticas y establecer un pipeline de integración continua, Concepto logró reducir el impacto de errores y optimizar los tiempos de desarrollo y pruebas.
La automatización de pruebas y configuración de integración continua también impactó en la metodología de trabajo. Concepto alcanzó una metodología de desarrollo ágil y fomentó la cultura DevOps en el equipo.
“Tener la misma herramienta para desarrollar y modificar los tests agiliza mucho el trabajo, ya que puedes trabajar con el mismo equipo, sin necesidad de contratar a una empresa externa para hacer los tests.
Aunque la frecuencia de entrega al cliente no depende únicamente del ciclo de desarrollo del sistema, ya que el delivery es gestionado por otra empresa encargada de administrar y monitorear el ambiente de producción, Concepto está plenamente preparado para cumplir con los tiempos solicitados por la aduana, ya sea semanal, quincenal o mensualmente. Además, el equipo tiene la capacidad de realizar liberaciones intermedias durante un sprint cuando la aduana solicita actualizaciones urgentes.