Vicente Garca Daz Csar Fernndez Acebal Juan Manuel Cueva Lovelle Escuela de Ingeniera Informtica Universidad de Oviedo Curso 2010-2011 garciavicente@uniovi.es Vicente Garca Daz Algunos problemas famosos F-16 (1986) Therac-25 (1985-1987) Misil Patriot (1991) Ariadne 5 (1996) Mars Climate Orbiter (1999) Multidata Software (2001) 2 Ubicacin general Son necesarias Por qu hacer pruebas? Desarrollos en cascada o iterativos Pruebas vs otras etapas de desarrollo Software ms complejo y crtico Costes ocasionados por los fallos muy altos Anlisis Diseo Codificacin Pruebas 3 Inicio operacin Revisin Conceptos bsicos Un del programador ocasiona un , el cual produce un Error es una accin humana equivocada Defecto es una definicin incorrecta en un software Fallo es la incapacidad de un sistema para realizar las funciones especificadas en los requisitos No es lo mismo verificar que validar Verificar es determinar si se est construyendo un producto correctamente Validar es determinar si se est construyendo el producto correcto 4 1/3 error defecto fallo Conceptos bsicos Prueba Es un proceso crtico en el que un software o uno de sus componentes se ejecuta en circunstancias previamente planificadas con el objetivo bsico de encontrar errores Los resultados se observan, se guardan y se evalan Ciclo de prueba Es una actividad compuesta: Formar una idea de los resultados aceptables para determinados valores de entrada Se ejecuta el software dndole los valores determinados en unas condiciones especficas Se observan los resultados Se comparan los resultados con la idea inicial 5 2/3 Id Condiciones de entrada Entrada Salida esperada 1 La base de datos est cargada 1 1,323 2 La base de datos est cargada 1,5 1,984 3 La base de datos est cargada 0,3 0,396
Conceptos bsicos Caso de prueba Es un escenario concreto de una prueba: Identificador Componente a probar Condiciones de entrada Datos de entrada Salida esperada Cuntos casos de prueba son suficientes? Modelos 6 3/3 Objetivos de las pruebas Verificar y validar el software Descubrir defectos no detectados con anterioridad Encontrar defectos con poco esfuerzo y tiempo Encontrar defectos con una alta probabilidad 7 Caractersticas de las pruebas 8 Son siempre necesarias y crticas Pueden llegar a ocupar incluso el 30-40 % del tiempo Suelen suponer un coste del 30-50 % de un software confiable El principio de Pareto es aplicable Son crticas para garantizar la calidad del software Slo pueden demostrar la existencia de defectos No pueden ser completas Pueden planificarse con mucha antelacin Son ms efectivas si las dirige un equipo independiente Deberan: Probar si el software no hace lo que debe hacer Probar si el software hace lo que no debe hacer Realizarse de forma independiente respecto a otras Estar muy bien documentadas No deberan: Ser redundantes Ser demasiado complejas Dar por supuesto que un software no tendr defectos 9 Lo que deberan y no deberan hacer Falsos mitos sobre pruebas Los desarrolladores de un mdulo no deberan probar dicho mdulo El software no debera estar expuesto a personas que puedan utilizarlo de forma mal intencionada Las personas que realizan las pruebas nicamente trabajan en la etapa de pruebas 10 Esquema bsico del proceso Informes 11 Planificar [Piattini et al., 96] Disear Ejecutar Evaluar Depurar Analizar Desarrollo Resultados esperados Fallos encontrados Plan de pruebas Casos de prueba Informacin del proyecto Resultados Planificacin de la prueba Identificacin Enfoque Informe de incidencias Criterio de suspensin Productos a entregar Tareas a realizar Necesidades ambientales Responsabilidades Personal necesario Calendario Riesgos 12 Diseo de la prueba Criterios utilizados para obtener los casos de prueba Casos de prueba organizados Unidad, Integracin, Sistema, Resultado esperado Requisitos que se estn probando Datos de prueba Criterios de terminacin Un n de defectos por unidad de tiempo de la prueba inferior a un valor determinado Un n de defectos esperado Un % de cobertura determinado Fin de tiempo o recursos Se ejecutaron todas las pruebas 13 Depuracin del software Lo que se hace cuando un caso de prueba tiene xito Fases de la depuracin Localizar el defecto Corregir el defecto Tcnicas ms utilizadas para localizar el defecto Fuerza bruta Rastreo hacia atrs Eliminacin de causas 14 Espacio conceptual Caso de prueba Prueba Fallo Estado errneo Defecto Correccin Resguardo Controlador Componente 15 [Bruegge and Dutoit, 04] * 1..n * * * * * * * * Taxonoma de gestin de defectos Manejo de defectos Evitacin de defectos Deteccin de defectos Tolerancia a defectos Revisin Gestin de la configuracin Metodologa Transacciones atmicas Manejo de excepciones ... Pruebas de integracin Pruebas unitarias Pruebas Depuracin [Bruegge and Dutoit, 04] 16 Estndares relacionados con pruebas IEEE 730 asegurar la calidad del software IEEE 829 documentacin de las pruebas IEEE 830 especificaciones de los requisitos de sistemas IEEE 1008 pruebas unitarias IEEE 1012 verificacin y validacin del software IEEE 1028 inspecciones en software IEEE 1044 clasificacin de las anomalas software IEEE 1061 mtricas sobre calidad del software IEEE 12207 proceso del ciclo de vida del software y de los datos BS 7925-1 vocabulario de trminos utilizados en las pruebas BS 7925-2 pruebas de componentes software ISO/IEC 29119 todo el ciclo de pruebas. Pretende sustituir a otros como IEEE 829, IEEE 1008, BS 7925-1, BS 7925-2 17 Tipos principales de pruebas 18 usuario cliente desarrollador Pruebas de usabilidad Pruebas unitarias Pruebas de integracin Pruebas de sistema Pruebas de implantacin Pruebas de aceptacin Pruebas alfa y beta TCNICAS DE PRUEBAS Principales preocupaciones Funcionalidad Entradas Salidas Pruebas de caja negra 20 funcionalidad entrada salida Criterios de cobertura Particiones / Clases de equivalencia Modelos (criterios) Consiste en reducir el nmero de casos de prueba: Cmo? Dividindolos en conjuntos de datos equivalentes Dos fases 1. Identificar clases de equivalencia Es un conjunto de datos de entrada equivalentes Clases de equivalencia vlidas valores esperados Clases de equivalencia no vlidas valores no esperados Se obtienen de las especificaciones de entrada 2. Identificar casos de prueba 21 1/7 Criterios de cobertura Particiones de equivalencia 1- Identificar clases de equivalencia Habr que crear una tabla enumerando cada clase 22 2/7 Especificacin de entrada Clases de equivalencia vlidas Clases de equivalencia no vlidas
Criterios de cobertura Particiones de equivalencia 1- Identificar clases de equivalencia Un valor numrico nico Ejemplo: El ao tiene que ser 2005 Vlida: 2005 No vlida 1: ao < 2005 No vlida 2: ao > 2005 Rango de valores numricos Ejemplo: Una cadena de texto tiene entre 10 y 15 letras Vlida: entre 10 y 15 letras No vlida 1: < 10 letras No vlida 2: > 15 letras 23 3/7 Criterios de cobertura Particiones de equivalencia 1- Identificar clases de equivalencia Un valor nico no numrico Ejemplo: El color tiene que ser rojo Vlida: color rojo No vlida: otro color Conjunto de valores Ejemplo: La profesin puede ser camionero, piloto o albail Vlida: profesin camionero, piloto o albail No vlida: otra profesin Sin embargo, si el programa los tratara de forma diferente Habra que crear una clase vlida por cada profesin 24 4/7 Criterios de cobertura Particiones de equivalencia 1- Identificar clases de equivalencia Y las entradas mltiples? Hay que realizar el producto cartesiano 25 5/7 [http://www.uv.mx/jfernandez/] Criterios de cobertura Particiones de equivalencia 2- Identificar casos de prueba Pasos: Cubrir absolutamente todas las clases de equivalencia Para las clases de equivalencia vlidas Un caso de prueba tantas clases de equivalencia como sea posible Para las clases de equivalencia no vlidas Un caso de prueba una clase de equivalencia Ejemplo: nmeros de telfono Dos clases de equivalencia no vlidas: El nmero mvil no empieza por +34 Despus del cdigo del pas no hay 9 cifras Si se cubrieran con un mismo caso de prueba el usuario podra introducir como entrada: -40 677 00 00 00 000000 Podran enmascararse errores no controlados 26 6/7 Criterios de cobertura Particiones de equivalencia 2- Identificar casos de prueba Habr que crear una tabla con los casos de prueba 27 7/7 Caso de prueba Clases de equivalencia cubiertas Resultado
Criterios de cobertura Particiones de equivalencia. Ejemplo La idea es crear pruebas de caja negra para el reconocimiento de identificadores de un lenguaje de programacin Especificacin de entrada: Los identificadores tienen entre 2 y 10 caracteres El lenguaje distingue entre minsculas y maysculas Se podrn utilizar letras, dgitos y guiones bajos Todos los identificadores tienen que empezar por una letra No se pueden utilizar palabras reservadas del lenguaje como identificadores 28 1/3 Criterios de cobertura Particiones de equivalencia. Ejemplo 29 2/3 Especificacin de entrada Clases de equivalencia vlidas Clases de equivalencia no vlidas Entre 2 y 10 caracteres 1- 2 <= car <= 10 2- car < 2 3- car > 10 Letras, dgitos y guiones bajos 4- identificadores formados por letras, dgitos y guiones 5- un identificador con caracteres que no sean letras, dgitos o guiones Empieza por letra 6- el primer carcter tiene que ser una letra 7- el primer carcter no es una letra No utilizar palabras reservadas 8- el identificador no puede ser una palabra reservada del lenguaje 9- el identificador es una de las palabras reservadas del lenguaje Sensible a maysculas 10- identificador vlido 11- referenciar a un identificador intercambiando alguna letra maysculas / minsculas
Criterios de cobert. Particiones de equivalencia. Ejemplo 30 3/3 Caso de prueba (identificador) Clases de equivalencia cubiertas Resultado Estado-1 1, 4, 6, 8, 10 El identificador es aceptado por el sistema A 2 Aparece un mensaje de error Identificadorlargo 3 Aparece un mensaje de error dinero 5 Aparece un mensaje de error 1dinero 7 Aparece un mensaje de error String 9 Aparece un mensaje de error ESTADO-1 11 Aparece un mensaje de error
Especificacin de entrada Clases de equivalencia vlidas Clases de equivalencia no vlidas Entre 2 y 10 caracteres 1- 2 <= car <= 10 2- car < 2 3- car > 10 Letras, dgitos y guiones bajos 4- identificadores formados por letras, dgitos y guiones 5- un identificador con caracteres que no sean letras, dgitos o guiones Empieza por letra 6- el primer carcter tiene que ser una letra 7- el primer carcter no es una letra No utilizar palabras reservadas 8- el identificador no puede ser una palabra reservada del lenguaje 9- el identificador es una de las palabras reservadas del lenguaje Sensible a maysculas 10- identificador vlido 11- referenciar a un identificador intercambiando alguna letra maysculas / minsculas
Criterios de cobertura Anlisis de valores lmite Qu son los valores lmite? Son aquellos que estn en los mrgenes de las clases de equivalencia Los casos de prueba que exploran los valores lmites producen mejores resultados Entonces hay que: Seleccionar casos de prueba en los extremos Fijarse tambin en las especificaciones de salida 31 1/2 Criterios de cobertura Anlisis de valores lmite Cmo disear los casos de prueba? 32 2/2 Especificacin para ENTRADA o SALIDA Criterio para obtener casos de prueba Valor numrico nico - Caso para el valor numrico - Caso para el valor justo por encima - Caso para el valor justo por debajo Rango de valores numricos - Caso para el valor mximo del rango - Caso para el valor mnimo del rango - Caso para el valor justo por encima - Caso para el valor justo por debajo Estructuras de datos con elementos - Caso para el primer elemento de la estructura - Caso para el ltimo elemento de la estructura
Especificacin de entrada Clases de equivalencia vlidas Clases de equivalencia no vlidas Entre 2 y 10 caracteres 1- 2 <= car <= 10 2- car < 2 3- car > 10 Letras, dgitos y guiones bajos 4- identificadores formados por letras, dgitos y guiones 5- un identificador con caracteres que no sean letras, dgitos o guiones Empieza por letra 6- el primer carcter tiene que ser una letra 7- el primer carcter no es una letra No utilizar palabras reservadas 8- el identificador no puede ser una palabra reservada del lenguaje 9- el identificador es una de las palabras reservadas del lenguaje Sensible a maysculas 10- identificador vlido 11- referenciar a un identificador intercambiando alguna letra maysculas / minsculas
Criterios de cobert. Anlisis de valores lmite. Ejemplo 33 Caso de prueba (identificador) Valor lmite estudiado Resultado Identifi10 Caso para el valor mximo del rango El identificador es aceptado por el sistema K2 Caso para el valor mnimo del rango El identificador es aceptado por el sistema Identific10 Caso para el valor justo por encima Aparece un mensaje de error K Caso para el valor justo por debajo Aparece un mensaje de error
Especificacin de entrada (un rango de valores) Criterios de cobertura Grafo Causa Efecto Sirve para explorar combinaciones en los valores de entrada Transforma el lenguaje natural a lenguaje formal Entradas causas Salidas efectos 34 1/3 c e c e c1 e c2 OR c1 e c2 AND Si c e Si !c e Criterios de cobertura Grafo Causa Efecto Ejemplo Se quiere sacar dinero de un cajero Causas (condiciones a cumplir) 1- La tarjeta es vlida 2- La clave de usuario es correcta 3- Se pasa el n mximo 4- Hay dinero disponible Efectos 50- Sale el dinero 51- Rechaza la tarjeta 52- Pregunta otra clave 53- Rechaza la operacin 35 2/3 Causas Regla 1 Regla 2 Regla 3 Regla 4 1 La tarjeta es vlida NO SI SI - 2 Clave correcta - SI NO - 3 Sobrepasa el n mximo - - NO SI 4 Hay dinero disponible - SI - NO
Criterios de cobertura Grafo Causa Efecto Ejemplo Tabla de decisin Casos de prueba Una por cada columna 3/3 Efectos Regla 1 Regla 2 Regla 3 Regla 4 50 Sale el dinero NO SI NO NO 51 Rechaza la tarjeta SI NO NO NO 52 Pregunta otra clave NO NO SI NO 53 Rechaza operac. NO NO NO SI
Cuidado, es un OR 36 Criterios de cobertura Matrices ortogonales Selecciona un subconjunto de casos de prueba Cundo se debe utilizar? Cuando hay demasiados casos de prueba Cuando no hay tiempo Qu son? Matrices en las que si se selecciona 2 columnas cualesquiera, en dichas columnas estarn todas las combinaciones posibles de pares, sin repetirse ninguna Estudios empricos 37 1/6 Criterios de cobertura Matrices ortogonales Proceso 1. Identificar las variables 2. Determinar el n de opciones de cada variable 3. Encontrar una matriz ortogonal adecuada 4. Adaptar el problema a la matriz ortogonal 5. Crear casos de prueba Ejemplo[www.parquesoft.com, GSQA-TecnicasPruebasFuncionales.ppt] Un sitio Web debe operar correctamente con diferentes navegadores, usando diferentes plugins, sobre diferentes sistemas operativos en el cliente y utilizando diferentes servidores de aplicaciones Navegadores: IE 8, Firefox 3.6, Google Chrome Plugins: Real Player, Media Player, ninguno Servidores de aplicaciones: IIS, Apache, JBoss Sistemas operativos: Windows Vista, Windows 7, Linux Combinaciones: 3 x 3 x 3 x 3 = 81 38 2/6 Criterios de cobertura Matrices ortogonales 1- Identificar las variables Navegadores, plugins, servidores de aplicaciones y sistemas operativos 2- Determinar el n de opciones de cada variable Navegadores 3 Plugins 3 Servidores de aplicaciones 3 Sistemas operativos 3 Combinaciones totales 3 x 3 x 3 x 3 = 81 39 3/6 Criterios de cobertura Matrices ortogonales 3- Encontrar una matriz ortogonal adecuada N de variables 4 4 columnas N de posibilidades de cada columna 3 L 9 (3 4 ) Slo hay que contemplar 9 posibilidades 40 4/6 1 2 3 4 1 1 1 1 1 2 1 2 2 2 3 1 3 3 3 4 2 1 2 3 5 2 2 3 1 6 2 3 1 2 7 3 1 3 2 8 3 2 1 3 9 3 3 2 1
Criterios de cobertura Matrices ortogonales 4- Adaptar el problema a la matriz 5- Crear casos de prueba 41 5/6 Navegador Plugin Servidor SO 1 IE 8 Real Player IIS Windows Vista 2 IE 8 Media Player Apache Windows 7 3 IE 8 Ninguno JBoss Linux 4 Firefox 3.6 Real Player Apache Linux 5 Firefox 3.6 Media Player JBoss Windows Vista 6 Firefox 3.6 Ninguno IIS Windows 7 7 Google Chrome Real Player JBoss Windows 7 8 Google Chrome Media Player IIS Linux 9 Google Chrome Ninguno Apache Windows Vista
Navegadores 1IE 8 2Firefox 3.6 3Google Chrome Plugins: 1Real Player 2Media Player 3Ninguno. Servidores de aplicaciones: 1IIS 2Apache 3JBoss Sistemas operativos: 1Windows Vista 2Windows 7 3Linux Criterios de cobertura Matrices ortogonales No todas las combinaciones dadas por la matriz tienen que ser vlidas Otros ejemplos de matrices ortogonales L 4 (2 3 ) En lugar de 8 pruebas, se hacen 4 L 8 (2 4 4 1 ) En lugar de 64, se hacen 8 L 18 (3 6 6 1 ) En lugar de 4374, se hacen 18 A veces no existe una matriz perfecta, pero se puede seleccionar una un poco ms grande 42 6/6 A medida que aumentan los factores, la ganancia es mucho mayor Criterios de cobertura Enfoque aleatorio 43 Utilizado generalmente cuando no hay ms tiempo Se simula la entrada de datos Se pueden utilizar modelos estadsticos Es menos eficiente que las pruebas directas pero Hay que considerar el tiempo que supone hacer un generador aleatorio de entradas al programa y el tiempo que supone hacer las pruebas no aleatorias Una vez desarrollado el generador aleatorio, la mquina puede hacer pruebas todo el da Principales preocupaciones Ramificaciones del cdigo Manejo de recursos del sistema Manejo de errores Trabajo como se espera -Caja negra y caja blanca Pruebas de caja blanca 44 entrada salida Anlisis de la cobertura de cdigo Es el proceso de: Encontrar fragmentos del software no ejecutados Crear casos de prueba adicionales Determinar un valor cuantitativo de la cobertura NOes necesario cubrir siempre todo el cdigo NOmide la calidad del producto software 45 Criterios de cobertura Sentencias Ejemplos de cobertura ajuste(1, 10, 0) ajuste(1, 11, 15) 46 decisin edad trabaja? hijos? caso de prueba cumple? IF (1) <30 FALSE TRUE 1- (20, FALSE, TRUE) SI IF (1) <30 FALSE FALSE 2- (20, FALSE, FALSE) NO IF (2) * FALSE 2- (20, FALSE, FALSE) SI IF (2) FALSE TRUE 3- (40, FALSE, TRUE) NO IF (3) >60 y <70 4- (65, FALSE, TRUE) SI IF (3) <=60 o >=70 5- (70, FALSE, FALSE) NO Criterios de cobertura Decisiones 47 Decisiones vs Sentencias decisin edad trabaja? hijos? caso de prueba IF (1) <30 TRUE FALSE 1- (20, TRUE, FALSE) IF (1) >=30 FALSE TRUE 2- (40, FALSE, TRUE) IF (2) TRUE FALSE 1- (20, TRUE, FALSE) IF (2) FALSE TRUE 2- (40, FALSE, TRUE) IF (3) >60 3- (65, FALSE, FALSE) IF (3) <70 3- (65, FALSE, FALSE) IF (3) <=60 1- (20, TRUE, FALSE) IF (3) >=70 4- (70, FALSE, FALSE) Criterios de cobertura Condiciones 48 Condiciones vs Decisiones Condiciones vs Sentencias decisin edad trabaja? hijos? caso de prueba cumple? IF (1) <30 FALSE TRUE 1- (20, FALSE, TRUE) SI IF (1) >=30 TRUE FALSE 2- (40, TRUE, FALSE) NO IF (2) TRUE FALSE 2- (40, TRUE, FALSE) SI IF (2) FALSE TRUE 3- (40, FALSE, TRUE) NO IF (3) >60 4- (65, FALSE, FALSE) SI IF (3) <70 4- (65, FALSE, FALSE) SI IF (3) <=60 2- (40, TRUE, FALSE) NO IF (3) >=70 5- (70, FALSE, FALSE) NO Criterios de cobertura Decisiones / condiciones 49 decisin edad trabaja? hijos? caso de prueba IF (1) <30 TRUE TRUE 1- (20, TRUE, TRUE) IF (1) <30 TRUE FALSE 2- (20, TRUE, FALSE) IF (1) <30 FALSE TRUE 3- (20, FALSE, TRUE) IF (1) <30 FALSE FALSE 4- (20, FALSE, FALSE) IF (1) >=30 TRUE TRUE 5- (65, TRUE, TRUE) IF (1) >=30 TRUE FALSE 6- (65, TRUE, FALSE) IF (1) >=30 FALSE TRUE 7- (70, FALSE, TRUE) IF (1) >=30 FALSE FALSE 8- (50, FALSE, FALSE) IF (2) TRUE TRUE 5- (65, TRUE, TRUE) IF (2) TRUE FALSE 6- (65, TRUE, FALSE) IF (2) FALSE TRUE 7- (70, FALSE, TRUE) IF (2) FALSE FALSE 8- (50, FALSE, FALSE) IF (3) >60 y < 70 6- (65, TRUE, FALSE) IF (3) >60 y >= 70 7- (70, FALSE, TRUE) IF (3) <= 60 y <70 8- (50, FALSE, FALSE) IF (3) <= 60 y >= 70 no hay opcin Criterios de cobertura Condiciones mltiples 50 Criterios de cobertura Caminos Un criterio muy utilizado Camino Secuencia de pasos, desde el inicial hasta la final Camino de prueba Camino que atraviesa como mximo una vez el interior de cada bucle que encuentra a su paso* Camino linealmente independiente Camino de prueba que introduce por lo menos un nuevo paso respecto a otros Si el procedimiento lo dibujramos como una grafo, se correspondera con dibujar una nueva arista que no haya sido recorrida anteriormente por otro camino 1/12 51 Criterios de cobertura Caminos Fases para realizar el criterio 1. Identificar nodos 2. Dibujar grafo 3. Calcular la complejidad ciclomtica Cuantifica la complejidad lgica 4. Determinar el conjunto de caminos linealmente independientes 5. Crear casos de prueba 2/12 52 Criterios de cobertura Caminos 53 Nodos. Sentencias de cdigo agrupadas Nodos predicado. Nodos surgidos de cada condicin de una decisin 1- Identificar nodos Cuntos nodos? 3/12 1 2 3 4 5 6 7 8 9 10 11 12 Criterios de cobertura Caminos 2- Dibujar grafo 4/12 54 IF-ELSE true false secuencia Aristas. Lneas que unen dos nodos Regiones. reas delimitadas por aristas y nodos Criterios de cobertura Caminos 2- Dibujar grafo 5/12 55 WHILE DO-WHILE true false true false Criterios de cobertura Caminos 2- Dibujar grafo 6/12 56 SWITCH m n IF mltiple low true medium high true false false Criterios de cobertura Caminos 2- Dibujar grafo 1 8 9 7 6 5 4 3 2 11 10 12 false false false true 57 7/12 Criterios de cobertura Caminos 3- Calcular la complejidad ciclomtica V(G) = A N + 2 A N de aristas del grafo N N de nodos del grafo V(G) = R R N de regiones cerradas del grafo V(G) = C + 1 C N de nodos de condicin Complejidad ciclomtica Evaluacin del riesgo de 1 a 10 sin riesgo de 11 a 20 riesgo moderado de 21 a 50 alto riesgo 50 o ms muy alto riesgo 58 8/12 Criterios de cobertura Caminos 3- Calcular la complejidad ciclomtica V(G) = A N + 2 = 18 12 + 2 = 8 V(G) = R = 7 + la regin externa = 8 V(G) = C + 1 = 7 + 1 = 8 Nmero de pruebas a realizar 59 9/12 R1 R2 R3 R4 R5 R6 R7 R8 Criterios de cobertura Caminos 4- Determinar el conjunto de caminos independientes Heursticos Elegir un camino principal (el ms corto hasta el final) Identificar un segundo camino Aadiendo alguna arista nueva pero tratando que sea el camino en el que menos se aaden Seguir identificando caminos hasta que no haya ms posibilidades 60 10/12 Criterios de cobertura Caminos 4- Determinar el conjunto de caminos independientes 1. 1 2 3 4 5 12 2. 1 2 6 7 9 12 3. 1 2 3 6 7 9 12 4. 1 2 3 4 6 7 9 12 5. 1 2 6 8 9 12 6. 1 2 6 7 8 9 12 7. 1 2 6 7 9 10 12 8. 1 2 6 7 9 10 11 12 61 11/12 Criterios de cobertura Caminos 5- Crear casos de prueba 1. 1 2 3 4 5 12 Camino 1 beca(20, FALSE, TRUE) 2. 1 2 6 7 9 12 Camino 2 beca(40, FALSE, TRUE) 3. 1 2 3 6 7 9 12 Camino 3 no es posible 4. 1 2 3 4 6 7 9 12 Camino 4 no es posible 5. 1 2 6 8 9 12 Camino 5 beca(40, TRUE, TRUE) 6. 1 2 6 7 8 9 12 Camino 6 beca(40, FALSE, FALSE) 7. 1 2 6 7 9 10 12 Camino 7 beca(100, FALSE, TRUE) 8. 1 2 6 7 9 10 11 12 Camino 8 beca(65, FALSE, TRUE) 12/12 62 Criterios de cobertura Bucles Los bucles son clave en la mayora de los algoritmos Requieren un tratamiento especial Instrucciones tpicas For While Do While 63 1/4 Criterios de cobertura Bucles Bucles simples Reglas No ejecutar el bucle ninguna vez Ejecutarlo una vez Ejecutarlo dos veces Ejecutarlo m veces, con m < n Ejecutarlo n-1, n y n+1 veces 64 2/4 Criterios de cobertura Bucles Bucles anidados Reglas Comenzar en el bucle ms interno Realizar pruebas de bucle simple Bucles externos valores mnimos Ir al siguiente nivel Realizar pruebas de bucle simple Bucles externos valores mnimos Bucles internos valores tpicos 65 3/4 Criterios de cobertura Bucles Bucles concatenados Reglas Si son independientes Igual que bucles simples Si no son independientes Igual que bucles anidados 66 4/4 Bucles no estructurados? Otros criterios de cobertura Mtodos Hilos Relacionales Arrays 67 Criterios de cobertura Basados en el flujo de datos Los programas son algo ms que flujos de control Tambin tienen datos Categoras de datos d defined, created, initialized k killed, undefined, released u used c used in a calculation p used in a predicate Tipos de prueba Esttica* Identifica anomalas Dinmica Ejecuta el cdigo, similar a las pruebas de flujo de control Por qu no es suficiente con la versin esttica? 68 Smbolos Qu ocurre Vlido o no vlido d Definir directamente No hay problema du Definir Usar No hay problema dk Definir Eliminar Problema potencial u Usar directamente Problema potencial ud Usar Definir No hay problema. Se usa y luego se redefine uk Usar Eliminar No hay problema k Eliminar directamente Problema potencial ku Eliminar Usar Problema potencial kd Eliminar Definir No hay problema dd Definir Definir Problema potencial. Se define dos veces seguidas uu Usar Usar No hay problema kk Eliminar Eliminar Problema potencial d Definir y no ms Problema potencial u Usar y no ms No hay problema k Eliminar y no ms No hay problema
Criterios de cobertura Basados en el flujo de datos. Anlisis esttico Posibles combinaciones entre pares Entornos de desarrollo 69 1/6 Criterios de cobertura Basados en el flujo de datos. Anlisis esttico 70 2/6 [ftp.ncsu.edu/pub/tech/2006/TR-2006-22.pdf /] Criterios de cobertura Basados en el flujo de datos. Anlisis esttico 71 3/6 Criterios de cobertura Basados en el flujo de datos. Anlisis esttico 72 4/6 Criterios de cobertura Basados en el flujo de datos. Anlisis esttico 73 5/6 Smbolos Qu ocurre Vlido o no vlido dk Definir Eliminar Problema potencial u Usar directamente Problema potencial k Eliminar directamente Problema potencial ku Eliminar Usar Problema potencial dd Definir Definir Problema potencial kk Eliminar Eliminar Problema potencial d Definir y no ms Problema potencial
Smbolos Pasos Conclusin dd 1-2-3 Sospechoso
Smbolos Qu ocurre Vlido o no vlido dk Definir Eliminar Problema potencial u Usar directamente Problema potencial k Eliminar directamente Problema potencial ku Eliminar Usar Problema potencial dd Definir Definir Problema potencial kk Eliminar Eliminar Problema potencial d Definir y no ms Problema potencial
Criterios de cobertura Basados en el flujo de datos. Anlisis esttico 74 6/6 Criterios de cobertura Basados en el flujo de datos. Anlisis dinmico Estrategias (criterios de cobertura) All-definition (AD) All-p-uses (APU) All-c-uses (ACU) All-p-uses / Some-c-uses (APU+C) All-c-uses / Some-p-uses (ACU+P) All-uses (AU) All-du paths (ADUP) 75 1/3 Caminos ADUP AU ACU+P ACU APU+C APU AD Decisiones Sentencias Criterios de cobertura Basados en el flujo de datos. Anlisis dinmico 76 2/3 Estrategia Variable Bill AD 1-2-10 3-4-5-6 6-7 8-10 9-10 APU 1-2-3-4-5-6-7 3-4-5-6-7 6-7 ACU 1-2-10 3-4-5-6 3-4-5-9 3-4-10 6-7-8 6-7-10 8-10 9-10 APU+C (APU)+ 8-10 9-10 ACU+P (ACU) AU 3-4-5-6 6-7 6-7-8 8-10 3-4-5-9 ADUP (APU) + (ACU)+ (AU)
Criterios de cobertura Basados en el flujo de datos. Anlisis dinmico 77 3/3 Estrategia Variable Usage AD 0-1-2 APU 0-1-2 0-1-2-3-4 0-1-2-3-4-5 ACU 0-1-2-3-4-5-6 0-1-2-3-4-5-9 APU+C (APU) ACU+P (ACU) AU 0-1-2 0-1-2-3-4 0-1-2-3-4-5 0-1-2-3-4-5-6 0-1-2-3-4-5-9 ADUP (APU) + (ACU)+ (AU)
y ahora slo faltara hacer un caso de prueba para cada camino Criterios de cobertura Conjetura de errores 78 Diferencia respecto a los anteriores criterios Ponerse en la piel del desarrollador y del usuario 1- Crear una lista con errores comunes Clculos Manejo de colecciones de datos Manejo de ficheros Permisos de los usuarios Usabilidad Interfaces para otros sistemas Uniones y comparaciones de datos Bsquedas de datos 2- Crear los casos de prueba Principales preocupaciones Registros Informacin saliente Residuos Pruebas de caja gris 79 entrada salida TIPOS DE PRUEBAS Pruebas progresivas y regresivas 81 Pruebas progresivas Realizacin de pruebas para tratar de encontrar errores en partes nuevas de un software Pruebas regresivas Repeticin selectiva de pruebas para estudiar efectos adversos cuando se introducen cambios Probabilidad de introducir errores 50-80% Pruebas unitarias 82 Objetivo Probar un mdulo software de manera independiente Tcnica Caja blanca Caja negra Software para realizar este tipo de pruebas JUnit, NUnit, Un mdulo Es un bloque bsico de construccin Tiene una funcin independiente Puede ser probado por separado No suele tener ms de 500 lneas de cdigo Pruebas unitarias Algunos problemas que pueden detectar 83 1. Precedencia aritmtica incorrecta 2. Clculos incorrectos 3. Flujos de control no adecuados 4. Inicializaciones incorrectas 5. Falta de precisin 6. Representacin incorrecta de una expresin 7. Interfaces de entrada / salida 8. Estructuras de datos incorrectas 9. Tratamiento de errores equivocado Pruebas de integracin 84 Objetivo Verificar el correcto ensamblaje de los mdulos Asegurando que interactan correctamente Regresin Tcnica Caja negra Estrategias principales No incremental Incremental Pruebas de integracin Algunos problemas que pueden detectar 85 1. Problemas de configuracin 2. Problemas en mtodos 3. Llamadas a mtodos equivocados 4. Fallos en los parmetros 5. Mal uso de bases de datos y de ficheros 6. Fallos en la integridad de los datos 7. Fallos con polimorfismo 8. Problemas de memoria 9. Conflictos entre componentes 10. Mal uso de los recursos (memoria, disco, ) Pruebas de integracin Estrategia incremental ascendente 86 4 6 5 7 8 9 11 12 10 2 3 1 1/2 Mdulo principal Mdulos de bajo nivel Pruebas de integracin Estrategia incremental ascendente 87 4 6 5 7 8 9 11 12 10 Controlador 1 2 3 1 Controlador 2 Controlador 3 2/2 Pruebas de integracin Estrategia incremental descendente 88 4 6 5 7 8 9 11 12 10 2 3 1 Resguardo 1 Resguardo 2 Pruebas de integracin Integracin ascendente VS integracin descendente 89 Ventaja de la integracin descendente Se prueba primero el mdulo principal Ventaja de la integracin ascendente No se necesitan resguardos Los resguardos son ms complejos que los controladores Integracin mixta Pruebas de sistema 90 Objetivo Comprobar la integracin del sistema visto desde el punto de vista global Tcnica Caja negra Idealmente las hace un equipo independiente Se basan en la especificacin de requisitos Pruebas de sistema Diferentes pruebas 91 Funcionales Consiste en probar al sistema como un todo Se utiliza el software ya integrado Se basan principalmente en los casos de uso Generacin de los casos de prueba Se toma un caso de uso por su camino tpico y se generan los casos de prueba para pasarlo Lo mismo para otros caminos alternativos exitosos Lo mismo para los caminos que terminen en fracaso Se crean otros casos de prueba para situaciones imprevistas Ausencia de algn recurso Imposibilidad de acceder a recursos Equivocaciones de los usuarios Situaciones de medio ambiente 1/6 Pruebas de sistema Diferentes pruebas 92 Funcionales Ejemplo de caso de uso para guiar las pruebas funcionales Un usuario introduce su identificador y su clave y podra entrar en el sistema Mejor as: Un usuario introduce su identificador y su clave y entra en el sistema. Si el usuario no es el correcto, aparecer un mensaje advirtiendo que el usuario no est en el sistema. Si el usuario es correcto pero la clave no es correcta, aparecer un mensaje indicando que la clave no es correcta. Cuntos casos de prueba podran realizarse con este caso de uso? 2/6 Pruebas de sistema Diferentes pruebas 93 Humo Comprobar si el software funciona de manera preliminar y directa Carga Observar el comportamiento bajo una cantidad de peticiones esperada Seguridad Asegurar que la aplicacin es segura de acuerdo con sus necesidades 3/6 Pruebas de sistema Diferentes pruebas 94 Rendimiento Asegurar que el software cumple con los requisitos de rendimiento de acuerdo con las especificaciones Recursos Asegurar que el software no utiliza ms recursos de los requeridos (por ejemplo memoria RAM, procesador, disco duro, etc.) Configuracin Comprobar que el software funciona correctamente con otras configuraciones software / hardware 4/6 Pruebas de sistema Diferentes pruebas 95 Compatibilidad Asegurar que los requisitos de compatibilidad hacia atrs se cumplen y si los mtodos de actualizacin funcionan Instalacin Determinar si la instalacin y desinstalacin del software funciona correctamente en todos los casos Recuperacin Determinar si el software cumple con los requisitos de recuperacin ante fallos inesperados 5/6 Pruebas de sistema Diferentes pruebas 96 Disponibilidad / Servicio Comprobar que las condiciones de disponibilidad son las adecuadas Estrs Identificar las condiciones mximas en las que el software fallar en procesarlas dentro de un periodo de tiempo determinado Localizacin Probar que una aplicacin funciona despus de traducirla a otra cultura? Otros tipos de prueba de sistema Homologacin Interoperabilidad Solidez 6/6 Pruebas de implantacin 97 Objetivo Comprobar la correcta instalacin en el entorno objetivo Tcnica Caja negra Aspectos a tener en cuenta Recuperacin Seguridad Rendimiento Comunicaciones Pruebas de aceptacin 98 Objetivo Validar que un sistema cumple con lo esperado Permitir que el cliente acepte el sistema desde todos los puntos de vista contrato Tcnica Caja negra Lo ideal es que el cliente sea quien aporta los casos de prueba Recomendable hacerlas en el entorno objetivo Pruebas de usabilidad 99 Objetivo Encontrar problemas en las interfaces de usuario Tcnica Caja negra Suelen realizarse muy pronto en el ciclo de desarrollo Aspectos a tener en cuenta Accesibilidad Calidad de respuesta Eficiencia Comprensibilidad Mtricas Exactitud Tiempo Recuerdo Respuesta emocional Pruebas Alfa y Beta 100 Se emplean cuando el software no se realiza para un cliente determinado Alfa Personas que adoptan el rol de usuario final Pertenecen a la organizacin que desarroll el software Beta Subconjunto seleccionado (o no) de los usuarios reales No pertenecen a la organizacin La motivacin es importante Regresivas o progresivas? Alfa vs Beta Qu problema tienen las pruebas Beta? HERRAMIENTAS JUnit 102 http://www.junit.org/ Es el estndar de facto para pruebas unitarias Tambin hay NUnit, CppUnit, PyUnit, Muy extendidas Eclipse, Netbeans, Ciclo de vida Preparar Ejecutar Evaluar Limpiar Casos de prueba 103 Es la unidad mnima de trabajo de JUnit Extiende junit.framework.TestCase publicvoid testNAME() public void setUp() public void tearDown() CONSEJO: Poner las pruebas en una carpeta diferente a la del cdigo pero en el mismo paquete que la clase a probar. As se podr acceder a mtodos y atributos protected Casos de prueba a partir de JUnit 4 104 A partir de JUnit 4 se soportan anotaciones No hace falta extender ninguna clase No hace falta poner nombres fijos a los mtodos Anotacin Parmetros Empleo @After Ninguno Mtodo que se ejecuta despus de cada mtodo de prueba @AfterClass Ninguno Mtodo que se ejecuta despus de todos los mtodos @Test y de todos los @After @Before Ninguno Mtodo que se ejecuta antes de cada mtodo de prueba @BeforeClass Ninguno Mtodo que se ejecuta antes de todos los mtodos @Test y de todos los @Before @Ignore Un String opcional Mtodo para temporalmente decirle a JUnit que ignore un mtodo de prueba @Parameters Ninguno Mtodo que devuelve una coleccin de objetos. stos a su vez son pasados al constructor @RunWith Una Class Mtodo que sirve para especificar cambios respecto a qu tipo de ejecucin se llevar a cabo @SuiteClasses Un array de Class Mtodo que sirve para especificar, mediante una anotacin, los TestCases que se van a probar en una agrupacin de prueba (TestSuite) @Test expected (opcional) timeout (opcional) Mtodo de pruebas. expected sirve para especificar una excepcin esperada. timeout sirve para especificar el tiempo (en ms) mximo permitido de ejecucin
Anotaciones 105 Permiten probar cualquier clase (POJO, Plain Old Java Object) Garantas de orden Afirmacin Para qu sirve assertNull(Object x) Valida si x es null assertNotNull(Object x) Valida si x no es null assertTrue(boolean x) Valida si x es true assertFalse(boolean x) Valida si x es false assertEquals(Object x, Object y) Valida si x e y son iguales. Utiliza el mtodo de Java equals(Object obj1, Object obj2) assertSame(Object x, Object y) Valida si x e y son iguales. Utiliza el operador == assertNotSame(Object x, Object y) Valida si x e y no son iguales. Utiliza el operador == fail() Falla un test de manera programtica
Asserts 106 Un Assert es una Afirmacin que hace alguien Si se valida la afirmacin el mtodo de test pasa la prueba Con que slo una de las afirmaciones no se cumpla el mtodo de test NO pasa la prueba Ejemplo de uso de Asserts 107 Botn Derecho Run As JUnit Test Conjuntos de pruebas (SuiteCase) 108 Es una coleccin de casos de prueba (TestCase) Sirve para clasificarlos EasyMock 109 http://easymock.org/ Qu es un Mock Object? Es un objeto que sirve para emular el comportamiento de otro Dnde viene bien? Ciclo de vida Tipos de objetos Mock Regular si se espera y no se llama o si se llama sin esperarse Nice si se espera y no se llama Strict si se espera y no se llama o si se llama sin esperarse. Importa el orden Crear Grabar Reproducir Verificar Crear objetos Mock 110 Creacin de objetos Mock directa Los objetos Mock y su validacin son independientes EasyMock.createMock(myInterface.class) EasyMock.createNiceMock(myInterface.class) EasyMock.createStrictMock(myInterface.class) Creacin de objetos Mock mediante un control Los objetos Mock estn relacionados a travs del control Grabar el comportamiento en objetos Mock 111 Mtodos que devuelven void Mtodos que no devuelven void Mtodos que lanzan excepciones .atLeastOnce() .times(int min, int max) .anyTimes() Reproducir y validar el comportamiento en objetos Mock 112 Falta, reproducir el comportamiento grabado y validar que todos los mtodos se han llamado las veces oportunas Qu pasa si.. Hacemos una llamada ms al mtodo sumar? Y al restar? Si utilizamos createNiceMocky hacemos una llamada ms al mtodo sumar? Si utilizamos createNiceMock y quitamos la llamada al mtodo restar? Si utilizamos createStrictMock? Preparacin para reproducir Reproducciones Validacin CodeCover 113 http://www.codecover.org/ Cobertura de cdigo aplicacin Java en Eclipse aspecto de la aplicacin en funcionamiento Uso de la herramienta Varias formas de trabajo 1- activar CodeCover 2- seleccionar las clases a estudiar 3- ejecutar la aplicacin con CodeCover 114 Mtricas de CodeCover 1. Statement Coverage 2. BranchCoverage 3. TermCoverage 4. LoopCoverage 5. Question mark operator (?) Coverage 6. SynchronizedCoverage 115 Informes generados 1/3 116 Informes generados 2/3 117 Informes generados 3/3 118 JMeter 119 http://jakarta.apache.org/jmeter/ Pruebas de carga, de estrs, de rendimiento Diferentes protocolos Plan de Test Se pueden ir aadiendo elementos de forma jerrquica Elementos Thread groups Timers Listeners Target Web Page Otras herramientas 120 xUnit (NUnit, CUnit, CppUnit, PHPUnit, PyUnit, SUnit) DbUnit, HttpUnit, EJB3Unit, JUnitPerf, NoUnit TestNG, Cactus SilkTest, Selenium, Fitnesse, Fest JCrasher, Eclat, Symstra, TestGen4J JTest, CodePro JDepend, CheckStyle Cobertura, Jester, Emma, Jumble, Clover jMock, jMockit Dumbster Findbugs, JLint JProfiler JBench Casos prcticos 121 Clases de equivalencia y valores lmite. Se ha creado un subsistema que comprueba si un identificador es correcto. Un identificador tiene las siguientes caractersticas: Entre 4 y 20 caracteres Letras vlidas (a-z, A-Z) Dgitos vlidos (2-8) Caracteres especiales vlidos: % y Como mnimo tendr 2 letras (mnimo 1 en maysculas), 1 carcter especial y 1 dgito El primer y el ltimo carcter son letras No emplea las palabras reservadas del lenguaje Se pide crear casos de prueba adecuados para el sistema. Matrices ortogonales. Se ha creado un software que admite como entrada 4 parmetros (PAR1, PAR2, PAR3, y PAR4). El software se ejecuta de la siguiente forma: >> run.exe PAR1 PAR2 PAR3 PAR4. PAR1 puede tener como valores a b o c, PAR2 puede tener como valores c, d o f, PAR3 puede tener como valores g, h, i, y PAR4 puede tener como valores j, k, o simplemente estar vacio. Se pide crear casos de prueba adecuados para el sistema. Casos prcticos 122 Grafo causa - efecto. Se ha creado un software que admite como entrada un nico parmetro (PAR1). El software se ejecuta de la siguiente forma: >> run.exe PAR1. PAR1 es un identificador de un libro que est formado por lo siguiente: Un primer bloque, que es una C (de comedia), una A (de accin), o una T (de tcnico) Un segundo bloque, es un nmero del 0 al 99999, referenciando al libro Ejemplos: C239, A0, T9911 Si el identificador es correcto, entonces se muestra el libro. Si el primer bloque no es correcto, entonces se muestra un mensaje indicando que el cdigo no ha sido correcto. Si el segundo bloque no es correcto, entonces se muestra un mensaje indicando que el nmero no ha sido correcto Se pide crear casos de prueba adecuados para el sistema Casos prcticos 123 En funcin del cdigo anterior, crear casos de prueba para lo siguiente: Cobertura de caminos Cobertura de sentencias, decisiones, condiciones, decisiones-condiciones, condiciones mltiple Cobertura del flujo de datos Casos prcticos 124 En funcin del cdigo, crear casos de prueba para lo siguiente: Cobertura de caminos Cobertura de sentencias, decisiones, condiciones, decisiones-condiciones, condiciones mltiple Cobertura del flujo de datos Bibliografa 125