Proceso de testing. Ingeniería del Software I. Actividades del proceso de testing. Actividades del proceso de testing



Documentos relacionados
Testing. Ingeniería del Software I. Ejecución del testing. Cómo se hace testing? Cómo seleccionar datos Datos de producción

1. Descripción y objetivos

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

La Crisis del Software

Técnicas de prueba 1. FUNDAMENTOS DE LA PRUEBA DEL SOFTWARE

Diseño orientado al flujo de datos

Ingeniería de Software. Pruebas

CLASE # 5 TÉCNICAS DE CAJA BLANCA

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Patrones de software y refactorización de código

Técnicas Avanzadas de Testing Automatizado

Empresa Financiera Herramientas de SW Servicios

Sistemas de Información Administrativo - Universidad Diego Portales. Cátedra : Sistemas de Información Administrativa S.I.A.

Temario III Testing in the Large

GUIA SOBRE LOS REQUISITOS DE LA DOCUMENTACION DE ISO 9000:2000

Gestión y Desarrollo de Requisitos en Proyectos Software

Estándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008

6.4 ESTRATEGIAS DE PRUEBA

Hoy terminamos caja blanca

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Plan de estudios ISTQB: Nivel Fundamentos

DISEÑO DE FUNCIONES (TRATAMIENTOS)

Elementos requeridos para crearlos (ejemplo: el compilador)

Plan de Gestión de Configuración. Universidad Nacional de la Patagonia Austral

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Gestión de la Configuración

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

Guía Práctica para el Uso del Servicio de Software Zoho CRM

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

SSTQB. Nivel Fundamentos. Examen ejemplo. Programa de estudios 2010

BPMN Business Process Modeling Notation

Unidad 1. Fundamentos en Gestión de Riesgos

6.3 CASOS DE PRUEBA CAJA BLANCA

ACUERDO DE SERVICIO. Sistemas-Gestión de los Servicios Informáticos

Ingeniería del Software. Pruebas. Pruebas en el PUD. Las pruebas del software. Tipos de prueba Estrategias de prueba

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2

Entidad Formadora: Plan Local De Formación Convocatoria 2010

SOFTWARE & SYSTEMS PROCESS ENGINEERING METAMODEL SPECIFICATION V.20 SPEM 2.0

Mantenimiento de Sistemas de Información

PRUEBAS, CALIDAD Y MANTENIMIENTO DEL SOFTWARE

1. Que es un nombre de dominio? Es un conjunto de caracteres alfanuméricos utilizados para identificar una computadora determinada en Internet.

Proceso: AI2 Adquirir y mantener software aplicativo

Gestión de Oportunidades

14. Ingeniería de software. Ing. Alejandro Adorjan

Traducción del. Our ref:

Universidad acional Experimental Del Táchira Decanato de Docencia Departamento de Ingeniería en Informática

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

Metodología Orientada a Objetos Clave Maestría en Sistemas Computacionales

Ingeniería del Software. Diseño. Diseño en el PUD. Diseño de software. Patrones arquitectónicos. Diseño Orientado a Objetos en UML

Ciclo de vida del software

Implementando un ERP La Gestión del Cambio

Testing. Tipos, Planificación y Ejecución de Pruebas

Fundamentos del diseño 3ª edición (2002)

Manual de Usuario Módulo de Registro de Vehículos

Capacitación Rational Funcional Tester

PROCEDIMIENTO GESTIÓN TICS

DCU Diagramas de casos de uso

Desarrollar el concepto del producto. Asignar requisitos de hardware y software N

LICITACIÓN N L13045 NUEVO SISTEMA LEY DE TRANSPARENCIA

Sistema de marketing de proximidad

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de

Diagrama de Flujo (Flow Chart)

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

-OPS/CEPIS/01.61(AIRE) Original: español Página Estructura del programa de evaluación con personal externo

DE VIDA PARA EL DESARROLLO DE SISTEMAS

Capítulo 2. Metodologías de selección de personal

Operación Microsoft Access 97

