CS-432: Ingeniería Moderna de Software Semana 7

Slides:



Advertisements
Presentaciones similares
INTRODUCCIÓN A LA VERIFICACION Y VALIDACION
Advertisements

Ciclo de vida de desarrollo de software
BizAgi - Business Agility
MODELOS ORIENTADOS A OBJETOS
PLANIFICACIÓN DE TESTING
Fundamentos de Diseño de Software INFT.1
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
ANÁLISIS DE REQUERIMIENTOS
Pruebas Orientadas a Objeto
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Ciclo de desarrollo del software
Presentación del estado del arte
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
Administración de Procesos de Pruebas
Ingeniería del Software
Aspectos Avanzados de la Tecnología de Objetos
PLANEACION DE UNA ESTRUCTURA ORGANIZACIONAL
Modelado Arquitectónico
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
Ingeniería de Software Orientado a Objetos
DISEÑO DE SOFTWARE 1ª. Parte
Diseño e Implementación
Inspecciones de Software
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
ISF5501 Ingeniería de Software
1 Diseño Orientado a Objetos Agustín J. González ELO-329: Diseño y Programación Orientados a Objetos 1er. Sem
CS-432: Ingeniería Moderna de Software Semana 3
Metodología para solución de problemas
Ingeniería del Software
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Ingeniería de software
Análisis y Diseño de Sistemas
1 Diseño Orientado al Objeto Agustín J. González ELO-326: Seminario de Computadores II 2do. Sem
Importancia en la efectividad del:
Diseño de Software y su Proceso
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
Especialización en Desarrollo de Software
Ing. Noretsys Rodríguez. Definición de Conceptos  Falla: Ocurre cuando un programa no se comporta de manera adecuada. Es una propiedad estadística de.
El rol de SQA en PIS.
Introducción a UML Departamento de Informática Universidad de Rancagua
Ciclo de vida de un sistema
Ingeniería de Requisitos
Roles de Open UP.
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
TIPOS DE PRUEBAS DEL SOFTWARE
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Relación con otras asignaturas del plan de estudio
Introducción al proceso de verificación y validación.
Actividades en el Proceso de desarrollo de Software
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
Proceso de Diseño de Interfaces
Estructurar tus ideas para hacerlas realidad
Ciclo de Vida del Software
Ciclo de desarrollo del software
Carolina Rangel Felipe Montaño Alexis García
Proceso de desarrollo de Software
6.6 Administración de defectos
UNIVERSIDAD LATINA (UNILA)
Modelo de procesos de software
Bachillerato Ingeniería en Informática Fundamentos de Computación.
Fundamentos de Ingeniería de Software
Objetivos de la prueba Los objetivos principales de realizar una prueba son: Detectar un error. Tener un buen caso de prueba, es decir que tenga más probabilidad.
Es una metodología ágil diseñada para el desarrollo de software, basada en la calidad y el monitoreo constante del proyecto. Consiste esencialmente en.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Servicio de Implementación Proceso de Desarrollo de Software Ventanilla Única de Comercio Exterior Mexicana.
Entregables del Proyecto
ALUMNO ALUMNO: DIEGO URES LEGAJO LEGAJO: La prueba unitaria es la herramienta para la Calidad Presentación Trabajo Final de Grado.
Transcripción de la presentación:

CS-432: Ingeniería Moderna de Software Semana 7 Dr. Jesús Borrego Lead Faculty, COS Regis University

Agenda Modelos de implementación y despliegue Clases de diseño Asociación de relación Listas e iteradores Diagramas de secuencia

Términos clave Assert - afirmar Black box – caja opaca o caja negra Performance testing – pruebas de rendimiento Regression testing - pruebas de regresión Stress testing – pruebas de estrés Testing framework – marcos de pruebas Testing workflow – flujo de trabajo de pruebas User acceptance testing – pruebas de aceptación del usuario White box – caja clara o caja blanca

