SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
Proyecto GxUnit


           Construcción de una herramienta para automatización de
                        pruebas unitarias en GeneXus

       Enrique Almeida              Alejandro Araújo          Uruguay Larre Borges
           Concepto                      FYMNSA                 GeneXus Consulting
    Montevideo,Uruguay,11800       Montevideo,Uruguay,11200 Montevideo,Uruguay,11200
     ealmeida@concepto.com           alar758@gmail.com      ularre@genexusconsulting.com


                                             Abstract

The goal of GxUnit project is the construction of an automatization tool for unit tests associated to
GeneXus. Such project is exposed in this paper, also the products obtained from independent and
paralel development processes that correspond to the initial versions of the tool, made by two
student groups attendees of the “Software Engineering Project 2007” dictated by Facultad de
Ingeniería de la Universidad de la República del Uruguay, where the authors played de Customer
role. Both versions are distinguished by the denominations of GxUnit1 and GxUnit2.


Keywords: FIT, GeneXus, Software Engineering, Unit Testing, xUnit.


                                            Resumen
El objetivo del proyecto GxUnit es la construcción de una herramienta para la automatización de
pruebas unitarias asociada a GeneXus. En este informe se expone acerca de dicho proyecto y de los
productos resultantes de dos procesos de desarrollo independientes y paralelos que dieron lugar a
las versiones iniciales de la herramienta, llevados adelante por dos grupos de estudiantes del curso
“Proyecto de Ingeniería de Software 2007”, de la Facultad de Ingeniería de la Universidad de la
República del Uruguay, para los cuales los autores de este informe actuamos en el rol de Clientes.
Dichas versiones se distinguen con las denominaciones GxUnit1 y GxUnit2.


Palabras claves: FIT, GeneXus, Ingeniería de Software, Prueba Unitaria, xUnit.
1. GENEXUS
El marco para la automatización de pruebas unitarias propuesto se asocia a GeneXus1 [7],
herramienta de especificación de sistemas de información basada en la aplicación de un modelo
matemático que permite capturar e integrar las visiones de los usuarios en bases de conocimiento
(KB2) a partir de las cuales genera, mediante ingeniería inversa y procesos de inferencia, bases de
datos normalizadas y aplicaciones completas; para diferentes plataformas de destino a partir de una
misma especificación básica, pudiendo mantenerlas en forma automatizada ante cambios en los
requerimientos [5] [9] [21] [23]. GeneXus modela la realidad mediante un conjunto de instancias
de “objetos tipos”3 almacenados en las KBs. Produce el código necesario para implementar las
aplicaciones en diferentes lenguajes y plataformas de destino mediante la utilización de programas
generadores. Se apoya en una metodología incremental e iterativa y trabaja sobre especificaciones,
lo cual permite independencia tecnológica. Su última versión (versión X) posee una arquitectura
extensible, por lo cual pueden agregarse al producto paquetes de software, conocidos como
extensiones, capaces de interactuar con la base de conocimiento, pudiendo ser desarrolladas por
terceros [8].

2. EL PROYECTO GXUNIT
2.1 Fundamentación

Una parte considerable del total de software producido en Uruguay se elabora con esta herramienta
creada y mantenida por una empresa uruguaya, Artech. En el área de pruebas dicha herramienta no
brinda actualmente una funcionalidad específica que se aproxime en versatilidad y potencia al
resto de sus características, por lo cual se entendió oportuno incorporarle mecanismos para la
automatización de las pruebas unitarias, de valor para el Analista GeneXus4.

2.2 Antecedentes

La propuesta GxUnit tuvo su origen en el año 2003 [1] cuándo se anuncia el objetivo de crear una
herramienta de automatización de pruebas unitarias en GeneXus. En el año 2004 se formalizó la
propuesta [2] caracterizándose la misma en la línea de las herramientas xUnit5. Los objetivos
básicos planteados fueron los siguientes: crear un marco de pruebas asociado a GeneXus, poder
escribir las pruebas en GeneXus, ejecutar las pruebas y registrar los resultados.

Considerando para el desarrollo un enfoque iterativo e incremental se postuló ir cumpliendo con el
objetivo de generar objetos GeneXus para pruebas de instancias de los siguientes objetos GeneXus:
Objetos sin UI6: Procedures, Business Transactions; objetos con UI: WebPanels (pantallas de
consulta web), Transacciones (Transactions), WorkPanels (pantallas de consulta win).

En el año 2006 se retoma bajo la forma de “Proyecto Colaborativo GeneXus” [3] [4] para
finalmente en julio de 2007 proponer el proyecto para su desarrollo en el ámbito del curso
“Proyecto de Ingeniería de Software 2007” de la Facultad de Ingeniería de la Universidad de la
1
  Producida en Uruguay por la empresa Artech, su primera versión fue liberada al mercado para su comercialización en 1989. Sus creadores, Breogán
Gonda y Nicolás Jodal, han sido galardonados con el Premio Nacional de Ingeniería en 1995 otorgado por el “Proyecto GeneXus” [10]
2
  Knowledge Base
3
  No se refiere a objetos en el sentido de OOLP (lenguajes de programación orientada a objetos). Se refiere a objetos GeneXus tales como
Transactions, WebPanels, WorkPanels, Procedures, etc.
4
  De ahora en adelante su utilizará el término “Analista” como sinónimo de “Analista GeneXus”
5
  Familia de Frameworks para pruebas unitarias (JUnit [14] y otros)
6
  Interfase de usuario
República del Uruguay. Entre agosto y noviembre de dicho año dos grupos de estudiantes
desarrollaron en forma independiente y en paralelo, dos versiones iniciales de la herramienta
GxUnit en el contexto del mencionado curso [15]. Se actuó en el rol de Cliente, realizándose el
seguimiento de la construcción y validación de los prototipos. Los productos de software resultantes
de dichos desarrollos han sido liberados al dominio público y pueden ser descargados desde Internet
[11] [12].

3 LA HERRAMIENTA PARA PRUEBAS UNITARIAS GXUNIT

3.1 Características generales

La herramienta debe permitir definir y especificar instancias de objetos para prueba unitaria
(“fixtures”) de otras instancias de “objetos tipos” GeneXus del SUT7. Los objetos para prueba
recogen la especificación de la prueba a implementar y a partir de los mismos se genera el código
necesario para ejecutarla en diferentes plataformas. En la figura 1 se ejemplifica al respecto de lo
anteriormente expuesto, observándose la relación entre los objetos de prueba y los objetos del SUT
y los correspondientes programas generados en los diferentes lenguajes para las distintas
plataformas de destino. La especificación para las pruebas es recogida desde parámetros contenidos
en tablas. El resultado de las pruebas se almacena.




                                                   Figura 1: Objetos para prueba unitaria.

Las instancias de objetos para prueba se asocian a las instancias de objetos8 correspondientes a
probar y son sensibles a los impactos de los cambios en los mismos, automatizándose su
reconstrucción.

3.2 Especificación

La especificación de GxUnit ha recibido aportes de diversas fuentes. En particular se recogió la
propuesta de implementar un formato de especificación de las pruebas apoyado en ideas contenidas
en el “Framework for Integrated Test” (FIT) [6] [20]. La elección de un formato tabular para la
implementación de las pruebas permite la especificación sustentable de requerimientos, por la vía
de ejemplos, de forma que complementa la comunicación y fomenta la colaboración entre

7
 System Under Test (sistema sometido a pruebas)
8
 De ahora en adelante se utilizará el termino “objetos” para referirse tanto a los “objetos tipos GeneXus” como a sus instancias particulares dentro del
modelo de una aplicación en una KB
desarrolladores, verificadores y usuarios. El valor de este tipo de representaciones ha sido
reconocido y utilizado desde hace largo tiempo [13]. Simultáneamente, se aprovechan las
características de GeneXus para facilitar y resolver el costoso mantenimiento de los casos de prueba
que se presentan cuándo se utilizan herramientas del tipo de FIT y la intensa reelaboración ante los
cambios en los casos de prueba y el SUT, la sobrecarga en los equipos de desarrollo y otros
problemas de escalabilidad [16] [19] [17] [18] [22] [24].

Para el proyecto inicial se suministraron a ambos grupos la siguiente visión, misión y los siguientes
requerimientos, expuestos para este informe bajo la forma de relatos (stories). El alcance se negoció
y acotó con cada uno de los grupos en forma independiente.

Visión: El propósito es brindar al Analista un mecanismo para automatizar la creación,
        mantenimiento y ejecución de pruebas unitarias.
Misión: Construir una herramienta que permita automatizar las pruebas unitarias de objetos
        GeneXus a ser utilizada por Analistas.

3.2.1 Consideraciones técnicas

La herramienta se deberá construir como una extensión para GeneXus. Deberá tener un diseño
modular. Es preciso tener muy en cuenta que esta es una etapa inicial de la herramienta, que irá
desarrollándose en incrementos. A futuro se espera poder incorporarle componentes que permitan
generar pruebas para otros objetos GeneXus que no serán contemplados en esta primera edición y
nuevos editores para los casos de prueba. El reuso, la independencia entre capas y un bajo
acoplamiento son requisitos importantes. Se deberá programar en C# y se utilizará el SDK9
brindado por Artech para la programación de extensiones.

3.2.2 Relatos

•       El Analista definirá “casos de prueba” desde el IDE10 de GeneXus, desde donde también podrá
        comandar su ejecución y ver los resultados. Se deberá suministrarle un editor para efectuar el
        ingreso de estos casos de prueba.
•       El Analista podrá ejecutar un conjunto de pruebas en modo desatendido, por ejemplo luego de
        una construcción (build), adicionalmente a las ejecuciones que realiza desde la interfase.