Este documento enumera los diferentes tipos de Diagramas Matriciales y su proceso de construcción.

Arquitectura de Aplicaciones

Introducción al Proceso de Pruebas.

Capitulo 3. Test Driven Development

Ingeniería del Software I

2 EL DOCUMENTO DE ESPECIFICACIONES

V i s i t a V i r t u a l e n e l H o s p i t a l

CAPÍTULO I INTRODUCCIÓN

Orientación acerca de los requisitos de documentación de la Norma ISO 9001:2000

4. METODOLOGÍA. 4.1 Materiales Equipo

LISTA DE MEJORAS PARA MEJORAR LOS RESULTADOS DE LA EVALUACIÓN

SOLICITUD DE DESARROLLO Y ACTUALIZACIÓN DE APLICACIONES G OBIERNO D E L A CIUDAD DE BUENOS AIRES

IAP TÉCNICAS DE AUDITORÍA APOYADAS EN ORDENADOR (TAAO)

PROCESO ADMINISTRACIÓN DE RECURSOS TECNOLÓGICOS SUBPROCESO ADMINISTRACIÓN DE CONTINGENCIAS

Marco Normativo de IT

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

Planificación de Sistemas de Información

TEMA 2: DESARROLLO DEL SOFTWARE

ABC SCORING SOLUTION EXPRESS

Planificación de Sistemas de Información

PROYECTOS, FORMULACIÓN Y CRITERIOS DE EVALUACIÓN

TEMA 5: La explotación de un servicio TI

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

5.4. Manual de usuario

PROCEDIMIENTO ESPECÍFICO. Código G Edición 0

PROCESOS SOFTWARE. Según esta estrategia, todo proceso debe planificarse, implantarse y evaluarse, para luego actuar sobre él.

6 Anexos: 6.1 Definición de Rup:

Microsoft Access proporciona dos métodos para crear una Base de datos.

FORMACIÓN OBLIGATORIA DE EMPLEADOS Y AUXILIARES EXTERNOS DE LA MEDIACIÓN SITIO WEB DE AUTOESTUDIO CREADO PARA EL CUMPLIMIENTO DE ESTA NORMA

CICLO DE VIDA DEL SOFTWARE

Gestión de la Configuración (SCM) Introducción a la Ingeniería de Software

Haga clic en los recuadros donde indica la mano y regrese al inicio del capítulo al hacer clic en el título de la sección donde se encuentra

Transcripción:

Ingeniería del Software I Testing Martina Marré martina@dc.uba.ar Proceso de testing RECORDEMOS El testing no es sólo una etapa del proceso de desarrollo Tradicionalmente, empezaba al término de la implementación, y terminaba con la puesta en producción es un proceso, paralelo al desarrollo 2002 2 Actividades del proceso de testing Asociadas a requerimientos Planificación de test de sistema Derivación de casos de test funcionales Corrección de requerimientos a partir de lo detectado al confeccionar el plan Actividades del proceso de testing Asociadas a arquitectura y diseño detallado Planificación de test de integración y unidad Generación de casos de test funcionales de esto ya hablamos! 2002 3 2002 4 Actividades del proceso de testing Asociadas a la implementación creación de ambiente de ejecución de tests generación de casos de test estructurales ejecución de test de unidad ejecución de test de integración documentación de resultados seguimiento de errores test de regresión 2002 5 Testing de Integración Test orientado a verificar que las partes de un sistema que funcionan bien aisladamente, también lo hacen en conjunto Testeamos la intereacción, la comunicación entre partes No debe confundirse con testear un sistema-integrado (test de sistema) 2002 6 1