Revisando el proyecto En el desarrollo de software es importante revisar el diseño y la implementación para prevenir problemas futuros El objecto es encontrar errores en el software antes de entregar el proyecto Pruebas de software occurren en todas las fases del proyecto

Pruebas dirigidas por casos de uso Los casos de uso dirigen el análisis, diseño y desarrollo de software; también dirigen las pruebas del software Verificación - ¿se desarrolla el producto bien? Validación - ¿se desarrolla el producto correcto? Pruebas del modelo de casos de uso es parte de validación Intenta determinar si los requerimientos del cliente son cubiertos por la aplicación

Verificación Las pruebas del modelo de implementación son parte de la verificación del producto El modelo de verificación consiste de un conjunto de casos de pruebas Los casos de prueba especifican como se deben verificar los casos de pruebas Los casos de pruebas se deben trazar a los requerimientos del cliente

Trazas de casos de uso

Flujo de trabajo de pruebas El flujo de trabajo define las actividades requeridas para el desarrollo del modelo de pruebas Consiste de seis actividades: desarrollo del plan, pruebas del modelo de diseño, prueba de diseño, prueba de implementación, ejecución de pruebas y evaluación de las pruebas

Flujo de trabajo de pruebas El flujo de trabajo define las actividades requeridas para el desarrollo del modelo de pruebas Consiste de seis actividades: desarrollo del plan, pruebas del modelo de diseño, prueba de diseño, prueba de implementación, ejecución de pruebas y evaluación de pruebas

Desarrollo del plan de pruebas Definir las estrategias que se usarán, incluyendo las pruebas del modelo Ejemplos caja blanca y caja negra, o caja clara y caja opaca Estimar los recursos requeridos para ejecutar las actividades de prueba Programar las actividades de prueba

Pruebas del modelo de diseño Determinar estrategias para verificar si el modelo es correcto ¿Tiene errores? Determinar estrategias para verificar si el modelo es completo ¿Faltan partes? Determinar estrategias para verificar si el modelo es consistente ¿Hay ambigüedades?

Pruebas de diseño Identificar y describir los casos de prueba por cada versión de la aplicación Identificar y estructurar procedimientos de pruebas que especifiquen como se desarrollaran las pruebas Para verificar los componentes de la aplicación que se ejecutan Para verificar la integración de los componentes dentro del sistema completo

Pruebas de implementación Crear casos de prueba para automatizar procedimientos de ensayo Automatizar la ejecución de los casos de prueba Facilitan el comportamiento de las pruebas después de que se crea la versión de software nueva Ejecutar lo mas posible todas las partes de los casos de pruebas

Ejecución de pruebas Pruebas de unidad Pruebas de regresión Pruebas de integración Pruebas de aceptación del usuario Pruebas de estrés Pruebas de rendimiento

Evaluación de las pruebas Revisar los resultados para determinar si las pruebas fueron adecuadas Determinar si se necesitan mas pruebas para asegurar si el producto es correcto Planear las pruebas requeridas para obtener mejor cobertura de los módulos de la aplicación

Metodologías de pruebas Caja opaca – se utiliza conocimientos de las funciones requeridas del objeto bajo prueba Se usan casos de uso para revisar el producto Probar que se satisfagan las funciones del caso de uso No han conocimiento de como se construye la unidad, ni la lógica implementada en su implementación También llamada caja negra

Metodologías de pruebas - II Caja clara – se utiliza conocimientos de la implementación del módulo y la lógica empleada Se requiere acceso al código fuente Se utilizan los diagramas de clase para revisar la interfaz del módulo Se requiere acceso a los diagramas de secuencia y diagramas de estado También llamada caja blanca

¿Cuál es mejor? - Ventajas 3 ventajas de caja opaca 1 2 3 3 ventajas de caja clara

¿Cuál es mejor? - Desventajas 3 desventajas de caja opaca 1 2 3 3 desventajas de caja clara

Modelos de pruebas Estrategia general que puede adaptarse a modelos de orientación de objetos Examina el modelo para determinar si es correcto, completo y consistente UML no requiere que sea correcto, completo y consistente, así que es necesario ver a que grado debe de serlo para cada iteración Este método permite un enfoque ágil para modelos orientados a objetos

