#GeneXus académico: tesis doctoral sobre generación de casos de prueba en Sistemas de Información
Compartimos con la Comunidad GeneXus, el trabajo de investigación de Federico Toledo (GXtest, Abstracta), quien se encuentra realizando un doctorado en Informática en la Universidad de Castilla-La Mancha (Ciudad Real, España), cuya tesis se basa en un enfoque dirigido por modelos para probar sistemas de información con bases de datos, en el cual se pretende demostrar que el enfoque aplicado actualmente para sistemas GeneXus puede ser extendido en la industria del Software a otras plataformas.
Pruebas basadas en el modelo de datosLa base de datos es un componente esencial de los sistemas de información. En efecto, para una base de datos dada, una organización tendrá múltiples aplicaciones que la gestionen de acuerdo a los diferentes tipos de usuarios, plataformas, dispositivos, etc. Aunque la propia base de datos ya incorporará su propio conjunto de restricciones, la lógica de los programas asociados a ella debe también contemplarlas y manejarlas correctamente.
En el marco de la tesis doctoral se propone un enfoque de generación de casos de prueba centrado en la base de datos, donde se prueba el comportamiento de las aplicaciones que la gestionan, comprobando si son capaces de manejar las particularidades de las estructuras definidas de forma adecuada, en las distintas capas de la arquitectura (lógica, interfaz de usuario, etc.).
Esta propuesta tiene el objetivo de basarse en estándares tanto como se pueda, para poder así generalizar la idea que inicialmente se aplica en GXtestGenerator para sistemas GeneXus (generando casos de prueba a partir de la KB). Por esto se representa el modelo de datos usando diagramas UML (http://www.uml.org/) extraídos automáticamente a partir del esquema relacional de la base de datos mediante técnicas de ingeniería inversa, para luego generar el modelo de pruebas de forma automática usando transformaciones entre modelos. Dicha transformación busca ocurrencias de patrones que, desde el punto de vista del testing, representan situaciones de prueba interesantes.
Testing en el desarrollo de software
En el desarrollo de software, las pruebas juegan un papel muy importante, suponiendo alrededor de la mitad del costo del proyecto (Myers, G., The Art of Software Testing 2004). Con el fin de minimizar los costos de los errores y aumentar la productividad se apuesta por la automatización de las tareas, las cuales son clasificadas por Meudec* en tres tipos:
- Tareas administrativas: registro de especificaciones, generación de informes, etc.
- Tareas mecánicas: ejecución de casos, captura y reejecución, etc.
- Tareas de generación de casos de prueba.
Mientras que se han conseguido muchos avances en la automatización de las dos primeras, queda aún mucho trabajo por hacer en cuanto a la generación automática de casos, debido en gran parte a la diversidad de entornos y contextos posibles en los que se ejecutan los mismos. En este trabajo se propone usar un enfoque MDT (Model-Driven Testing,) para generar pruebas automáticamente a partir del modelo de datos obtenido de la base de datos. ¿Qué se pretende lograr?: Aprovechar su estructura como punto de partida para la construcción de casos de prueba, que permitan, a su vez, garantizar la calidad de los programas de acceso y gestión de los sistemas de información.
MDT: Model-Driven Testing
Como se ve en la Figura , se desea generar pruebas a partir del modelo de datos - capaces de probar las distintas aplicaciones que puedan manejar este esquema- independientemente de la plataforma sobre la que esté desarrollado, ya sean aplicaciones de escritorio, aplicaciones Web, web services expuestos para integrarse con otros sistemas, o aplicaciones para dispositivos móviles (smart devices). El objetivo es verificar que estas capas que están sobre la base de datos logren manejar correctamente las particularidades del esquema. En este escenario, se están diseñando pruebas que sean aplicables para cada subestructura interesante del modelo de datos, de forma que se pueda garantizar cierto nivel de confianza en cómo la aplicación bajo pruebas maneja el esquema de datos para las operaciones básicas de creación, lectura, actualización y borrado de instancias.

La KB de GeneXus y el nivel de abstracción de GXtest
Los sistemas de información desarrollados con GeneXus son conformes a un metamodelo propietario denominado Knowledge Base (KB), o base de conocimiento. GXtest permite automatizar pruebas al mismo nivel de abstracción que GeneXus: es decir, asociando los artefactos de prueba a los elementos de la KB. Con las herramientas tradicionales se asocian los artefactos de prueba a la aplicación generada, y el problema mayor con esto es que al regenerar la aplicación (ya sea por un cambio en el sistema, o por un cambio de plataforma en la que se desea generar) los artefactos de prueba generalmente deben ser reconstruidos para cada nueva plataforma. Con GXtest, sin embargo, se mantienen asociaciones directas entre los artefactos de prueba y los elementos de la KB, absorbiendo el impacto de los cambios. Vista en GXtest la factibilidad de generación de pruebas automática basada en el modelo de datos para sistemas de información generados con GeneXus, se ve la posibilidad de generalizar la metodología desarrollada en GXtest hacia otros tipos de sistemas de información.
Un nuevo enfoque para probar sistemas de información que manejan base de datos

En síntesis: se presenta en este trabajo un nuevo enfoque para probar sistemas de información que manejan base de datos. Este criterio de adecuación de pruebas tiene en cuenta que en estos sistemas lo importante es que la información esté correctamente almacenada, por lo que se prueban las operaciones que trabajan sobre estas estructuras conforme a diversos criterios de cobertura. De esta forma vemos que el enfoque aplicado actualmente a GeneXus puede ser extendido y aún mejorado para otros tipos de sistemas, generalizando la idea mediante el uso de estándares de la industria, tales como:
Por mayor información: ftoledo@abstracta.com.uy
MDT: Model-Driven Testing
Como se ve en la Figura , se desea generar pruebas a partir del modelo de datos - capaces de probar las distintas aplicaciones que puedan manejar este esquema- independientemente de la plataforma sobre la que esté desarrollado, ya sean aplicaciones de escritorio, aplicaciones Web, web services expuestos para integrarse con otros sistemas, o aplicaciones para dispositivos móviles (smart devices). El objetivo es verificar que estas capas que están sobre la base de datos logren manejar correctamente las particularidades del esquema. En este escenario, se están diseñando pruebas que sean aplicables para cada subestructura interesante del modelo de datos, de forma que se pueda garantizar cierto nivel de confianza en cómo la aplicación bajo pruebas maneja el esquema de datos para las operaciones básicas de creación, lectura, actualización y borrado de instancias.

La KB de GeneXus y el nivel de abstracción de GXtest
Los sistemas de información desarrollados con GeneXus son conformes a un metamodelo propietario denominado Knowledge Base (KB), o base de conocimiento. GXtest permite automatizar pruebas al mismo nivel de abstracción que GeneXus: es decir, asociando los artefactos de prueba a los elementos de la KB. Con las herramientas tradicionales se asocian los artefactos de prueba a la aplicación generada, y el problema mayor con esto es que al regenerar la aplicación (ya sea por un cambio en el sistema, o por un cambio de plataforma en la que se desea generar) los artefactos de prueba generalmente deben ser reconstruidos para cada nueva plataforma. Con GXtest, sin embargo, se mantienen asociaciones directas entre los artefactos de prueba y los elementos de la KB, absorbiendo el impacto de los cambios. Vista en GXtest la factibilidad de generación de pruebas automática basada en el modelo de datos para sistemas de información generados con GeneXus, se ve la posibilidad de generalizar la metodología desarrollada en GXtest hacia otros tipos de sistemas de información.
Un nuevo enfoque para probar sistemas de información que manejan base de datos

En síntesis: se presenta en este trabajo un nuevo enfoque para probar sistemas de información que manejan base de datos. Este criterio de adecuación de pruebas tiene en cuenta que en estos sistemas lo importante es que la información esté correctamente almacenada, por lo que se prueban las operaciones que trabajan sobre estas estructuras conforme a diversos criterios de cobertura. De esta forma vemos que el enfoque aplicado actualmente a GeneXus puede ser extendido y aún mejorado para otros tipos de sistemas, generalizando la idea mediante el uso de estándares de la industria, tales como:
- UML (http://www.uml.org/)
- UTP (http://utp.omg.org/)
- UDMP (http://www.ibm.com/developerworks/rational/library/content/03July/1000/1392/1392_naiburg7.pdf)
- QVT (http://www.omg.org/spec/QVT/1.0/)
- MOFM2T (http://www.omg.org/spec/MOFM2T/1.0/).
Por mayor información: ftoledo@abstracta.com.uy
- (ATGen: automatic test data generation using constraint logic programming and symbolic execution†. Software Testing, Verification and Reliability, 2001)