•       Los casos de prueba se almacenarán en la KB del SUT.
•       El resultado de la ejecución de las pruebas no se almacenará en la KB.
•       Se desea que la herramienta tenga una interfase similar a los productos xUnit para la ejecución y
        visualización de primer nivel de los resultados. Se desea también que esté acorde a la interfase
        del IDE de GeneXus, para que no resulte extraña al Analista.
•       Se definen como objetos verificables aquellos pertenecientes al dominio de objetos para los
        cuales GxUnit puede generar y ejecutar pruebas unitarias. En esta primera instancia estos serán
        solamente objetos de tipo procedure.
•       La herramienta generará en forma automatizada objetos verificadores de tipo procedure (tests) a
        partir de los objetos verificables y de los casos de prueba. Serán los encargados de guiar la
        prueba invocando a los objetos a verificar.
•       El Analista necesita poder conocer rápidamente cuales son los objetos verificables y cuales de
        estos tienen casos de prueba ya definidos.

9
     Software Development Kit
10
     Integrated Development Environment
•       Se deberá implementar un oráculo que permitirá saber si cada prueba fue exitosa o fallida. El
        Analista podrá indicar que se realice una comprobación parcial, lo cual implica que habrá
        resultados de la prueba en este caso que no influirán en la decisión acerca de si la misma pasa o
        falla.
•       Las pruebas fallidas se marcarán en Rojo, las que pasaron en Verde, aquellas no ejecutadas en
        Gris. De capturarse excepciones estas se desplegarán pintadas de Amarillo.
•       Existirán procedures (procedimientos) “verificadores del usuario” (PVU), que escribirá el
        Analista, y que podrán ser asociados a las pruebas para ser invocados previo a su finalización.
        Estos procedimientos implementarán oráculos y poseerán un único parámetro de tipo
        “booleano” para indicar si la prueba fue exitosa o fallida.
•       El Analista definirá una prueba indicando: el objeto verificable, uno o varios PVUs y un
        conjunto de datos (“tuplas o casos de prueba”) de entrada y resultados esperados que deberán
        corresponderse respectivamente con cada uno de los parámetros de entrada y de salida del
        objeto verificable.
•       El editor del caso de prueba deberá presentar una grilla “inferida” a partir de los parámetros de
        entrada y salida del objeto verificable para que el Analista ingrese o modifique los casos de
        prueba (datos de entrada y resultados esperados).
•       Para un mismo objeto verificable se pueden definir varios “casos de prueba”. El Analista podrá
        indicar cuales de estos casos desea incluir en la próxima prueba y cuales desea ignorar.
•       Durante la ejecución de una prueba se iterará la invocación del objeto a verificar, una vez por
        cada “caso de prueba” participante en la prueba, pasándole como parámetros de entrada los
        datos de entrada indicados en un “caso de prueba”. Al finalizar la prueba se invoca a los PVUs
        (de existir).
•       Dada una prueba, el Analista deberá poder visualizar, para cada “caso de prueba” los datos de
        entrada, los resultados esperados y datos de salida obtenidos. También necesitará acceder al
        resultado de ejecuciones anteriores.
•       Una prueba se considera fallida si produce resultados no coincidentes con los esperados y/o si el
        PVU indica falla. La comparación de los resultados esperados con los obtenidos, para el alcance
        de este desarrollo, se limitará a la igualdad.
•       Debe ser posible, para un Analista, ofrecer la posibilidad de cargar los datos de entrada y
        resultados esperados, desde un archivo externo.
•       Los tipos de datos a considerar son los básicos de GeneXus, incluyendo tipos de datos
        estructurados (SDTs11).
•       El resultado de la ejecución de las pruebas se podrá almacenar con diferentes niveles de detalle.
•       Los cambios que se produzcan a nivel de los parámetros de un objeto verificable deberán
        impactarse contra su(s) caso(s) de prueba, detectándose automáticamente las diferencias para
        permitir tanto su reconstrucción automatizada como la de los tests.
•       La eliminación de PVUs implicará advertir al Analista acerca de los casos de prueba que los
        utilicen y reconstruir en forma automatizada los casos de prueba y los tests.
•       Debe existir un mecanismo para eliminar fácilmente un objeto verificable con casos de prueba
        asociados. Dicha eliminación también eliminará sus casos de prueba y sus tests.
•       Al Analista le interesará verificar el estado de la base de datos (BD) luego de la ejecución de
        una prueba, por lo cual se desea proveer un mecanismo en tal sentido que le permita conocer la
        variación ∆ BD = BDinicial - BDfinal y verificar que el estado final sea el esperado.




11
     Structured Data Types
3.3 Implementaciones.
Se obtuvieron como resultantes principales del proyecto dos productos de software, que se
denominaron GxUnit1 y GxUnit2. El diseño de la solución y la documentación de la misma
estuvieron a cargo de cada uno de los grupos de estudiantes.

3.3.1 Principales características

A partir del mismo conjunto de requerimientos cada grupo desarrolló una herramienta con
diferencias importantes en cuanto al diseño de la solución. Las semejanzas están dadas por haber
satisfecho un núcleo común de requerimientos y también por algunas soluciones de diseño común,
como ser el almacenamiento de los resultados de las pruebas en formato XML12 y la utilización de
Web Services (WS) para comandar su ejecución desde la extensión. Las diferencias surgen en el
diseño de las interfases, su vinculación con los objetos GeneXus, la generación de procedimientos
GeneXus para prueba y el almacenamiento de los resultados. También surgen diferencias debidas al
alcance acordado con cada grupo de estudiantes. Se enumeran a continuación las principales
características de cada implementación.

3.3.2 GxUnit1

•    Genera un objeto verificador por cada objeto verificable Estos procedimientos verificadores
     pueblan la KB y se corresponden uno a uno con la prueba y el objeto a verificar. No presentan
     restricciones en la cantidad de parámetros a utilizar.
•    El objeto verificador se implementa como un WS que es consumido desde la extensión
•    Crea una “parte”13 nueva para todo procedimiento En dicha parte se muestra el editor del caso
     de prueba, en el cual pueden incluirse las “tuplas o casos de prueba” de valores de entrada y de
     salida.
•    Almacena los datos para prueba y los resultados en archivos XML.
•    Ofrece una primera aproximación a la verificación de la BD.
•    Admite procedimientos con parámetros de tipo datos estructurados (SDT).
•    Permite reconstruir un caso de prueba ante cambios en la regla parm del procedimiento a
     verificar minimizando la pérdida de datos.

3.3.3 GxUnit2

•    Genera un único objeto verificador, capaz de ejecutar todas las pruebas. Dicho objeto utiliza
     invocaciones dinámicas de GeneXus para ejecutar los procedimientos a probar. Necesitaría para
     lograr su implementación completa poder pasar parámetros definidos en forma dinámica. Dado
     que esto último no es posible hacerlo aún en GeneXus, pero existe la posibilidad que se
     implemente a futuro, se resolvió construir un prototipo que genere pruebas solo para
     procedimientos con dos parámetros de entrada y uno de salida.
•    El objeto verificador se implementa como un WS que es consumido desde la extensión.
•    Crea un objeto nuevo en la KB denominado “TestSet”: Dicho objeto permite definir los casos de
     prueba para un objeto a verificar. Tiene un editor que permite ingresar las “tuplas o casos de

12
  eXtensible Markup Language
13
  Los objetos GeneXus se componen de partes, donde se especifican diferentes aspectos de los mismos. Cada parte tiene su editor. Son ejemplos de
partes de objetos las siguientes: código fuente, código de las reglas, código de eventos, formularios, diseño de salida impresa
prueba” con datos de entrada y salidas esperadas, así como los procedimientos verificables y
    comentarios.
•   Almacena los datos para pruebas en la base de datos en que reposa la KB, mientras que los
    resultados son almacenados en archivos XML.
•   Permite reconstruir un caso de prueba ante cambios en la regla parm del procedimiento a
    verificar minimizando la pérdida de datos.
•   Genera una bitácora (“log”) con diferentes niveles de detalle.

3.4 Implementaciones en acción

Se resumirá a continuación información recogida de los manuales de usuario escritos por los grupos
de estudiantes, a efectos de ejemplificar acerca de la utilización y el alcance de lo producido.

3.4.1 GxUnit1

Se desea crear un objeto para verificar un procedure (procedimiento) GeneXus. En las figuras 2 y 3
se muestran sus parámetros (regla parm) y su código, respectivamente.




    Figura 2: Regla “parm” de procedimiento a probar.           Figura 3: Código fuente a verificar.

Los datos de prueba se ingresan a la pestaña “Tests” (parte agregada al objeto). El editor
implementado muestra la grilla, donde las columnas se corresponden a los parámetros del
procedimiento a probar y las filas a los casos de prueba. Es posible seleccionar qué casos de prueba
se van a correr en la próxima ejecución. También es posible cargar la grilla a partir de un archivo
XML (marcando la opción “Import from…”). Ver figura 4.




                                             Pestaña para definir
                                             las pruebas




                                          Figura 4: Editor de pruebas.
Al guardar el procedimiento a probar se genera el procedimiento verificador y el archivo XML con
los datos de los casos de prueba. Ver figura 5.




                                                       Procedimiento
                                                       Verificador




                               Figura 5: Creación del procedimiento verificador.

Se ejecutan con la opción "Run Tests" del menú "Tests". Ver figuras 6 y 7.




       Figura 6: Menú para ejecutar pruebas.              Figura 7: Selección de pruebas a ejecutar.

El resultado de la ejecución aparecerá en un archivo XML, visible desde el IDE.




                                 Figura 8: Vista expandida de los resultados.