Incorporar el modelo en el desarrollo Es importante documentar deficiencias encontradas para implementar correcciones antes del desarrollo final Para evitar errores futuros Se pueden documentar las fallas o deficiencias en herramientas usadas para este objeto Las fallas se asignan a ingenieros de software para implementar soluciones

Pruebas para tratar cuestiones Exactitud – probar tanto la precisión sintáctica y semántica del modelo Sintáctica – los elementos del modelo UML son usados correctamente Semántica – los elementos empleados corresponden a la realidad modelada Integridad – probar si el modelo es completo verificando si faltan elementos requeridos; requiere examinar si el modelo cubre escenarios adecuadamente

Pruebas para tratar cuestiones - 2 Consistencia – probar si los elementos del modelo tienen conflictos con otros elementos; también verifica que los elementos del modelo no contradicen los elements de los que depende Lindland, Sindre y Solvberg (1994) y McGregor y Korson (1994)

Evaluar el modelo de casos de uso Exactitud – cada caso de uso representa precisamente un requisito Integridad – cada caso de uso representa la funcionalidad total requerida para un modelo satisfactorio Consistencia – cada caso de uso es consistente con otros casos de uso y evitar contradicciones entre otros casos de uso

Planear las pruebas Se pueden clasificar los casos de uso para ilustrar la frecuencia y la criticidad con el fin de dar prioridad a las pruebas Ya que usualmente no es posible cubrir todos los casos Es importante identificar los casos de uso críticos y cubrirlos con suficientes casos de prueba Es útil crear una matriz de referencia de casos de uso contra casos de prueba

Ejemplo de matriz de pruebas ¿Que problemas notan?

Revisar el modelo de análisis El objeto es determinar si la aplicación que se está modelando interpreta correctamente el dominio de la aplicación Exactitud – la descripción del dominio es correcta, los algoritmos producirán los resultados correctos. Los conceptos y algoritmos cubren los casos de uso Integridad – Los conceptos son suficientes para cubrir el alcance del contenido especificado

Revisar el modelo de análisis - 2 Integridad – Hay suficiente detalle para describir los conceptos a un nivel apropiado. Los expertos están de acuerdo con los atributos y comportamientos de cada clase Consistencia – Los elementos del modelo deben ser consistentes con las definiciones y significados del negocio. Si hay varias maneras de representar on concepto de acción, las maneras son modeladas apropiadamente

Revisar el modelo de diseño El objeto es similar al del análisis, pero require nuevos elementos Exactitud – cada clase implementa correctamente la interfaz semántica. Las clases que corresponden an interfaces tienen que implementar la interfaz Integridad –Clases son definidas para cada interfaz en la arquitectura. Pre-condiciones del uso de los métodos son especificadas apropiadamente

Revisar el modelo del diseño - 2 Integridad – Post-condiciones son especificadas incluyendo condiciones que generan errores Consistencia – El comportamiento en la interfaz de cada clase provee una única manera de implementar una tarea, o, si hay varias maneras, ellas proporcionan el mismo comportamiento, pero con diferentes condiciones previas

Retos únicos del diseño Otros retos adicionales que no son generalmente visibles en programación de procedimento: Interfaces – Las interfaces deben de implementarse correctamente para proporcionar la funcionalidad requerida. Dando que varias clases proporcionan la misma interfaz (ArrayList, LinkedList), cambios a una interfaz requieren cambios a varias clases

Retos únicos del diseño - 2 Herencia – El uso de herencia causa problemas de acoplamiento en los que un cambio en una clase resulta en cambios en todas las clases inferiores. Se requiere un cuidadose análisis para verificar que un cambio que se esta heredando es apropiado para todas las otras clases inferiores. Delegación a menudo puede aliviar muchos problemas asociados con la herencia