El test de integración Unimos y testeamos partes ya testeadas (que se asumen correctas) La estrategia de unión depende del tipo de sistema Sistema organizado jerárquicamente Top-down, bottom up, combinación de ambos Sistema batch de procesamiento secuencial Por partes del flow de corrida Sistema sin jerarquía (p.e., objetos) libre, salvo por el orden del desarrollo Programa auxiliares: Stubs y drivers Driver simula las llamada Stub simula subprograma En total, exigen un esfuerzo considerable de programación 2002 7 2002 8 Hints Los puntos clave del test de integración: Conectar de a poco las partes más complejas Esto permite identificar más fácil las causas de errores Minimizar la necesidad de programas auxiliares Para ahorrar esfuerzo de programación Error de Interpretación La funcionalidad provista por un módulo difiere del comportamiento esperado por quien usa un módulo Ejemplos: supongamos que A llama a B, La funcionalidad provista por B no es la requerida por la especificación de A B provee más funcionalidades de las que usa A A puede llamar a B con parámetros fuera del dominio de B 2002 9 2002 10 Error de ubicación de llamada Error de Interfaz La (instrucción de) llamada a un módulo no está en un lugar correcto del código Ejemplos: la instrucción está en un camino que no debiera contener la llamada la instrucción está mal ubicada dentro de un camino que debe contener a la llamada la instrucción no está presente en un camino que debiera contener a la llamada 2002 11 El estándar establecido entre llamador y llamado se viola Ejemplos: los parámetros no están en el orden correcto los parámetros no son del tipo correcto las reglas de llamadas no se respetan (por valor, por referencia) el dominio del parámetro formal difiere del dominio del parámetro real Problemas de sincronismo que hace que se acceda a información desactualizada 2002 12 2

Tipos de interfaces más comunes Interfaces de parámetros tipo call - return datos pasados de un procedimiento a otro Interfaces de memoria compartida Interfaces de intercambio de mensajes Un subsistema requiere servicios de otro En general son asincrónicas Algunos hints para el testing de interfaces Aplicar el criterio de condiciones de borde Probar todos los parámetros de punteros con nulos Diseñar tests que hagan fallar al componente En el caso de memoria compartida, cambiar la secuencia de acceso a los datos Usar testing de estrés en interfaces de mensajes En interfaces de mensajes, cambiar el orden 2002 13 2002 14 Testing de Unidad Se realiza sobre una unidad de código pequeña, claramente definida qué es una unidad En general es llevado a cabo por los desarrolladores Test de unidades Qué es una unidad? Un programa Una función o procedimiento Un form Un script de un form Un subsistema Una clase 2002 15 2002 16 Qué es y qué no es una unidad Una unidad es El trabajo de un único programador La cosa más pequeña que puede ser probada Pequeña... 50 a 300 líneas de código Una unidad no es La entidad más pequeña que provee una determinada funcionalidad Lo primero que se puede probar sin programas auxiliares 50,000-100,000 líneas de código 2002 17 Algunas técnicas de selección de casos de test Caja Negra o funcional no conocemos cómo está implementada la unidad técnica de partición en categorías a partir de una descripción funcional de la unidad Random Basado en clases de fallas Caja Blanca o estructural conocemos cómo está implementada la unidad basadas en flujo de control y de datos 2002 18 3

Representación del flujo de control Representamos el flujo de control de un programa a través de un grafo de flujo o flowgraph Programas secuenciales, con un único punto de ingreso y un único punto de terminación Testing Estructural Secuencia if then else if then 2002 20 Representación del flujo de control Flowgraph - Ejemplo do while repeat until case, o selección múltiple Esta es una representación posible. Existen varias. begin 1: read(x,y) 2: while x y do 3: if x > y 4: then x := x-y 5: end-if 6: end-while 7: return x 8: end 4 1 2 3 5 6 2002 21 7 8 2002 22 Caminos del flowgraph Un camino en un flowgraph desde el nodo asociado al inicio del programa hasta el nodo asociado a la terminación del programa se llama camino completo Una ejecución del programa que termina satisfactoriamente, está asociada a un camino completo en el flowgraph del programa Cada camino del flowgraph corresponde a una ejecución? Y los caminos completos? 2002 23 De caminos a casos de test Dado un camino completo en un flowgraph, cómo obtengo un caso de test que lo fuerce? A partir de un camino completo, se puede obtener condiciones sobre los inputs para forzar dicho camino ejecución simbólica caso de test 2002 24 4