3.4.2 GxUnit2

Se desea verificar un procedure GeneXus. Para esto se debe crear un objeto del tipo “TestSet”, tal
como se muestra en la figura 9.




                                                                                 Nuevo Tipo de
                                                                                 Objeto GX para
                                                                                 pruebas.




                                        Figura 9: Creación de objeto TestSet.

Luego de creado se presenta una pantalla para definir la prueba. Se solicitará el nombre del
procedimiento verificable a probar, los casos de prueba y los PVUs. En el ejemplo se creará una
instancia de un objeto TestSet llamado TestSetSumador cuyo objetivo es probar un procedimiento
verificable existente en la KB llamado “Sumador”. El editor de dicho objeto se muestra en la figura
10. El procedimiento Sumador recibe como entradas dos parámetros y ofrece como salida otro
parámetro (de igual tipo y dimensión) con la suma de los valores de los parámetros de entrada. Un
campo de ingreso tipo “combo de selección” permite ubicarlo y seleccionarlo. El editor despliega
los parámetros del procedimiento en una grilla. El Analista puede especificar cuales parámetros
interesan para la prueba. Luego se le presentará una grilla donde se podrán ingresar todos los casos
de prueba. Las columnas de la grilla corresponderán a cada uno de los parámetros involucrados y
cada fila corresponderá a un nuevo caso de prueba. El procedimiento a probar se ejecutará una vez
por cada fila de la grilla cuando se dispare la prueba. Finalmente, es posible indicar uno o más
PVUs para verificaciones adicionales. Se proponen al Analista como candidatos a seleccionar desde
un combo, los procedimientos que tienen igual número y tipo de parámetros que el procedimiento a
verificar y uno adicional, como salida, de tipo “booleano”. Es posible indicar si se deben ejecutar o
no los PVUs seleccionados.




                      Figura 10: Editor de TestSet y sus grillas para ingreso de casos de prueba.
Para ejecutar las pruebas se utiliza el menú “Tool Windows” del IDE de GeneXus, al que se le
agregó la opción “Testeable Procedures”. Ver figuras 11 y 12.




       Figura 11: Menú para ejecución de pruebas.                 Figura 12: Pruebas a ejecutar.

El resultado general de la ejecución se expone tal como muestra la figura 13.




                                     Figura 13: Reporte de ejecución (GxUnit2).

Además de presentar el reporte de resultados, la extensión registra detalles de la ejecución en un
archivo XML según el nivel de detalle indicado por el Analista. La pantalla del visor de dicha
bitácora (“log”) se expone en la figura 14.




                                            Figura 14: Visor de la bitácora.
Los objetos TestSet son capaces de responder frente a una modificación externa de los
procedimientos a verificar o de los PVUs. Tras modificar los parámetros de un procedimiento a
verificar, al abrir el TestSet que lo verifica presenta una ventana similar a la mostrada en la figura
15. Observando la figura se aprecia que en el cuadrante superior izquierdo de la pantalla se
presentan los parámetros que tenía el procedimiento a verificar previo el cambio y debajo los
nuevos parámetros. En el cuadrante superior derecho se muestran los antiguos casos de prueba, que
perdieron validez tras el cambio. Debajo se pueden agregar casos de prueba de forma que
contemplen los cambios. Los antiguos valores pueden ser reutilizados, ya sea escribiéndolos
manualmente o arrastrándolos desde una grilla a otra.




                           Figura 15: Impacto en el TestSet por cambios en la regla parm.

4. CONCLUSIONES Y TRABAJO FUTURO
Se han logrado desarrollar los primeros prototipos de una herramienta de pruebas unitarias para
ambientes de desarrollo en GeneXus, de forma colaborativa y open-source. La forma de continuar
puede tomar varios caminos, siguiendo las diferentes vertientes referidas a la especificación,
desarrollo y aplicación. En cuanto a la especificación, se deberá ampliar el alcance con el objetivo
de abarcar los objetos GeneXus aún no contemplados, especialmente aquellos con interfase web y
win. En relación al desarrollo, el primer camino está dado por el desarrollo de los prototipos de
GxUnit por parte de futuros equipos externos a Artech hasta transformarlos en herramientas que
otorguen valor para los Analistas. El segundo camino está determinado por el desarrollo de
funcionalidad para pruebas unitarias que la propia empresa Artech estime pertinente realizar en
GeneXus. En cuanto a su aplicación se entiende necesario realizar varios estudios de campo, una
vez que la herramienta alcance un nivel de madurez que los permita.

5. REFERENCIAS

[1]        Almeida E. “En el proceso de crear un framework de testing”,2003,
           http://ealmeida.blogspot.com/2003/10/estoy-en-el-proceso-de-crear-un.html,
[2]        Almeida E. “Software Testing: Tres enfoques para un mismo problema”, Encuentro
           Internacional de Usuarios GeneXus del año 2004.
[3]        Almeida E.,Araújo A.,Larre Borges U. “Proyecto colaborativo GxUnit”,2006,
           http://www.gxopen.com/commwiki/servlet/hwiki?GxUnit,
[4]        Almeida E. ,Araújo A.,Larre Borges U. “Collaborative Projects”, 2006
           http://www.concepto.com.uy/archivosvinculados/EncuentroGX2006CollaborativeProjects.ppt
[5]        Artech Consultores S.R.L. “Visión general de GeneXus”,2005,
           http://www.GeneXus.com/portal/agxppdwn.aspx?2,32,660,O,S,0,22790%3bS%3b1%3b2315,
[6]       Cunningham W. “Framework for Integrated Tests”, 2007, http://fit.c2.com/,
[7]       GeneXus, http://www.GeneXus.com, 2008.
[8]       GeneXus Community Wiki, “GeneXus Rocha/GXextensions”, 2007,
          http://wiki.gxtechnical.com/commwiki/servlet/hwiki?category%3AGeneXus+Extensions
[9]       Gonda B.,Jodal N. “Filosofía y Fundamentos Teóricos de GeneXus”,2007,
          http://www.GeneXus.com/portal/hgxpp001.aspx?2,32,660,O,S,0,MNU;E;131;12;MNU.
[10]      Gonda B.,Jodal N. “Proyecto GeneXus”. Academia Nacional de Ingeniería, Uruguay, 1995
          http://www.aiu.org.uy/gxpsites/agxppdwn?2,1,4,O,S,0,79%3BS%3B1%3B21.
[11]      GxUnit1, http://www.gxopen.com/gxopenrocha/servlet/hproject?721, 2008.
[12]      GxUnit2, http://www.gxopen.com/gxopenrocha/servlet/hproject?721, 2008.
[13]      Janicki R.,Parnas D., Zucker J., “Tabular Representations in Relational Documents”,
          Communications Research Laboratory, McMaster University, 1996.
[14]      JUnit, http://junit.org, 2008.
[15]      Proyecto de Ingeniería de Software 2007 “GxUnit”, Docente: Triñanes J. ,Facultad de
          Ingeniería, Universidad de la República, Uruguay, 2007.
[16]      Melnik G. “Empirical Analyses of Executable Acceptance Test Driven Development”, PHD Th.,
          Supervisor: Maurer, F., DCS, University of Calgary, Calgary, Alberta,
          http://ebe.cpsc.ucalgary.ca/ebe/uploads/Publications/MelnikPhD.pdf, 2007.
[17]      Melnik G.,Maurer F. “Multiple Perspectives on Executable Acceptance Test-Driven
          Development”, DCS, University of Calgary, Canada, 2007,
          http://ebe.cpsc.ucalgary.ca/ebe/uploads/Publications/XP2007_Melnik_Maurer.pdf,
[18]      Melnik G.,Read K., Maurer, F. “Suitability of FIT User Acceptance Tests for Specifying
          Functional Requirements: Developer Perspective”, DCS, University of Calgary, Canada, 2004
          http://ebe.cpsc.ucalgary.ca/ebe/uploads/Publications/MelnikReadMaurer2004b.pdf,
[19]      Miller J. “Is there a future for Fit testing?”, 2007
          http://codebetter.com/blogs/jeremy.miller/archive/2007/07/30/is-there-a-future-for-fit-
          testing.aspx
[20]      Mugridge R., Cunningham W. ”Fit for Developing Software: Framework for Integrated Tests”,
          ISBN 0-321-26934-9, Prentice Hall PTR, 2005.
[21]      Latorres E.,Salvetto P., Larre Borges U., Nogueira, J., “Una herramienta de apoyo a la gestión
          del proceso de desarrollo de software”, IX Congreso Argentino de Ciencias de la Computación
          (CACIC 2003), La Plata, Argentina.
[22]      Read K. “Supporting Agile Teams of Teams via Test Driven Design”, Master Th, DCS,
          University of Calgary, Calgary, Canada, 2005
          http://ebe.cpsc.ucalgary.ca/ebe/uploads/Publications/Read2005.pdf, 2005.
[23]      Salvetto P. “Modelos Automatizables de Estimación muy Temprana del Tiempo y Esfuerzo de
          Desarrollo de Sistemas de Información”, Tesis de Doctorado, Directores: Segovia, F., Nogueira
          J., Fac.Informática, Univ.Politécnica de Madrid, Doctorado conjunto en ingeniería informática
          UPM-ORT, 2006 http://oa.upm.es/367/01/PEDRO_SALVETTO_LEON.pdf,
[24]      Shores J. “James Shores Successfull Software” “Five Ways to Misuse FIT”, 2007
          http://www.jamesshore.com/Blog/Five-Ways-to-Misuse-Fit.html, 2007.

Agradecimientos

