La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Proyecto GxUnit Presentación del estado del arte Facultad de Ingeniería - UdelaR Juan Pablo Goyení Marcos Olivera Nicolás Carro.

Presentaciones similares


Presentación del tema: "Proyecto GxUnit Presentación del estado del arte Facultad de Ingeniería - UdelaR Juan Pablo Goyení Marcos Olivera Nicolás Carro."— Transcripción de la presentación:

1 Proyecto GxUnit Presentación del estado del arte Facultad de Ingeniería - UdelaR Juan Pablo Goyení Marcos Olivera Nicolás Carro

2 Agenda Introducción – GXUnit – Motivación – Objetivos Lenguajes de Cuarta Generación – Power Builder – GeneXus Pruebas Unitarias y Herramientas XUnit – JUnit – PBUnit – GXUnit (versión 2007)

3 Agenda Objetos GeneXus ¿Qué es una unidad? – Unidad en Java – Unidad en Power Builder – Unidad en GeneXus Características de GXUnit Como desarrollar GXUnit Ejemplo de extensión

4 GXUnit tuvo su origen en el año 2003 En el año 2004 se formalizó la propuesta en la linea de las herramientas xUnit. En el año 2007 se propuso el desarrollo del proyecto en el curso Proyecto de Ingeniería de Software. En el año 2010 se propuso el desarrollo del proyecto en el ámbito del curso Proyecto de Grado. Introducción GXUnit

5 Introducción Motivación Las fallas más notorias en la historia del desarrollo de software fueron todas debidas a defectos en las unidades, defectos que podrían haber sido encontrados con apropiadas pruebas unitarias.(Boris Beizer) La identificación temprana de errores reduce el esfuerzo de corrección y el costo de los proyectos. En GeneXus las pruebas unitarias requieren mucho tiempo y esfuerzo por parte del desarrollador.

6 Introducción Objetivos Desarrollar GXUnit contemplando los siguientes requerimientos: Creación y mantenimiento de pruebas unitarias. Ejecución de pruebas. Registro de resultados. Integración con el ambiente GeneXus. Simulación de Objetos GeneXus (Mocks). Simulación de consultas SQL a la Base de Datos.

7 ¿Qué es un Lenguaje 4GL? Diseñado con un propósito específico. Más cerca del Lenguaje Natural. El desarrollador indica qué se debe hacer, no cómo. Diseñado para reducir el esfuerzo de desarrollo. Lenguajes de Cuarta Generación

8 Lenguaje 4GL orientado a objetos. Desarrollo de aplicaciones de clase empresarial. Soporta arquitecturas cliente/servidor, distribuidas y web. Las aplicaciones son dirigidas por eventos. Brinda facilidades para el acceso a Bases de Datos, diseño de reportes e interfaz de usuario. Incluye un lenguaje Power Script usado para definir el comportamiento de la aplicación ante los eventos. Power Builder

9 Lenguaje de Cuarta Generación. Orientado a especificar Sistemas de Información. Metodología de desarrollo dirigido por Modelos. Captura e integra las visiones de los usuarios en bases de conocimiento. Representa la realidad mediante un conjunto de objetos predefinidos. Genera Bases de Datos Normalizadas. Genera aplicaciones para distintas plataformas. GeneXus

10 Pruebas unitarias Verifican el funcionamiento de unidades de software Pruebas aisladas Simulación de objetos llamados por el SUT Con acceso al código fuente Pueden involucrar a los desarrolladores

11 Herramientas xUnit Frameworks para automatización de pruebas unitarias Permiten crear y ejecutar las pruebas Se escriben y controlan los resultados en el mismo lenguaje del SUT Al ejecutar una prueba indican si el SUT pasó o falló

12 Herramientas xUnit Patrones utilizados Caso de prueba Método que realiza la verificación de cierta funcionalidad o funcionalidades Contexto de las pruebas Conjunto de precondiciones o estados necesarios para correr una prueba Suite de pruebas Conjunto de casos de prueba con el mismo contexto Ejecución de las pruebas

13 Herramientas xUnit Características más importantes Assertion Methods Implementan el Oráculo Incluidas en el código de la prueba Decisiones booleanas Ejecución de suites como operación única Exposición de los resultados No ambiguos Fáciles de entender Semántica de colores: verde = pasa, rojo = falla

14 JUnit Framework xUnit para Java Es el más utilizado Especificación del Contexto de las pruebas Permite especificar métodos para que corran antes de comenzar la ejecución de las pruebas y luego de finalizadas (setUp y tearDown) Métodos Assertion Provee de Métodos Assertions que validan los resultados de la ejecución de la prueba

15 JUnit Visualización de resultados Muestra resultados como texto o modo gráfico IDEs de desarrollo incluyen plug-ins que permiten ejecutar las pruebas y ver los resultados

16 JUnit Suite de pruebas Ejecución de un conjunto de pruebas como una única operación