Retos únicos del diseño - 3 Delegación – Delegar tareas a otros objetos, aunque similar al uso de módulos en lenguajes de programación de procedimiento, también presenta un conjunto de problemas. En una clase, la delegación es encapsulada tras una intefaz pública, por lo tanto es necesario asegurarse que la implementación de la interfaz sigue siendo correcta cuando la clase que se delega la funcionalidad es cambiada

Revisar el modelo de implementación Revisar el modelo de implementación se centra en verificar que el código implementado satisface el diseño documentado en el modelo de diseño Exactitud – Los componentes ejecutables del sistema crean una versión correcta y se adhieren al modelo de diseño (compilación y despliegue) Integridad – Los componentes ejecutables proporcionan toda la funcionalidad especificada en el modelo de diseño

Revisar el modelo de implementación - 2 Consistencia – Los componentes ejecutables del sistema son apropiadamente integrados en una manera que proporciona la funcionalidad indicada en los requerimientos de los casos de uso

Marcos de pruebas Usando los conceptos cubiertos en este curso, es posible desarrollar in marco de pruebas para cualquier aplicación que vayan a implementar Consideren el caso donde cambios a una reciente aplicación son actualizados en el repositorio del código En cuando se incorporan los cambios al repositorio, se debe construír la aplicación actualizada

Marcos de pruebas - 2 Se desea revisar la aplicación nueva con un número de casos de pruebas, como de integración y regresión Se puede automatizar la ejecución de dichos casos de prueba cada noche como parte del proceso de construcción de la aplicación

Ejemplo AccountCatalog es una clase responsable por actualizar cuentas de ahorros en la base de datos y obtener la información de la base de datos Se desea proveer un mecanismo conveniente y general para verificar el comportamiento correcto de los métodos públicos de la clase

Requerimientos del mecanismo El mecanismo debe proveer pruebas de unidad, pruebas de integración y pruebas de regresión Un método simple es crear un método de pruebas en la clase [verifyTest() ] que regresa TRUE si el objeto pasa la prueba y ha sido verificado

Usando el mecanismo Podemos crear una clase TestDriver que sería responsable de mandar un mensaje verifyTest() al object AccountCatalog Tomamos en cuenta un patrón Singleton, verificando que es correctamente implementado Naturalmente, el diseño del método verifyTest() debe especificar como se debe conducir la prueba

Conduciendo la prueba Crear un objecto (new Account) con ciertos atributos Ejecutar el método saveAccount() Ejecutar método find ( int ) usando el ID del objeto creado y comparar y contrastar los atributos del objeto obtenido para revisar que los atributos sean los mismos Sin los attributos son iguales, regresa TRUE, o FALSE si no son iguales Hay otra opción

Director de Pruebas Se puede generalizar el proceso creando una clase que implementa los comportamientos comunes para revisar el comportamiento del objeto Por ejemplo AccountCatalog puede heredar comportamiento de la clase de pruebas o delegar el comportamiento a la clase de pruebas

Opciones Heredando o Delegando

Ventaja Este enfoque también permite la reutilización de las conductas de pruebas comunes, como el registro de pruebas que fallaron en un registro común En este caso, la interfaz TestHandler especifica lo que todos los conductores de pruebas deben implementar el método verifyTest() El archivo de registro proporciona el lugar donde se pueden captar los errores encontrados durante las pruebas

Diagrama

Método Afirmar Hay un comportamiento sofisticado que se puede implementar en varios lenguajes como Java, Lisp y C# El método Afirmar (Assert) en la clase previa permite que un programa especifique el resultado de un mensaje esperado cuando los parámetros apropriados se presentan Si el resultado es esperado, regresa TRUE, o FALSE si el resultado no es También se puede mostrar un mensaje

Ejemplo

Actividad 1 07 Unit Test Netbeans (11:16 min), por José Luis Daza Sandi: http://www.youtube.com/watch?v=KOeFrxoa0 WQ

Exámen Final 10 preguntas como el primer exámen Presentar casos donde deben preparar diagramas de UML, como las tareas Entregar antes del martes

¿Preguntas? Correo electrónico a jborrego@regis.edu