A los integrantes del equipo que desarrolló GxUnit1: Adrián García, Anthony Figueroa, Antonio
Malaquina, Cecilia Apa, Darío de León, Diego Gawenda, Diego San Esteban, Federico Parins,
Fernando Colman, Ken Tenzer, Lucía Adinolfi, Marcelo Falcón, Rafael Sisto, Rodrigo Ordeix.
A los integrantes del equipo que desarrolló GxUnit2: Fernando Varesi, Gervasio Marchand,
Guillermo Pérez, Guillermo Polito, Horacio López, Ignacio Esmite, Marcelo Celio, Marcelo
Vignolo, Martín Sellanes, Nicolás Alvarez de Ron, Rodrigo Aguerre, Rosana Robaina, Soledad
Pérez, Stephanie De León.
Al equipo de desarrollo de Artech y a los docentes del curso Proyecto de Ingeniería 2007.

Mais conteúdo relacionado

Destaque

Secuencia didáctica integrada
Secuencia didáctica integradaSecuencia didáctica integrada
Secuencia didáctica integradaAida March
 
Alfonsi nº-1
Alfonsi nº-1Alfonsi nº-1
Alfonsi nº-1Eva Soria
 
Presentación proyecto TACCLE2
Presentación proyecto TACCLE2Presentación proyecto TACCLE2
Presentación proyecto TACCLE2Isabel Gutiérrez
 
Guia Alumnos Eoipamplona
Guia Alumnos EoipamplonaGuia Alumnos Eoipamplona
Guia Alumnos EoipamplonaJosé Artero
 
Descubre la Nueva Colección de Relojes de Lujo Swarovski
Descubre la Nueva Colección de Relojes de Lujo SwarovskiDescubre la Nueva Colección de Relojes de Lujo Swarovski
Descubre la Nueva Colección de Relojes de Lujo SwarovskiYan Gao
 
EvaluacióN Final De Actividades Del Ciclo Escolar 2008 2009
EvaluacióN Final De Actividades Del Ciclo Escolar 2008 2009EvaluacióN Final De Actividades Del Ciclo Escolar 2008 2009
EvaluacióN Final De Actividades Del Ciclo Escolar 2008 2009Addy Galaviz
 
Seminario APD - Darwin en mi negocio
Seminario APD - Darwin en mi negocioSeminario APD - Darwin en mi negocio
Seminario APD - Darwin en mi negocioManuel A. Velazquez
 
Como utilizar la Guía de actividades y su aplicación
Como utilizar la Guía de actividades y su aplicaciónComo utilizar la Guía de actividades y su aplicación
Como utilizar la Guía de actividades y su aplicaciónpsicoparper
 
Huella del carbono: herramienta interna de control de costes en el marco del ...
Huella del carbono: herramienta interna de control de costes en el marco del ...Huella del carbono: herramienta interna de control de costes en el marco del ...
Huella del carbono: herramienta interna de control de costes en el marco del ...ServiDocu
 
Recordando A Don Gilberto
Recordando A Don GilbertoRecordando A Don Gilberto
Recordando A Don GilbertoCarlos Alonso
 
familia norteamericana en Jesús Reparador
familia norteamericana en Jesús Reparador  familia norteamericana en Jesús Reparador
familia norteamericana en Jesús Reparador Reparadoras
 
Reunió inici de curs 6è 2012.2013
Reunió inici de curs 6è 2012.2013Reunió inici de curs 6è 2012.2013
Reunió inici de curs 6è 2012.2013Toni Gomez
 

Destaque (20)

Secuencia didáctica integrada
Secuencia didáctica integradaSecuencia didáctica integrada
Secuencia didáctica integrada
 
La ciència que s'amaga pels racons
La ciència que s'amaga pels raconsLa ciència que s'amaga pels racons
La ciència que s'amaga pels racons
 
Alfonsi nº-1
Alfonsi nº-1Alfonsi nº-1
Alfonsi nº-1
 
Presentación proyecto TACCLE2
Presentación proyecto TACCLE2Presentación proyecto TACCLE2
Presentación proyecto TACCLE2
 
Guia Alumnos Eoipamplona
Guia Alumnos EoipamplonaGuia Alumnos Eoipamplona
Guia Alumnos Eoipamplona
 
Descubre la Nueva Colección de Relojes de Lujo Swarovski
Descubre la Nueva Colección de Relojes de Lujo SwarovskiDescubre la Nueva Colección de Relojes de Lujo Swarovski
Descubre la Nueva Colección de Relojes de Lujo Swarovski
 
Aizan Jornadas 2006
Aizan Jornadas 2006Aizan Jornadas 2006
Aizan Jornadas 2006
 
Jaca 2014 (1)
Jaca 2014 (1)Jaca 2014 (1)
Jaca 2014 (1)
 
Resbalosa
ResbalosaResbalosa
Resbalosa
 
EvaluacióN Final De Actividades Del Ciclo Escolar 2008 2009
EvaluacióN Final De Actividades Del Ciclo Escolar 2008 2009EvaluacióN Final De Actividades Del Ciclo Escolar 2008 2009
EvaluacióN Final De Actividades Del Ciclo Escolar 2008 2009
 
Seminario APD - Darwin en mi negocio
Seminario APD - Darwin en mi negocioSeminario APD - Darwin en mi negocio
Seminario APD - Darwin en mi negocio
 
Encarte LIMA 2014
Encarte LIMA 2014Encarte LIMA 2014
Encarte LIMA 2014
 
Notas de prensa asesinato Colombo
Notas de prensa asesinato ColomboNotas de prensa asesinato Colombo
Notas de prensa asesinato Colombo
 
Como utilizar la Guía de actividades y su aplicación
Como utilizar la Guía de actividades y su aplicaciónComo utilizar la Guía de actividades y su aplicación
Como utilizar la Guía de actividades y su aplicación
 
Huella del carbono: herramienta interna de control de costes en el marco del ...
Huella del carbono: herramienta interna de control de costes en el marco del ...Huella del carbono: herramienta interna de control de costes en el marco del ...
Huella del carbono: herramienta interna de control de costes en el marco del ...
 
Mujeres en las Artes
Mujeres en las ArtesMujeres en las Artes
Mujeres en las Artes
 
Wikiak
WikiakWikiak
Wikiak
 
Recordando A Don Gilberto
Recordando A Don GilbertoRecordando A Don Gilberto
Recordando A Don Gilberto
 
familia norteamericana en Jesús Reparador
familia norteamericana en Jesús Reparador  familia norteamericana en Jesús Reparador
familia norteamericana en Jesús Reparador
 
Reunió inici de curs 6è 2012.2013
Reunió inici de curs 6è 2012.2013Reunió inici de curs 6è 2012.2013
Reunió inici de curs 6è 2012.2013
 

Semelhante a GxUnit - GeneXus Unit Testing

Ces cacic07-automatizacion y-gestion_pruebas_funcionales
Ces cacic07-automatizacion y-gestion_pruebas_funcionalesCes cacic07-automatizacion y-gestion_pruebas_funcionales
Ces cacic07-automatizacion y-gestion_pruebas_funcionalesginacris
 
GXFIT-Especificación de marco de pruebas
GXFIT-Especificación de marco de pruebasGXFIT-Especificación de marco de pruebas
GXFIT-Especificación de marco de pruebasAlejandro Araújo
 
Aplicaciones genexus
Aplicaciones genexusAplicaciones genexus
Aplicaciones genexushmosquera
 
Our Experience with the GxUnit Project (Almeida, LarreBorges, Araújo)
Our Experience with the GxUnit Project (Almeida, LarreBorges, Araújo)Our Experience with the GxUnit Project (Almeida, LarreBorges, Araújo)
Our Experience with the GxUnit Project (Almeida, LarreBorges, Araújo)Alejandro Araújo
 
Aplicaciones desarrolladas con PROLOG
Aplicaciones desarrolladas con PROLOGAplicaciones desarrolladas con PROLOG
Aplicaciones desarrolladas con PROLOGGabyNarvaez
 
Interfaz de uusario cintya alban
Interfaz de uusario cintya albanInterfaz de uusario cintya alban
Interfaz de uusario cintya albanDavid Casanova
 
Taller patrones de diseño
Taller patrones de  diseñoTaller patrones de  diseño
Taller patrones de diseñotovar1982
 
Trade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías WebTrade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías WebMiguel Angel Macias
 
Nuestra Experiencia Con El Proyecto Gxunit Vf
Nuestra Experiencia Con El Proyecto Gxunit VfNuestra Experiencia Con El Proyecto Gxunit Vf
Nuestra Experiencia Con El Proyecto Gxunit VfEnrique Almeida
 
Trabajo ricardo rivadeneira, nexar mendoza .
Trabajo  ricardo rivadeneira, nexar mendoza .Trabajo  ricardo rivadeneira, nexar mendoza .
Trabajo ricardo rivadeneira, nexar mendoza .jefry
 
C:\documents and settings\uleam\mis documentos\trabajo ricardo rivadeneira, ...
C:\documents and settings\uleam\mis documentos\trabajo  ricardo rivadeneira, ...C:\documents and settings\uleam\mis documentos\trabajo  ricardo rivadeneira, ...
C:\documents and settings\uleam\mis documentos\trabajo ricardo rivadeneira, ...jefry
 
Trabajo ricardo rivadeneira, nexar mendoza .
Trabajo  ricardo rivadeneira, nexar mendoza .Trabajo  ricardo rivadeneira, nexar mendoza .
Trabajo ricardo rivadeneira, nexar mendoza .jefry
 
Definición de planificación de proyectos de software presentación
Definición de planificación de proyectos de software presentaciónDefinición de planificación de proyectos de software presentación
Definición de planificación de proyectos de software presentaciónOvidio Fernando Hernández Albarran
 