Caminos no factibles Un camino en un flowgraph para el cual no existe input del programa que fuerce su ejecución, se dice camino no factible Cada camino factible puede tener muchos inputs asociados que fuercen su ejecución Criterios de Testing Estructural Un criterio de testing estructural permite identificar entidades que deben cubrirse con los datos de test para satisfacer el criterio Cuál es el problema de los caminos no factibles? 2002 25 2002 26 Cubrimiento de sentencias o instrucciones Flowgraph - Ejemplo 2 Todas las sentencias del programa deben ejercitarse equivale a cubrir todos los nodos del flowgraph begin 1: read(a,b,x) 2: if (a>-1) and (b=0)then 3: x := x/a 4: end if 5: if (a=2) or (x >1) then 6: x := x+1 7: end if 8:end 3 6 1 2 4 5 7 2002 27 8 2002 28 Ejemplo sentencias en el ejemplo, debemos cubrir los nodos 1, 2, 3, 4, 5, 6, 7 y 8 el siguiente camino cubre todos los nodos 1, 2, 3, 4, 5, 6, 7, 8 por ejemplo, con el input siguiente forzamos el camino Test 0: a=2, b=0, x=1 Testing estructural - proceso 1- Con el código como base, dibujamos el grafo de flujo de control 2- Determinamos un conjunto de caminos que cumple el criterio 3- Preparamos los datos de test que forzarán la ejecución de cada camino p.e., usando ejecución simbólica 4- Evaluamos si satisfacemos el criterio 5- Eventualmente, iteramos 2002 29 2002 30 5

Observaciones El testing basado en código encuentra muchos errores Se ha realizado mucha investigación para determinar qué técnica estructural es la mejor Pero Problemas Cualquier técnica de selección de casos que no está basada en el comportamiento funcional, está mal guiada desde el comienzo La gente no usa el software para ejecutar sus instrucciones, sino para invocar sus funcionalidades Es fácil ejecutar todas las instrucciones y sin embargo no invocar ciertas funciones 2002 31 2002 32 Técnicas estructurales como criterio de adecuación Cubrimiento de decisiones o Branch No usar información estructural NO Cubrimiento estructural? NO Derivar casos de test funcionales SI Ejecutar tests Fallas? SI Reparar Terminación del testing 2002 33 Problema: el else del if no está testeado Todas las decisiones en el control del programa deben ejercitarse al menos una vez por true, y al menos una vez por false branch equivale a cubrir todos los arcos del flowgraph branch implica sentencias 2002 34 Ejemplo cubrimiento de decisiones Problema... en el ejemplo, debemos cubrir todos los arcos (y en particular, los arcos 2-3, 2-4, 5-6 y 5-7) por ej., con los inputs siguientes Test1: a=0, b=0, x=0 Test2: a=-2, b=0, x=2 ejecutamos los siguientes caminos, que cubren todos los arcos Camino1: 1, 2, 3, 4, 5, 5-7, 7, 8 Camino2: 1, 2, 2-4, 4, 5, 6, 7, 8 2002 35 Una decisión puede estar compuesta de varias condiciones En el ejemplo, (a>-1) and (b=0) Test1: a=0, b=0, x=0 condiciones: a>-1, b=0, a 2, x 1 Test2: a=-2, b=0, x=2 condiciones: a -1, b=0, a 2, x>1 2002 36 6

