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 Lenguajes Declarativos Pruebas Unitarias y Herramientas XUnit Objetos GeneXus ¿Qué consideramos unidad? Características de GXUnit ¿Cómo desarrollar GXUnit?

3 Introducción Objetivos de la Presentación Exponer investigación en: Pruebas Unitarias sobre Lenguajes Declarativos Herramientas xUnit Objetos GeneXus Recibir retroalimentación Requerimientos para la construcción de la herramienta

4 GXUnit tuvo su origen en el año 2003 En el año 2004 se formalizó la propuesta en la línea 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 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 Beizer, B.: "Carta a swtest-discuss La identificación temprana de errores reduce el esfuerzo de corrección y el costo de los proyectos En GeneXus las pruebas unitarias aún requieren mucho tiempo y esfuerzo por parte del desarrollador Introducción Motivación

6 GeneXus y Power Builder Lenguajes declarativos, generadores de aplicaciones Orientados a especificar Sistemas de Información Soportan arquitecturas cliente/servidor, distribuidas y web Brindan facilidades para el acceso a Bases de Datos, diseño de reportes e interfaz de usuario Lenguajes Declarativos

7 Pruebas unitarias Verifican el funcionamiento de unidades de software Deben ser independientes del resto del sistema Simulación de objetos Con acceso al código fuente (caja blanca) Involucra a los desarrolladores Es importante la velocidad de las pruebas

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

9 Herramientas xUnit Conceptos utilizados Caso de prueba Porción de c ódigo que verifica 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

10 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

11 JUnit y PBUnit Frameworks xUnit para Java y Power Builder Junit es el más utilizado, PBUnit 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 métodos Assertions que validan los resultados de la ejecución de la prueba Suite de pruebas

12 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 casos de prueba pueden construirse manualmente o cargarlos desde un XML El resultado de las pruebas se guarda en un XML y puede verse desde el IDE de desarrollo Está hecho para una versión que ya no se mantiene (Arreglar bien aca)

13 Objetos GeneXus

14 ¿Qué objetos vamos a probar? Vamos a evaluar la relevancia de los distintos tipos de objetos Los siguientes datos fueron obtenidos a través del análisis 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

15 Objetos GeneXus Aca va la grafica

16 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

17 Objetos GeneXus ¿Qué objetos son los más relevantes? 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

18 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

19 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 (cambiarlo, queda muy bruto) Parece mejor enfocarse en el objeto Procedure, para después extender la herramienta

20 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?

21 ¿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 por ejemplo?

22 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

23 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

24 Unidad de Prueba en GeneXus Instancias de Pattern: Aún en discusión: Los Pattern en principio encapsulan lógica Cual sería el objetivo.¿Qué se prueba unitariamente? El código generado? Se realizan pruebas unitarias para cada componente de la instancia?

25 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

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

27 Ejemplo de Extension

28 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.

29 ¡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