Analisis de requerimientos
Analisis de requerimientosAnalisis de requerimientos
Analisis de requerimientosssalzar
 
TRABAJO INFORMÁTICA FINAL
TRABAJO INFORMÁTICA FINALTRABAJO INFORMÁTICA FINAL
TRABAJO INFORMÁTICA FINALAlee Jezias
 

Semelhante a GxUnit - GeneXus Unit Testing (20)

Ces cacic07-automatizacion y-gestion_pruebas_funcionales
Ces cacic07-automatizacion y-gestion_pruebas_funcionalesCes cacic07-automatizacion y-gestion_pruebas_funcionales
Ces cacic07-automatizacion y-gestion_pruebas_funcionales
 
GXFIT-Especificación de marco de pruebas
GXFIT-Especificación de marco de pruebasGXFIT-Especificación de marco de pruebas
GXFIT-Especificación de marco de pruebas
 
Aplicaciones genexus
Aplicaciones genexusAplicaciones genexus
Aplicaciones genexus
 
Our Experience with the GxUnit Project (Almeida, LarreBorges, Araújo)
Our Experience with the GxUnit Project (Almeida, LarreBorges, Araújo)Our Experience with the GxUnit Project (Almeida, LarreBorges, Araújo)
Our Experience with the GxUnit Project (Almeida, LarreBorges, Araújo)
 
Aplicaciones desarrolladas con PROLOG
Aplicaciones desarrolladas con PROLOGAplicaciones desarrolladas con PROLOG
Aplicaciones desarrolladas con PROLOG
 
Interfaz de uusario cintya alban
Interfaz de uusario cintya albanInterfaz de uusario cintya alban
Interfaz de uusario cintya alban
 
Taller patrones de diseño
Taller patrones de  diseñoTaller patrones de  diseño
Taller patrones de diseño
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Presentación: xUnit y Junit
Presentación: xUnit y JunitPresentación: xUnit y Junit
Presentación: xUnit y Junit
 
Trade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías WebTrade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías Web
 
Nuestra Experiencia Con El Proyecto Gxunit Vf
Nuestra Experiencia Con El Proyecto Gxunit VfNuestra Experiencia Con El Proyecto Gxunit Vf
Nuestra Experiencia Con El Proyecto Gxunit Vf
 
Trabajo ricardo rivadeneira, nexar mendoza .
Trabajo  ricardo rivadeneira, nexar mendoza .Trabajo  ricardo rivadeneira, nexar mendoza .
Trabajo ricardo rivadeneira, nexar mendoza .
 
C:\documents and settings\uleam\mis documentos\trabajo ricardo rivadeneira, ...
C:\documents and settings\uleam\mis documentos\trabajo  ricardo rivadeneira, ...C:\documents and settings\uleam\mis documentos\trabajo  ricardo rivadeneira, ...
C:\documents and settings\uleam\mis documentos\trabajo ricardo rivadeneira, ...
 
Trabajo ricardo rivadeneira, nexar mendoza .
Trabajo  ricardo rivadeneira, nexar mendoza .Trabajo  ricardo rivadeneira, nexar mendoza .
Trabajo ricardo rivadeneira, nexar mendoza .
 
Definición de planificación de proyectos de software presentación
Definición de planificación de proyectos de software presentaciónDefinición de planificación de proyectos de software presentación
Definición de planificación de proyectos de software presentación
 
Elizabeth guevararoa ciim2010
Elizabeth guevararoa ciim2010Elizabeth guevararoa ciim2010
Elizabeth guevararoa ciim2010
 
Metodo watch
Metodo watchMetodo watch
Metodo watch
 
Analisis de requerimientos
Analisis de requerimientosAnalisis de requerimientos
Analisis de requerimientos
 
Herramientas case
Herramientas caseHerramientas case
Herramientas case
 
TRABAJO INFORMÁTICA FINAL
TRABAJO INFORMÁTICA FINALTRABAJO INFORMÁTICA FINAL
TRABAJO INFORMÁTICA FINAL
 

Mais de Alejandro Araújo

Encuentrogx2006collaborativeprojects 090910122800-phpapp01
Encuentrogx2006collaborativeprojects 090910122800-phpapp01Encuentrogx2006collaborativeprojects 090910122800-phpapp01
Encuentrogx2006collaborativeprojects 090910122800-phpapp01Alejandro Araújo
 
GxUnit-En sus comienzos...(Almeida, LarreBorges, Araújo)
GxUnit-En sus comienzos...(Almeida, LarreBorges, Araújo)GxUnit-En sus comienzos...(Almeida, LarreBorges, Araújo)
GxUnit-En sus comienzos...(Almeida, LarreBorges, Araújo)Alejandro Araújo
 
Test Driven Development. Fortalezas y Debilidades
Test Driven Development. Fortalezas y DebilidadesTest Driven Development. Fortalezas y Debilidades
Test Driven Development. Fortalezas y DebilidadesAlejandro Araújo
 
Investigación sobre Dublin Core Data Model (Camargo-Araújo)
Investigación sobre Dublin Core Data Model (Camargo-Araújo)Investigación sobre Dublin Core Data Model (Camargo-Araújo)
Investigación sobre Dublin Core Data Model (Camargo-Araújo)Alejandro Araújo
 
Propuesta mejora proceso desarrollo Software (2002) (Diaz Arnesto, Araújo) ...
Propuesta mejora proceso desarrollo Software (2002) (Diaz Arnesto, Araújo)   ...Propuesta mejora proceso desarrollo Software (2002) (Diaz Arnesto, Araújo)   ...
Propuesta mejora proceso desarrollo Software (2002) (Diaz Arnesto, Araújo) ...Alejandro Araújo
 
Metologías Ágiles ¿Testing Ágil? (LarreBorges, Schreiber, Araújo)
Metologías Ágiles ¿Testing Ágil?  (LarreBorges, Schreiber, Araújo)Metologías Ágiles ¿Testing Ágil?  (LarreBorges, Schreiber, Araújo)
Metologías Ágiles ¿Testing Ágil? (LarreBorges, Schreiber, Araújo)Alejandro Araújo
 
Construyendo una herramienta para pruebas unitarias en GeneXus
Construyendo una herramienta para pruebas unitarias en GeneXusConstruyendo una herramienta para pruebas unitarias en GeneXus
Construyendo una herramienta para pruebas unitarias en GeneXusAlejandro Araújo
 
Especificación GxFIT - Defensa Tesis Maestría
Especificación GxFIT - Defensa Tesis MaestríaEspecificación GxFIT - Defensa Tesis Maestría
Especificación GxFIT - Defensa Tesis MaestríaAlejandro Araújo
 
Proyecto GxUnit - Congreso Cacic2008 (Almeida, LarreBorges, Araújo)
Proyecto GxUnit - Congreso Cacic2008 (Almeida, LarreBorges, Araújo)Proyecto GxUnit - Congreso Cacic2008 (Almeida, LarreBorges, Araújo)
Proyecto GxUnit - Congreso Cacic2008 (Almeida, LarreBorges, Araújo)Alejandro Araújo
 

Mais de Alejandro Araújo (10)

Encuentrogx2006collaborativeprojects 090910122800-phpapp01
Encuentrogx2006collaborativeprojects 090910122800-phpapp01Encuentrogx2006collaborativeprojects 090910122800-phpapp01
Encuentrogx2006collaborativeprojects 090910122800-phpapp01
 
GxUnit-En sus comienzos...(Almeida, LarreBorges, Araújo)
GxUnit-En sus comienzos...(Almeida, LarreBorges, Araújo)GxUnit-En sus comienzos...(Almeida, LarreBorges, Araújo)
GxUnit-En sus comienzos...(Almeida, LarreBorges, Araújo)
 
Test Driven Development. Fortalezas y Debilidades
Test Driven Development. Fortalezas y DebilidadesTest Driven Development. Fortalezas y Debilidades
Test Driven Development. Fortalezas y Debilidades
 
Investigación sobre Dublin Core Data Model (Camargo-Araújo)
Investigación sobre Dublin Core Data Model (Camargo-Araújo)Investigación sobre Dublin Core Data Model (Camargo-Araújo)
Investigación sobre Dublin Core Data Model (Camargo-Araújo)
 
Propuesta mejora proceso desarrollo Software (2002) (Diaz Arnesto, Araújo) ...
Propuesta mejora proceso desarrollo Software (2002) (Diaz Arnesto, Araújo)   ...Propuesta mejora proceso desarrollo Software (2002) (Diaz Arnesto, Araújo)   ...
Propuesta mejora proceso desarrollo Software (2002) (Diaz Arnesto, Araújo) ...
 
Metologías Ágiles ¿Testing Ágil? (LarreBorges, Schreiber, Araújo)
Metologías Ágiles ¿Testing Ágil?  (LarreBorges, Schreiber, Araújo)Metologías Ágiles ¿Testing Ágil?  (LarreBorges, Schreiber, Araújo)
Metologías Ágiles ¿Testing Ágil? (LarreBorges, Schreiber, Araújo)
 
Construyendo una herramienta para pruebas unitarias en GeneXus
Construyendo una herramienta para pruebas unitarias en GeneXusConstruyendo una herramienta para pruebas unitarias en GeneXus
Construyendo una herramienta para pruebas unitarias en GeneXus
 
Especificación GxFIT - Defensa Tesis Maestría
Especificación GxFIT - Defensa Tesis MaestríaEspecificación GxFIT - Defensa Tesis Maestría
Especificación GxFIT - Defensa Tesis Maestría
 
Presentación Fitnesse
Presentación Fitnesse Presentación Fitnesse
Presentación Fitnesse
 