Cubrimiento de condiciones Todas las condiciones de todas las decisiones en el control del programa deben ejercitarse al menos una vez por true, y al menos una vez por false Condiciones Para satisfacer condiciones hay que ejecutar: (a>-1) (a -1) (b=0) (b 0) (a=2) (a 2) (x>1) (x 1) Por ejemplo, Test1, Test2 y Test3, donde: Test3: a=2, b=1, x=0 camino: 1, 2, 4, 5, 6, 7, 8 condiciones: a>-1, b 0, x 1, a=2 se satisface el criterio condiciones 2002 37 2002 38 Relación entre branch y condiciones Cubrimiento de caminos Consideramos la guarda If A&B branch: (A & B), ( (A & B)) puede faltar A o B branch no implica condiciones condiciones: A, A, B, B (A & B) ( A & B) condiciones no implica branch es decir, ninguno garantiza al otro! Lo mismo sucede entre sentencias y condiciones 2002 39 Todo camino del flujo de control del programa debe ejercitarse al menos una vez equivale a cubrir todos los caminos del flowgraph Es factible? Garantiza algo? 2002 40 Criterios estructurales basados en flujo de control Control flow testing Data Flow Testing Motivación Programas = control + data sentencias branch decisiones caminos 2002 41 2002 42 7

Definiciones y Usos una sentencia que guarda un valor en la posición de memoria de una variable, crea una definición una sentencia que trae el valor de la posición de memoria de una variable es un uso de la definición activa de esa variable un uso de x es un un uso predicado o p-uso si aparece en el predicado de una sentencia que representa una bifurcación de control en otro caso, se llama uso computacional o c-uso (aparece del lado derecho de una asignación) Def-Use flowgraph Dado un programa P y una variable x en P, el defuse flowgraph es el flowgraph de P anotado de la siguiente manera: por cada definición de x, el nodo asociado está etiquetado con una definición de x por cada c-uso, el nodo asociado está etiquetado con un uso de x Por cada p-uso todos los arcos salientes del nodo asociado están etiquetados con un uso de x 2002 43 2002 44 Def-use flowgraph para a Ejemplo Def-use flowgraph para b Ejemplo begin 1: read(a,b,x) 2: if (a>-1) and (b=0)then 3: x := x/a 4: end if 5: if (a=2) or (x >1) then 6: x := x+1 7: end if 8:end u a u a 3 u a 6 1 d a 2 u a 4 5 ua 7 begin 1: read(a,b,x) 2: if (a>-1) and (b=0)then 3: x := x/a 4: end if 5: if (a=2) or (x >1) then 6: x := x+1 7: end if 8:end 3 u b 6 1 d b 2 u b 4 5 7 8 2002 45 8 2002 46 Def-use flowgraph para x Ejemplo DUA (definition-use association) begin 1: read(a,b,x) 2: if (a>-1) and (b=0)then 3: x := x/a 4: end if 5: if (a=2) or (x >1) then 6: x := x+1 7: end if 8:end u x d x u x d x 3 u x 6 1 d x 2 4 5 7 ux Una DUA es una terna [d, u, x] tal que la variable x está definida en el nodo d la variable x se usa en el nodo u o en el arco u hay al menos un camino desde d hasta u que no contiene otra definición de x además de la de d (def-clear para x o libre de definiciones para x) 8 2002 47 2002 48 8

Ejemplo DUAS ejemplo 2 Criterios estructurales basados en flujo de datos [1, 2-3, a] [1, 2-4, a] [1, 3, a] [1, 5-6, a] [1, 5-7, a] [1, 2-3, b] [1, 2-4, b] [1, 3, x] [1, 5-6, x] [1, 5-7, x] [1, 6, x] [3, 5-6, x] [3, 5-7, x] [3, 6, x] 2002 49 Data flow testing all defs all c-use all p-use all uses all c-use some p-uses all p-uses some c-uses all du-paths 2002 50 Cubrimiento All-uses Ejemplo All-Uses Para cada variable en el programa, deben ejercitarse toda las asociaciones entre cada definición y toda uso de la misma (tal que esa definición esté activa) All-uses equivale a cubrir todas las DUAS del programa 2002 51 Test 0: a=2, b=0, x=1 Cubre las DUAS [3, 5-6, x], [3, 6, x] Test1: a=0, b=0, x=0 Cubre las DUAS [1, 2-3, a], [1, 3, a], [1, 5-7, a], [1, 2-3, b], [1, 3, x], [3, 5-7, x] Test2: a=-2, b=0, x=2 Cubre las DUAS [1, 2-4, a], [1, 5-6, a], [1, 2-4, b], [1, 5-6, x], [1, 6, x] Test3: a=2, b=1, x=0 Cubre las DUAS [1, 2-4, a], [1, 5-6, a], [1, 2-4, b], [1, 5-6, x], [1, 6, x] 2002 52 Ejemplo (cont.) Subsumption en Criterios estructurales Falta cubrir la DUA [1, 5-7, x] Por ejemplo, el test Test 4: a=1, b=1, x=0 cubre esta DUA 2002 53 Un criterio A subsume a otro criterio B si un conjunto de datos de test T satisface un criterio A, entonces T satisface B Qué relación existe a la hora de encontrar más fallas? All-c/some-p All c/uses All paths All du paths All uses All-p/some-c All defs All p/uses Branch Statement 2002 54 9