17 PBUnit Framework xUnit para Power Builder Basado en JUnit Especificación del Contexto de las pruebas Permite especificar métodos para que corran antes de comenzar la ejecución de las pruebas y luego de finalizadas (setUp y tearDown) Métodos Assertion Provee de Métodos Assertions que validan los resultados de la ejecución de la prueba

18 PBUnit Suite de pruebas Pueden agruparse varios casos de prueba y correrlos como una única operación

19 PBUnit Ejecución y visualización de los resultados

20 GXUnit (Versión 2007) Se verifican objetos Procedure Se construyen conjuntos de pruebas donde se indican las entradas del procedimiento sus salidas esperadas, según los parámetros definidos en las rules Los conjuntos de prueba pueden construirse manualmente o cargarlos desde un XML Al correr las pruebas se deben seleccionar que pruebas quieren ejecutarse El resultado de las pruebas se guarda en un XML y puede verse desde el IDE de desarrollo

21 GXUnit (Versión 2007)

22 Objetos GeneXus

23 Que objetos vamos a probar? Vamos a evaluar la relevancia de los distintos tipos de objetos Los siguientes datos fueron obtenidos a través del analisis de 19 KBs De esas KBs, se sabe que 4 estaban en producción Los datos de las 15 KBs restantes fueron obtenidas a través del GXServer público.

24 Objetos GeneXus Aca va la grafica

25 Objetos GeneXus Observaciones: El objeto con mas ocurrencias es el Web Panel El que lo sigue es el Procedure Luego vienen los objetos Transaction, Data Provider y Data Selectors

26 Objetos GeneXus Discusión: Que tipo de objeto es el más importante? En ocurrencias el Web Panel Basados en nuestra experiencia y por la diversidad de funcionalidades que puede implementar, decidimos que el objeto Procedure es más relevante Modifican la base de datos UTLs File System etc

27 Objetos GeneXus Business Process Diagram No los contamos Su número es mínimo dentro de las KBs analizadas 1 o 4 ocurrencias en tres de las KBs Es de interés probarlos unitariamente? Podría ser interesante Probar caminos críticos Entrada y salida de los Datos Relevantes Podrían utilizarse pruebas previamente definidas

28 Objetos GeneXus Más observaciones: Los objetos Procedure son los que más aparecen en las KBs de producción También son reutilizables y se puede encapsular la lógica para ser probados Para la implementación: No hay conocimiento experto sobre lo que se va a desarrollar Parece mejor enfocarse en el objeto Procedure, para después extender la herramienta

29 Unidad en Java Java es un lenguaje orientado a objetos, cada objeto tiene sus propiedades y métodos. La unidad de trabajo se refiere a una clase, un método de una clase o un conjunto pequeño de clases. Unidad en Power Builder Es un lenguaje orientado a objetos, cada objeto tiene eventos, funciones y propiedades. La prueba de Unidad se puede dirigir a eventos y funciones del objeto.(Utilizando PBUnit) ¿Qué es una Unidad?

30 ¿Qué es una Unidad en GeneXus? Se define como Unidad a un objeto GeneXus Tiene sentido probar todos los objetos? Objetos interesantes a probar: Procedure Web Panel Transaction Etc. No podría ser una Unidad una subrutina?

31 Unidad de Prueba en GeneXus Criterio: El objeto debe aportar funcionalidades a las aplicaciones GeneXus No solo contribuir al diseño de la aplicación Ejemplos de los no unidad: Theme Language File Tampoco interesan objetos utilizados para modelar estructuras de datos Ej: Table, Data View, Domain, SDTs, Subtype Group

32 Unidad de Prueba en GeneXus Objeto Attribute: Solo tiene sentido probarlos cuando están asociados a una transacción Serán probados en ese contexto External Object: Desarrollados con código nativo Pueden realizarse pruebas de caja negra Las pruebas quedan como documentación del objeto

33 Unidad de Prueba en GeneXus Instancias de Pattern: Aún en discusión: Un Pattern en principio encapsulan lógica Que se prueba unitariamente? El código generado? Se realizan pruebas unitarias para cada componente de la instancia?

34 Características de GXUnit Se Necesita: Que esté integrada al entorno de GeneXus Es más sencillo utilizar la herramienta Se pueden considerar las preferencias de desarrollo de la KB Pruebas veloces Almacenar pruebas Guardar los resultados

35 Cómo Desarrollar GXUnit? Utilizando Extensiones Disponibles desde la versión X de GeneXus Desarrolladas en C# y utilizando el GeneXus SDK

36 Ejemplo de Extension

37 ¡Muchas Gracias! ¿Preguntas?


Descargar ppt "Proyecto GxUnit Presentación del estado del arte Facultad de Ingeniería - UdelaR Juan Pablo Goyení Marcos Olivera Nicolás Carro."

Presentaciones similares


Anuncios Google