Proyecto GxUnit - Congreso Cacic2008 (Almeida, LarreBorges, Araújo)
Proyecto GxUnit - Congreso Cacic2008 (Almeida, LarreBorges, Araújo)Proyecto GxUnit - Congreso Cacic2008 (Almeida, LarreBorges, Araújo)
Proyecto GxUnit - Congreso Cacic2008 (Almeida, LarreBorges, Araújo)
 

Último

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Último (13)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

GxUnit - GeneXus Unit Testing

  • 1. Proyecto GxUnit Construcción de una herramienta para automatización de pruebas unitarias en GeneXus Enrique Almeida Alejandro Araújo Uruguay Larre Borges Concepto FYMNSA GeneXus Consulting Montevideo,Uruguay,11800 Montevideo,Uruguay,11200 Montevideo,Uruguay,11200 ealmeida@concepto.com alar758@gmail.com ularre@genexusconsulting.com Abstract The goal of GxUnit project is the construction of an automatization tool for unit tests associated to GeneXus. Such project is exposed in this paper, also the products obtained from independent and paralel development processes that correspond to the initial versions of the tool, made by two student groups attendees of the “Software Engineering Project 2007” dictated by Facultad de Ingeniería de la Universidad de la República del Uruguay, where the authors played de Customer role. Both versions are distinguished by the denominations of GxUnit1 and GxUnit2. Keywords: FIT, GeneXus, Software Engineering, Unit Testing, xUnit. Resumen El objetivo del proyecto GxUnit es la construcción de una herramienta para la automatización de pruebas unitarias asociada a GeneXus. En este informe se expone acerca de dicho proyecto y de los productos resultantes de dos procesos de desarrollo independientes y paralelos que dieron lugar a las versiones iniciales de la herramienta, llevados adelante por dos grupos de estudiantes del curso “Proyecto de Ingeniería de Software 2007”, de la Facultad de Ingeniería de la Universidad de la República del Uruguay, para los cuales los autores de este informe actuamos en el rol de Clientes. Dichas versiones se distinguen con las denominaciones GxUnit1 y GxUnit2. Palabras claves: FIT, GeneXus, Ingeniería de Software, Prueba Unitaria, xUnit.
  • 2. 1. GENEXUS El marco para la automatización de pruebas unitarias propuesto se asocia a GeneXus1 [7], herramienta de especificación de sistemas de información basada en la aplicación de un modelo matemático que permite capturar e integrar las visiones de los usuarios en bases de conocimiento (KB2) a partir de las cuales genera, mediante ingeniería inversa y procesos de inferencia, bases de datos normalizadas y aplicaciones completas; para diferentes plataformas de destino a partir de una misma especificación básica, pudiendo mantenerlas en forma automatizada ante cambios en los requerimientos [5] [9] [21] [23]. GeneXus modela la realidad mediante un conjunto de instancias de “objetos tipos”3 almacenados en las KBs. Produce el código necesario para implementar las aplicaciones en diferentes lenguajes y plataformas de destino mediante la utilización de programas generadores. Se apoya en una metodología incremental e iterativa y trabaja sobre especificaciones, lo cual permite independencia tecnológica. Su última versión (versión X) posee una arquitectura extensible, por lo cual pueden agregarse al producto paquetes de software, conocidos como extensiones, capaces de interactuar con la base de conocimiento, pudiendo ser desarrolladas por terceros [8]. 2. EL PROYECTO GXUNIT 2.1 Fundamentación Una parte considerable del total de software producido en Uruguay se elabora con esta herramienta creada y mantenida por una empresa uruguaya, Artech. En el área de pruebas dicha herramienta no brinda actualmente una funcionalidad específica que se aproxime en versatilidad y potencia al resto de sus características, por lo cual se entendió oportuno incorporarle mecanismos para la automatización de las pruebas unitarias, de valor para el Analista GeneXus4. 2.2 Antecedentes La propuesta GxUnit tuvo su origen en el año 2003 [1] cuándo se anuncia el objetivo de crear una herramienta de automatización de pruebas unitarias en GeneXus. En el año 2004 se formalizó la propuesta [2] caracterizándose la misma en la línea de las herramientas xUnit5. Los objetivos básicos planteados fueron los siguientes: crear un marco de pruebas asociado a GeneXus, poder escribir las pruebas en GeneXus, ejecutar las pruebas y registrar los resultados. Considerando para el desarrollo un enfoque iterativo e incremental se postuló ir cumpliendo con el objetivo de generar objetos GeneXus para pruebas de instancias de los siguientes objetos GeneXus: Objetos sin UI6: Procedures, Business Transactions; objetos con UI: WebPanels (pantallas de consulta web), Transacciones (Transactions), WorkPanels (pantallas de consulta win). En el año 2006 se retoma bajo la forma de “Proyecto Colaborativo GeneXus” [3] [4] para finalmente en julio de 2007 proponer el proyecto para su desarrollo en el ámbito del curso “Proyecto de Ingeniería de Software 2007” de la Facultad de Ingeniería de la Universidad de la 1 Producida en Uruguay por la empresa Artech, su primera versión fue liberada al mercado para su comercialización en 1989. Sus creadores, Breogán Gonda y Nicolás Jodal, han sido galardonados con el Premio Nacional de Ingeniería en 1995 otorgado por el “Proyecto GeneXus” [10] 2 Knowledge Base 3 No se refiere a objetos en el sentido de OOLP (lenguajes de programación orientada a objetos). Se refiere a objetos GeneXus tales como Transactions, WebPanels, WorkPanels, Procedures, etc. 4 De ahora en adelante su utilizará el término “Analista” como sinónimo de “Analista GeneXus” 5 Familia de Frameworks para pruebas unitarias (JUnit [14] y otros) 6 Interfase de usuario
  • 3. República del Uruguay. Entre agosto y noviembre de dicho año dos grupos de estudiantes desarrollaron en forma independiente y en paralelo, dos versiones iniciales de la herramienta GxUnit en el contexto del mencionado curso [15]. Se actuó en el rol de Cliente, realizándose el seguimiento de la construcción y validación de los prototipos. Los productos de software resultantes de dichos desarrollos han sido liberados al dominio público y pueden ser descargados desde Internet [11] [12]. 3 LA HERRAMIENTA PARA PRUEBAS UNITARIAS GXUNIT 3.1 Características generales La herramienta debe permitir definir y especificar instancias de objetos para prueba unitaria (“fixtures”) de otras instancias de “objetos tipos” GeneXus del SUT7. Los objetos para prueba recogen la especificación de la prueba a implementar y a partir de los mismos se genera el código necesario para ejecutarla en diferentes plataformas. En la figura 1 se ejemplifica al respecto de lo anteriormente expuesto, observándose la relación entre los objetos de prueba y los objetos del SUT y los correspondientes programas generados en los diferentes lenguajes para las distintas plataformas de destino. La especificación para las pruebas es recogida desde parámetros contenidos en tablas. El resultado de las pruebas se almacena. Figura 1: Objetos para prueba unitaria. Las instancias de objetos para prueba se asocian a las instancias de objetos8 correspondientes a probar y son sensibles a los impactos de los cambios en los mismos, automatizándose su reconstrucción. 3.2 Especificación La especificación de GxUnit ha recibido aportes de diversas fuentes. En particular se recogió la propuesta de implementar un formato de especificación de las pruebas apoyado en ideas contenidas en el “Framework for Integrated Test” (FIT) [6] [20]. La elección de un formato tabular para la implementación de las pruebas permite la especificación sustentable de requerimientos, por la vía de ejemplos, de forma que complementa la comunicación y fomenta la colaboración entre 7 System Under Test (sistema sometido a pruebas) 8 De ahora en adelante se utilizará el termino “objetos” para referirse tanto a los “objetos tipos GeneXus” como a sus instancias particulares dentro del modelo de una aplicación en una KB
  • 4. desarrolladores, verificadores y usuarios. El valor de este tipo de representaciones ha sido reconocido y utilizado desde hace largo tiempo [13]. Simultáneamente, se aprovechan las características de GeneXus para facilitar y resolver el costoso mantenimiento de los casos de prueba que se presentan cuándo se utilizan herramientas del tipo de FIT y la intensa reelaboración ante los cambios en los casos de prueba y el SUT, la sobrecarga en los equipos de desarrollo y otros problemas de escalabilidad [16] [19] [17] [18] [22] [24]. Para el proyecto inicial se suministraron a ambos grupos la siguiente visión, misión y los siguientes requerimientos, expuestos para este informe bajo la forma de relatos (stories). El alcance se negoció y acotó con cada uno de los grupos en forma independiente. Visión: El propósito es brindar al Analista un mecanismo para automatizar la creación, mantenimiento y ejecución de pruebas unitarias. Misión: Construir una herramienta que permita automatizar las pruebas unitarias de objetos GeneXus a ser utilizada por Analistas. 3.2.1 Consideraciones técnicas La herramienta se deberá construir como una extensión para GeneXus. Deberá tener un diseño modular. Es preciso tener muy en cuenta que esta es una etapa inicial de la herramienta, que irá desarrollándose en incrementos. A futuro se espera poder incorporarle componentes que permitan generar pruebas para otros objetos GeneXus que no serán contemplados en esta primera edición y nuevos editores para los casos de prueba. El reuso, la independencia entre capas y un bajo acoplamiento son requisitos importantes. Se deberá programar en C# y se utilizará el SDK9 brindado por Artech para la programación de extensiones. 3.2.2 Relatos • El Analista definirá “casos de prueba” desde el IDE10 de GeneXus, desde donde también podrá comandar su ejecución y ver los resultados. Se deberá suministrarle un editor para efectuar el ingreso de estos casos de prueba. • El Analista podrá ejecutar un conjunto de pruebas en modo desatendido, por ejemplo luego de una construcción (build), adicionalmente a las ejecuciones que realiza desde la interfase. • Los casos de prueba se almacenarán en la KB del SUT. • El resultado de la ejecución de las pruebas no se almacenará en la KB. • Se desea que la herramienta tenga una interfase similar a los productos xUnit para la ejecución y visualización de primer nivel de los resultados. Se desea también que esté acorde a la interfase del IDE de GeneXus, para que no resulte extraña al Analista. • Se definen como objetos verificables aquellos pertenecientes al dominio de objetos para los cuales GxUnit puede generar y ejecutar pruebas unitarias. En esta primera instancia estos serán solamente objetos de tipo procedure. • La herramienta generará en forma automatizada objetos verificadores de tipo procedure (tests) a partir de los objetos verificables y de los casos de prueba. Serán los encargados de guiar la prueba invocando a los objetos a verificar. • El Analista necesita poder conocer rápidamente cuales son los objetos verificables y cuales de estos tienen casos de prueba ya definidos. 9 Software Development Kit 10 Integrated Development Environment
  • 5. Se deberá implementar un oráculo que permitirá saber si cada prueba fue exitosa o fallida. El Analista podrá indicar que se realice una comprobación parcial, lo cual implica que habrá resultados de la prueba en este caso que no influirán en la decisión acerca de si la misma pasa o falla. • Las pruebas fallidas se marcarán en Rojo, las que pasaron en Verde, aquellas no ejecutadas en Gris. De capturarse excepciones estas se desplegarán pintadas de Amarillo. • Existirán procedures (procedimientos) “verificadores del usuario” (PVU), que escribirá el Analista, y que podrán ser asociados a las pruebas para ser invocados previo a su finalización. Estos procedimientos implementarán oráculos y poseerán un único parámetro de tipo “booleano” para indicar si la prueba fue exitosa o fallida. • El Analista definirá una prueba indicando: el objeto verificable, uno o varios PVUs y un conjunto de datos (“tuplas o casos de prueba”) de entrada y resultados esperados que deberán corresponderse respectivamente con cada uno de los parámetros de entrada y de salida del objeto verificable. • El editor del caso de prueba deberá presentar una grilla “inferida” a partir de los parámetros de entrada y salida del objeto verificable para que el Analista ingrese o modifique los casos de prueba (datos de entrada y resultados esperados). • Para un mismo objeto verificable se pueden definir varios “casos de prueba”. El Analista podrá indicar cuales de estos casos desea incluir en la próxima prueba y cuales desea ignorar. • Durante la ejecución de una prueba se iterará la invocación del objeto a verificar, una vez por cada “caso de prueba” participante en la prueba, pasándole como parámetros de entrada los datos de entrada indicados en un “caso de prueba”. Al finalizar la prueba se invoca a los PVUs (de existir). • Dada una prueba, el Analista deberá poder visualizar, para cada “caso de prueba” los datos de entrada, los resultados esperados y datos de salida obtenidos. También necesitará acceder al resultado de ejecuciones anteriores. • Una prueba se considera fallida si produce resultados no coincidentes con los esperados y/o si el PVU indica falla. La comparación de los resultados esperados con los obtenidos, para el alcance de este desarrollo, se limitará a la igualdad. • Debe ser posible, para un Analista, ofrecer la posibilidad de cargar los datos de entrada y resultados esperados, desde un archivo externo. • Los tipos de datos a considerar son los básicos de GeneXus, incluyendo tipos de datos estructurados (SDTs11). • El resultado de la ejecución de las pruebas se podrá almacenar con diferentes niveles de detalle. • Los cambios que se produzcan a nivel de los parámetros de un objeto verificable deberán impactarse contra su(s) caso(s) de prueba, detectándose automáticamente las diferencias para permitir tanto su reconstrucción automatizada como la de los tests. • La eliminación de PVUs implicará advertir al Analista acerca de los casos de prueba que los utilicen y reconstruir en forma automatizada los casos de prueba y los tests. • Debe existir un mecanismo para eliminar fácilmente un objeto verificable con casos de prueba asociados. Dicha eliminación también eliminará sus casos de prueba y sus tests. • Al Analista le interesará verificar el estado de la base de datos (BD) luego de la ejecución de una prueba, por lo cual se desea proveer un mecanismo en tal sentido que le permita conocer la variación ∆ BD = BDinicial - BDfinal y verificar que el estado final sea el esperado. 11 Structured Data Types
  • 6. 3.3 Implementaciones. Se obtuvieron como resultantes principales del proyecto dos productos de software, que se denominaron GxUnit1 y GxUnit2. El diseño de la solución y la documentación de la misma estuvieron a cargo de cada uno de los grupos de estudiantes. 3.3.1 Principales características A partir del mismo conjunto de requerimientos cada grupo desarrolló una herramienta con diferencias importantes en cuanto al diseño de la solución. Las semejanzas están dadas por haber satisfecho un núcleo común de requerimientos y también por algunas soluciones de diseño común, como ser el almacenamiento de los resultados de las pruebas en formato XML12 y la utilización de Web Services (WS) para comandar su ejecución desde la extensión. Las diferencias surgen en el diseño de las interfases, su vinculación con los objetos GeneXus, la generación de procedimientos GeneXus para prueba y el almacenamiento de los resultados. También surgen diferencias debidas al alcance acordado con cada grupo de estudiantes. Se enumeran a continuación las principales características de cada implementación. 3.3.2 GxUnit1 • Genera un objeto verificador por cada objeto verificable Estos procedimientos verificadores pueblan la KB y se corresponden uno a uno con la prueba y el objeto a verificar. No presentan restricciones en la cantidad de parámetros a utilizar. • El objeto verificador se implementa como un WS que es consumido desde la extensión • Crea una “parte”13 nueva para todo procedimiento En dicha parte se muestra el editor del caso de prueba, en el cual pueden incluirse las “tuplas o casos de prueba” de valores de entrada y de salida. • Almacena los datos para prueba y los resultados en archivos XML. • Ofrece una primera aproximación a la verificación de la BD. • Admite procedimientos con parámetros de tipo datos estructurados (SDT). • Permite reconstruir un caso de prueba ante cambios en la regla parm del procedimiento a verificar minimizando la pérdida de datos. 3.3.3 GxUnit2 • Genera un único objeto verificador, capaz de ejecutar todas las pruebas. Dicho objeto utiliza invocaciones dinámicas de GeneXus para ejecutar los procedimientos a probar. Necesitaría para lograr su implementación completa poder pasar parámetros definidos en forma dinámica. Dado que esto último no es posible hacerlo aún en GeneXus, pero existe la posibilidad que se implemente a futuro, se resolvió construir un prototipo que genere pruebas solo para procedimientos con dos parámetros de entrada y uno de salida. • El objeto verificador se implementa como un WS que es consumido desde la extensión. • Crea un objeto nuevo en la KB denominado “TestSet”: Dicho objeto permite definir los casos de prueba para un objeto a verificar. Tiene un editor que permite ingresar las “tuplas o casos de 12 eXtensible Markup Language 13 Los objetos GeneXus se componen de partes, donde se especifican diferentes aspectos de los mismos. Cada parte tiene su editor. Son ejemplos de partes de objetos las siguientes: código fuente, código de las reglas, código de eventos, formularios, diseño de salida impresa
  • 7. prueba” con datos de entrada y salidas esperadas, así como los procedimientos verificables y comentarios. • Almacena los datos para pruebas en la base de datos en que reposa la KB, mientras que los resultados son almacenados en archivos XML. • Permite reconstruir un caso de prueba ante cambios en la regla parm del procedimiento a verificar minimizando la pérdida de datos. • Genera una bitácora (“log”) con diferentes niveles de detalle. 3.4 Implementaciones en acción Se resumirá a continuación información recogida de los manuales de usuario escritos por los grupos de estudiantes, a efectos de ejemplificar acerca de la utilización y el alcance de lo producido. 3.4.1 GxUnit1 Se desea crear un objeto para verificar un procedure (procedimiento) GeneXus. En las figuras 2 y 3 se muestran sus parámetros (regla parm) y su código, respectivamente. Figura 2: Regla “parm” de procedimiento a probar. Figura 3: Código fuente a verificar. Los datos de prueba se ingresan a la pestaña “Tests” (parte agregada al objeto). El editor implementado muestra la grilla, donde las columnas se corresponden a los parámetros del procedimiento a probar y las filas a los casos de prueba. Es posible seleccionar qué casos de prueba se van a correr en la próxima ejecución. También es posible cargar la grilla a partir de un archivo XML (marcando la opción “Import from…”). Ver figura 4. Pestaña para definir las pruebas Figura 4: Editor de pruebas.
  • 8. Al guardar el procedimiento a probar se genera el procedimiento verificador y el archivo XML con los datos de los casos de prueba. Ver figura 5. Procedimiento Verificador Figura 5: Creación del procedimiento verificador. Se ejecutan con la opción "Run Tests" del menú "Tests". Ver figuras 6 y 7. Figura 6: Menú para ejecutar pruebas. Figura 7: Selección de pruebas a ejecutar. El resultado de la ejecución aparecerá en un archivo XML, visible desde el IDE. Figura 8: Vista expandida de los resultados.
  • 9. 3.4.2 GxUnit2 Se desea verificar un procedure GeneXus. Para esto se debe crear un objeto del tipo “TestSet”, tal como se muestra en la figura 9. Nuevo Tipo de Objeto GX para pruebas. Figura 9: Creación de objeto TestSet. Luego de creado se presenta una pantalla para definir la prueba. Se solicitará el nombre del procedimiento verificable a probar, los casos de prueba y los PVUs. En el ejemplo se creará una instancia de un objeto TestSet llamado TestSetSumador cuyo objetivo es probar un procedimiento verificable existente en la KB llamado “Sumador”. El editor de dicho objeto se muestra en la figura 10. El procedimiento Sumador recibe como entradas dos parámetros y ofrece como salida otro parámetro (de igual tipo y dimensión) con la suma de los valores de los parámetros de entrada. Un campo de ingreso tipo “combo de selección” permite ubicarlo y seleccionarlo. El editor despliega los parámetros del procedimiento en una grilla. El Analista puede especificar cuales parámetros interesan para la prueba. Luego se le presentará una grilla donde se podrán ingresar todos los casos de prueba. Las columnas de la grilla corresponderán a cada uno de los parámetros involucrados y cada fila corresponderá a un nuevo caso de prueba. El procedimiento a probar se ejecutará una vez por cada fila de la grilla cuando se dispare la prueba. Finalmente, es posible indicar uno o más PVUs para verificaciones adicionales. Se proponen al Analista como candidatos a seleccionar desde un combo, los procedimientos que tienen igual número y tipo de parámetros que el procedimiento a verificar y uno adicional, como salida, de tipo “booleano”. Es posible indicar si se deben ejecutar o no los PVUs seleccionados. Figura 10: Editor de TestSet y sus grillas para ingreso de casos de prueba.
  • 10. Para ejecutar las pruebas se utiliza el menú “Tool Windows” del IDE de GeneXus, al que se le agregó la opción “Testeable Procedures”. Ver figuras 11 y 12. Figura 11: Menú para ejecución de pruebas. Figura 12: Pruebas a ejecutar. El resultado general de la ejecución se expone tal como muestra la figura 13. Figura 13: Reporte de ejecución (GxUnit2). Además de presentar el reporte de resultados, la extensión registra detalles de la ejecución en un archivo XML según el nivel de detalle indicado por el Analista. La pantalla del visor de dicha bitácora (“log”) se expone en la figura 14. Figura 14: Visor de la bitácora.
  • 11. Los objetos TestSet son capaces de responder frente a una modificación externa de los procedimientos a verificar o de los PVUs. Tras modificar los parámetros de un procedimiento a verificar, al abrir el TestSet que lo verifica presenta una ventana similar a la mostrada en la figura 15. Observando la figura se aprecia que en el cuadrante superior izquierdo de la pantalla se presentan los parámetros que tenía el procedimiento a verificar previo el cambio y debajo los nuevos parámetros. En el cuadrante superior derecho se muestran los antiguos casos de prueba, que perdieron validez tras el cambio. Debajo se pueden agregar casos de prueba de forma que contemplen los cambios. Los antiguos valores pueden ser reutilizados, ya sea escribiéndolos manualmente o arrastrándolos desde una grilla a otra. Figura 15: Impacto en el TestSet por cambios en la regla parm. 4. CONCLUSIONES Y TRABAJO FUTURO Se han logrado desarrollar los primeros prototipos de una herramienta de pruebas unitarias para ambientes de desarrollo en GeneXus, de forma colaborativa y open-source. La forma de continuar puede tomar varios caminos, siguiendo las diferentes vertientes referidas a la especificación, desarrollo y aplicación. En cuanto a la especificación, se deberá ampliar el alcance con el objetivo de abarcar los objetos GeneXus aún no contemplados, especialmente aquellos con interfase web y win. En relación al desarrollo, el primer camino está dado por el desarrollo de los prototipos de GxUnit por parte de futuros equipos externos a Artech hasta transformarlos en herramientas que otorguen valor para los Analistas. El segundo camino está determinado por el desarrollo de funcionalidad para pruebas unitarias que la propia empresa Artech estime pertinente realizar en GeneXus. En cuanto a su aplicación se entiende necesario realizar varios estudios de campo, una vez que la herramienta alcance un nivel de madurez que los permita. 5. REFERENCIAS [1] Almeida E. “En el proceso de crear un framework de testing”,2003, http://ealmeida.blogspot.com/2003/10/estoy-en-el-proceso-de-crear-un.html, [2] Almeida E. “Software Testing: Tres enfoques para un mismo problema”, Encuentro Internacional de Usuarios GeneXus del año 2004. [3] Almeida E.,Araújo A.,Larre Borges U. “Proyecto colaborativo GxUnit”,2006, http://www.gxopen.com/commwiki/servlet/hwiki?GxUnit, [4] Almeida E. ,Araújo A.,Larre Borges U. “Collaborative Projects”, 2006 http://www.concepto.com.uy/archivosvinculados/EncuentroGX2006CollaborativeProjects.ppt [5] Artech Consultores S.R.L. “Visión general de GeneXus”,2005, http://www.GeneXus.com/portal/agxppdwn.aspx?2,32,660,O,S,0,22790%3bS%3b1%3b2315,
  • 12. [6] Cunningham W. “Framework for Integrated Tests”, 2007, http://fit.c2.com/, [7] GeneXus, http://www.GeneXus.com, 2008. [8] GeneXus Community Wiki, “GeneXus Rocha/GXextensions”, 2007, http://wiki.gxtechnical.com/commwiki/servlet/hwiki?category%3AGeneXus+Extensions [9] Gonda B.,Jodal N. “Filosofía y Fundamentos Teóricos de GeneXus”,2007, http://www.GeneXus.com/portal/hgxpp001.aspx?2,32,660,O,S,0,MNU;E;131;12;MNU. [10] Gonda B.,Jodal N. “Proyecto GeneXus”. Academia Nacional de Ingeniería, Uruguay, 1995 http://www.aiu.org.uy/gxpsites/agxppdwn?2,1,4,O,S,0,79%3BS%3B1%3B21. [11] GxUnit1, http://www.gxopen.com/gxopenrocha/servlet/hproject?721, 2008. [12] GxUnit2, http://www.gxopen.com/gxopenrocha/servlet/hproject?721, 2008. [13] Janicki R.,Parnas D., Zucker J., “Tabular Representations in Relational Documents”, Communications Research Laboratory, McMaster University, 1996. [14] JUnit, http://junit.org, 2008. [15] Proyecto de Ingeniería de Software 2007 “GxUnit”, Docente: Triñanes J. ,Facultad de Ingeniería, Universidad de la República, Uruguay, 2007. [16] Melnik G. “Empirical Analyses of Executable Acceptance Test Driven Development”, PHD Th., Supervisor: Maurer, F., DCS, University of Calgary, Calgary, Alberta, http://ebe.cpsc.ucalgary.ca/ebe/uploads/Publications/MelnikPhD.pdf, 2007. [17] Melnik G.,Maurer F. “Multiple Perspectives on Executable Acceptance Test-Driven Development”, DCS, University of Calgary, Canada, 2007, http://ebe.cpsc.ucalgary.ca/ebe/uploads/Publications/XP2007_Melnik_Maurer.pdf, [18] Melnik G.,Read K., Maurer, F. “Suitability of FIT User Acceptance Tests for Specifying Functional Requirements: Developer Perspective”, DCS, University of Calgary, Canada, 2004 http://ebe.cpsc.ucalgary.ca/ebe/uploads/Publications/MelnikReadMaurer2004b.pdf, [19] Miller J. “Is there a future for Fit testing?”, 2007 http://codebetter.com/blogs/jeremy.miller/archive/2007/07/30/is-there-a-future-for-fit- testing.aspx [20] Mugridge R., Cunningham W. ”Fit for Developing Software: Framework for Integrated Tests”, ISBN 0-321-26934-9, Prentice Hall PTR, 2005. [21] Latorres E.,Salvetto P., Larre Borges U., Nogueira, J., “Una herramienta de apoyo a la gestión del proceso de desarrollo de software”, IX Congreso Argentino de Ciencias de la Computación (CACIC 2003), La Plata, Argentina. [22] Read K. “Supporting Agile Teams of Teams via Test Driven Design”, Master Th, DCS, University of Calgary, Calgary, Canada, 2005 http://ebe.cpsc.ucalgary.ca/ebe/uploads/Publications/Read2005.pdf, 2005. [23] Salvetto P. “Modelos Automatizables de Estimación muy Temprana del Tiempo y Esfuerzo de Desarrollo de Sistemas de Información”, Tesis de Doctorado, Directores: Segovia, F., Nogueira J., Fac.Informática, Univ.Politécnica de Madrid, Doctorado conjunto en ingeniería informática UPM-ORT, 2006 http://oa.upm.es/367/01/PEDRO_SALVETTO_LEON.pdf, [24] Shores J. “James Shores Successfull Software” “Five Ways to Misuse FIT”, 2007 http://www.jamesshore.com/Blog/Five-Ways-to-Misuse-Fit.html, 2007. Agradecimientos A los integrantes del equipo que desarrolló GxUnit1: Adrián García, Anthony Figueroa, Antonio Malaquina, Cecilia Apa, Darío de León, Diego Gawenda, Diego San Esteban, Federico Parins, Fernando Colman, Ken Tenzer, Lucía Adinolfi, Marcelo Falcón, Rafael Sisto, Rodrigo Ordeix. A los integrantes del equipo que desarrolló GxUnit2: Fernando Varesi, Gervasio Marchand, Guillermo Pérez, Guillermo Polito, Horacio López, Ignacio Esmite, Marcelo Celio, Marcelo Vignolo, Martín Sellanes, Nicolás Alvarez de Ron, Rodrigo Aguerre, Rosana Robaina, Soledad Pérez, Stephanie De León. Al equipo de desarrollo de Artech y a los docentes del curso Proyecto de Ingeniería 2007.