Ejecución del testing Ejecución del testing selección de datos dónde testear: ambiente de test terminación del testing documentación reporte y seguimiento de errores test de regresión 2002 56 Ejecución del testing selección de datos dónde testear: ambiente de test terminación del testing documentación reporte y seguimiento de errores test de regresión Movimiento de componentes programación testing de unidades integración, testing del sistema testing de aceptación Desarrollo Testing Producción 2002 57 2002 58 Ejecución del testing Terminación del testing selección de datos dónde testear: ambiente de test terminación del testing documentación reporte y seguimiento de errores test de regresión 2002 59 Se terminó el tiempo o recursos Se corrieron todos los tests derivados sin detectarse ningún error % de cubrimiento de ciertas técnicas elegidas Fault-rate más bajo que un cierto valor especificado (# de errores por unidad de tiempo de testing) Se encontró un número predeterminado de errores (% del número total de errores estimado) 2002 60 10

Ejecución del testing selección de datos dónde testear: ambiente de test terminación del testing documentación reporte y seguimiento de errores test de regresión Documentos de Casos de test Criterios de derivación de casos empleados Casos de test organizados por Módulo, sistema, unidad, etc. Incluyendo el resultado esperado con referencia al requerimiento que prueban Criterios de terminación del testing Datos de prueba 2002 61 2002 62 Documentos de reporte de ejecución ambiente de test selección de datos referencia a casos de test que prueban ejecución y resultado obtenido reporte de errores re-ejecución luego de las modificaciones pertinentes Gerenciamiento de errores Determinación del origen del error una vez detectado un error, se busca el problema que lo originó haciendo debugging Clasificación de errores prioridad severidad Seguimiento de errores 2002 63 2002 64 Gerenciamiento de errores Ejecución del testing Reparación del software Testing y testing de regresión Iterar hasta terminar selección de datos dónde testear: ambiente de test terminación del testing documentación reporte y seguimiento de errores test de regresión 2002 65 2002 66 11

Test de Regresión Tareas de testing luego de que un sistema ha sido modificado Algunos estudios dicen que la probabilidad de introducir un error al hacer un cambio es entre 50-80% [Hetzel: The complete guide to software testing, QED Info. Sciences, Wellesley, 1984] Cuándo hacer test de regresión? Durante el desarrollo de software En tareas de mantenimiento, por corrección adaptación a nuevo ambiente mejora de las prestaciones 2002 67 2002 68 Selección de casos de regresión Bibliografía Casos reusables: corresponden a partes del software no modificadas (ni especificación, ni implementación) Retesteables: la especificación no cambia, pero sí la implementación Obsoletos: no pueden seguir usándose p.e., test case que especifica una relación I/O incorrecta, por modificación de la especificación Beizer: Software Testing Techniques, Van Nostrand Reinhold, 1990. Myers: The art of Software Testing, John Wiley & Sons, 1979. Ghezzi et al.: Fundamentals of Software Engineering, Prentice Hall, 1992. Rapps, Weyuker: Selecting software test data using data flow information, IEEE Trans. on Software Engineering, SE-11(4):367-375, April 1985. 2002 69 2002 70 12