Contenidos
p p p p p p
Objetivos de la prueba Importancia de la prueba Principios de la prueba El proceso de prueba Mtodos de diseo de casos de prueba Enfoque estructural Prueba del camino bsico - Notacin de grafo de flujo - Complejidad ciclomtica - Derivacin de los casos de prueba Prueba de bucles Enfoque funcional Particiones o clases de equivalencia Anlisis de Valores Lmite (AVL)
Prueba de interfaces grficas de usuario Estrategias de prueba del software Relacin entre productos de desarrollo y niveles de prueba Organizacin para la prueba del software Prueba de unidad Prueba de integracin Integracin incremental descendente Integracin incremental ascendente Mdulos crticos Prueba de aceptacin
(Piattini et al. 96) Captulo 12 (Pressman 02) Captulos 17 y 18 (MAP 95) Ministerio de Administraciones Pblicas. Gua de Tcnicas de Mtrica y Gua de Referencia. v.2.1. 1995
Actividad de Valdacin y Verificacin (V&V) que implica la ejecucin del cdigo. Hay otras actividades de V&V en las que no se ejecuta el cdigo: Walkthroughs y pruebas formales. No slo se prueba el cdigo: tb. documentacin y ayuda.
Mdulo 3. Tema 14: Tcnicas de Prueba del Software 4
Principios de la prueba
(Davis 95, Myers 79)
p
A todas las pruebas se les debera poder hacer un seguimiento hasta los requisitos de los clientes (trazabilidad). Las pruebas deberan planificarse antes de que empiecen. El Principio de Pareto es aplicable a la prueba del software: La mayor parte de los defectos encontrados pertenece slo a 2 3 tipos de defectos, de manera que si se eliminan las causas que los provocan desaparecera la mayor parte de los defectos Las pruebas deberan empezar por lo pequeo y progresar hacia lo grande. No son posibles las pruebas exhaustivas. Para ser ms efectivas, las pruebas deberan ser conducidas por un equipo independiente. Se deben evitar los casos de prueba no documentados ni diseados con cuidado. No deben realizarse planes de prueba suponiendo que prcticament e no hay defectos en los programas y, por tanto, dedicando pocos recursos a las pruebas.
Ingeniera del Software (3 I.T.I.S., I.T.I.G.) Mdulo 3. Tema 14: Tcnicas de Prueba del Software 6
p p
p p p
p p
El proceso de prueba
Seguridad total: prueba exhaustiva (no practicable) Objetivo: conseguir confianza aceptable en que se encontrarn todos los defectos existentes, sin consumir una cantidad excesiva de recursos. Disear las pruebas que tengan la mayor probabilidad de encontrar el mayor nmero de errores con la mnima cantidad de esfuerzo y tiempo posible.
11
12
13
Objetivos:
1. Obtener una medida de la complejidad lgica de un diseo procedimental Complejidad ciclomtica de Mc Cabe 2. Usar esa medida como gua para la definicin de un conjunto bsico de caminos de ejecucin
p
Los casos de prueba obtenidos del conjunto bsico garantizan que durante la prueba se ejecuta al menos una vez cada sentencia del programa. Se puede automatizar.
14
- El flujo de control de un programa puede representarse mediante un Grafo de Flujo. -Cada nodo del grafo corresponde a una o ms sentencias de cdigo fuente. Cada nodo que contiene una condicin se denomina nodo predicado, y se caracteriza porque 2 o mas arstas emergen de l. - Cualquier representacin del diseo procedural se puede traducir a un grafo de flujo
15
x x
Secuencia
Si x entonces...
Mientras x hacer...
16
17
18
1
2,3
2 3 11 7 9 6 8 10
11 6 4,5 8 9 10
4 5
19
Camino: secuencia de sentencias encadenadas desde la sentencia inicial del programa hasta su sentencia final. Camino de prueba: un camino que atraviesa, como mximo, una vez el interior de cada bucle que encuentra.
Algunos autores hablan de pasar 3 veces: una sin entrar en su interior otra entrando una vez otra entrando dos veces
Camino linealmente independiente de otros: introduce por lo menos un nuevo conjunto de sentencias de proceso o una nueva condicin
en trminos del grafo de flujo, introduce una nueva arista que no haya sido recorrida anteriormente a la definicin del camino
Ingeniera del Software (3 I.T.I.S., I.T.I.G.) Mdulo 3. Tema 14: Tcnicas de Prueba del Software 20
21
- Si se disean casos de prueba que cubran los caminos bsicos, se garantiza la ejecucin de cada sentencia al menos una vez y la prueba de cada condicin (sus dos posibilidades, verdadera o Falsa) - El conjunto bsico para un grafo dado puede no ser nico - Cuando aparecen condiciones lgicas compuestas la confeccin del grafo es ms complejo
22
23
Complejidad Ciclomtica
p
Nmero mximo de caminos independientes? Complejidad ciclomtica de Mc Cabe, V(G). Tres formas de calcularla: V(G) = A - N + 2 donde A: n de arcos del grafo N: n de nodos V(G) = R donde R: n de regiones del grafo
V(G) = P +1 donde P: n de nodos predicado (Case of 1 ... N cuenta como n-1 en V(G)= c+1)
Ingeniera del Software (3 I.T.I.S., I.T.I.G.) Mdulo 3. Tema 14: Tcnicas de Prueba del Software 24
25
26
Numerar los nodos del grafo secuencialmente Describir el conjunto de caminos independientes (subrayar aristas que los hacen independientes de los anteriores)
1-2-11 1-2-3 -4-... ...
Algunos caminos no se pueden ejecutar solos y requieren la concatenacin con otro Algunos caminos pueden ser imposibles seleccionar otros A partir de los caminos, analizar el cdigo para ver qu datos de entrada son necesarios, y qu salida se espera
Ingeniera del Software (3 I.T.I.S., I.T.I.G.) Mdulo 3. Tema 14: Tcnicas de Prueba del Software 27
28
29
30
Ejemplo
31
Ejemplo
32
OR AND
Ejemplo
33
Ejemplo
34
La prueba del camino bsico es una tcnica que se puede automatizar mediante la estructura de datos denominada Matriz de Grafo. Matriz de Grafo:
Matriz Cuadrada. Tamao = N de nodos del grafo de flujo. Filas y columnas corresponden a nodos. Las entradas de la matriz corresponden a aristas (conexiones entre nodos).
35
Ejemplo:
1
a
1 1
3 a
e b
3
f c
2 3 d c g e b f
d
4 5
2
Matriz del Grafo Grafo de Flujo
Ingeniera del Software (3 I.T.I.S., I.T.I.G.) Mdulo 3. Tema 14: Tcnicas de Prueba del Software 36
Peso de enlace: Nos da informacin adicional sobre el flujo de control. Se aade a cada entrada de la matriz. En su forma ms sencilla toma dos valores:
1: Si existe conexin. 0: Si no existe conexin.
37
Ejemplo:
1 1 2 3 4 5
3 a
5 1 2
1 0 0 0 0 0
2 0 0 1 1 1
3 1 0 0 0 1
4 0 0 1 0 0
5 0 0 0 1 0
d c g e
b f
3 4 5
Matriz de Conexiones
38
Cada fila con dos o mas entradas representa un Nodo Predicado. A partir de la matriz de conexiones se puede calcular el conjunt o bsico de caminos linealmente independientes.
1 1 2 3 4 5 0 0 0 0 0
2 0 0 1 1 1
3 1 0 0 0 1
4 0 0 1 0 0
5 0 0 0 1 0
Conexiones 11=0
La tcnica de prueba del camino bsico es una de las muchas existentes para las pruebas de la estructura de control. Aunque sea alta la efectividad de la prueba del camino bsico, no nos asegura completamente la correccin del software. Veremos a continuacin otras variantes para probar la estructura de control. Estas variantes amplian el abanico de pruebas mejorando la fiabilidad de las pruebas de caja blanca.
40
Es un mtodo de diseo de casos de prueba que ejercita las condiciones lgicas contenidas en el mdulo del programa. Los tipos de errores que pueden aparecer en una condicin son las siguientes:
Existe un error en un operador lgico (sobra, falta o no es el que corresponde) Existe un error en el operador relacional (en el operador de comparacin de igualdad, menor, mayor, etc). Existe un error en una expresin aritmtica
41
El mtodo de la prueba de condiciones se centra en la prueba de cada una de las condiciones del programa.
Pruebas de ramificaciones: Es las ms sencilla. Prueba al menos una vez cada una de las condiciones simples (rama verdadera y falsa) de una condicin compuesta. Prueba de dominio: Para cada expresin relacional (E1 <operador-relacional> E2), se requieren tres pruebas para comprobar que el valor de E1 es mayor, menor o igual que E2 respectivamente.
Para una expresin lgica con n variables, hay que realizar las 2n pruebas posibles (n >0). Slo es prctica cuando el valor de n es pequeo.
42
Las estructuras de bucles complejas son uno de los lugares mas propensos a errores. La prueba de bucles es una tcnica de prueba de caja blanca que se centra exclusivamente en la validez de las construcciones de bucles. Se definen 4 clases de bucles diferentes:
Bucles simples. Bucles concatenados. Bucles anidados. Bucles no estructurados.
43
44
A los bucles simples se les aplica el siguiente conjunto de pruebas, siendo n el nmero mximo de iteraciones permitidas por el bucle: Pasar por alto totalmente el bucle Pasar una sola vez por el bucle Pasar dos veces por el bucle Hacer m pasos por el bucle con m<n Hacer n-1, n y n+1 pasos por el bucle
45
46
47
Tambin se denominan Pruebas de Comportamiento. Se centran en los requisitos funcionales del software. Estudia la especificacin del software, las funciones que debe realizar, las entradas y las salidas. La prueba de caja negra trata de encontrar errores de las siguientes categoras:
Funciones incorrectas o ausentes. Errores de interfaz. Errores en estructuras de datos o en accesos a bases de datos externas. Errores de rendimiento. Errores de inicializacin y de terminacin.
48
49
La particin equivalente es un mtodo que divide el campo de ent rada de un programa en clases de datos a partir de los cuales se pueden derivar casos de prueba La particin equivalente se enfoca pues a definir casos de prueba para descubrir clases de errores, reduciendo as el nmero total de casos de prueba que hay que desarrollar. Un caso de prueba ideal es aquel que descubre de forma inmediata una clase de errores, que de otro modo requeriran la ejecucin de muchos casos antes de detectar el error genrico. Una clase de equivalencia representa un conjunto de estados vlidos o no vlidos para condiciones de entrada. Se define una condicin de entrada (valor numrico especfico, rango de valores, conjunto de valores relacionados o condicin lgica).
Ingeniera del Software (3 I.T.I.S., I.T.I.G.) Mdulo 3. Tema 14: Tcnicas de Prueba del Software 50
3.
4.
51
2.
3.
Si se especifica una situacin del tipo debe ser o booleana, se identifica una clase vlida y una no vlida
(vlida) El primer carcter es una letra; (no vlida) (...) no es una letra (vlida) X es un nmero; (no vlida) X no es un nmero
4.
Si se especifica un conjunto de valores admitidos, y el programa trata de forma distinta cada uno de ellos, se crea una clase vlida por cada valor, y una no vlida
Tres tipos de inmuebles: (vlidas) pisos, chalets, locales comerciales; (no vlida) jkll
52
53
Ejemplo
Un programa toma como entrada un fichero cuyo formato de registro es el siguiente: Nmero-empleado es un campo de nmeros enteros positivos de 3 dgitos (excluido el 000). Nombre-empleado es un campo alfanumrico de 10 caracteres. Meses-Trabajo es un campo que indica el nmero de meses que lleva trabajando el empleado; es un entero positivo (incluye el 000) de 3 dgitos. Directivo es un campo de un solo carcter que puede ser + para indicar que el empleado es un directivo y - para indicar que no lo es.
El programa asigna una prima (que se imprime en un listado) a cada empleado segn las normas siguientes: P1 a los directivos con, al menos, 12 meses de antigedad. P2 a los no directivos con, al menos, 12 meses de antigedad, P3 a los directivos sin un mnimo de 12 meses de antigedad, P4 a los no directivos sin un mnimo de 12 meses de antigedad
Ingeniera del Software (3 I.T.I.S., I.T.I.G.) Mdulo 3. Tema 14: Tcnicas de Prueba del Software 54
Ejemplo
Se pide: Crear una tabla de clases de equivalencia (las clases debern ser numeradas) en la que se indiquen las siguientes columnas en cada fila:
- Condicin de entrada que se analiza - Clases vlidas y - Clases no vlidas que se generan para la condicin
55
Ejemplo
p p p p p p p p p p p p p p p p
VLIDOS Regla: Cada caso vlido debe cubrir tantas clases vlidas como sea posible Entrada: 123, FERNNDEZ, 9, + (1)(5)(8)(13) 456, DOMNGUEZ, 13, - (1)(5)(9)(14) NO VLIDOS Regla: cada caso no vlido debe cubrir una y slo una clase no vlida 000, GUMERSINDO, 14, + (2) (5) (9) (13) 1024, MINOTAUROS, 16, (3) (5) (9) (14) ABC, SEBASTIANO, 8, + (4) (5) (8) (13) 123, COBOS, 6, + (1) (6) (8) (13) 123, TORRECEBALLOS, 3, + (1) (7) (8) (13) 123, MARGARITOS, -1, + (1) (5) (10) (13) 123, MARGARITOS, 1024, (1) (5) (11) (14) 123, MARGARITOS, ABC, (1) (5) (12) (14) 123, MARGARITOS, 13, * (1)(5)(9)(15) Salida: P4 P2
56
Los casos de prueba que exploran las condiciones lmite producen mejores resultados Los defectos del software se acumulan en las situaciones lmite Diferencias de AVL con particiones de equivalencia:
No se elige cualquier elemento de la clase de equivalencia, sino uno o ms de manera que los mrgenes se sometan a prueba. Los casos de prueba se generan considerando tambin el espacio de salida.
57
2.
3. 4.
58
2.
Si una condicin de entrada especifica un nmero de valores, se deben desarrollar casos de prueba que ejerciten los valores mximo y mnimo, uno ms el mximo y uno menos el mnimo
3.
Se abrirn las ventanas mediante rdenes basadas en el teclado o en un men? Se puede ajustar el tamao, mover y desplegar la ventana? Se regenera adecuadamente cuando se escribe y se vuelve a abrir? ...
Entrada de datos:
Conclusiones
p
La aplicacin de casos de pruebas apropiados es esencial para la validacin y verificacin del sistema construido. Las pruebas normalmente deberan ocupar cerca del 40% del tiempo total de desarrollo de una aplicacin. An as, no puede asegurarse un 100% de fiabilidad para el sistema. En sistemas donde la fiabilidad y correccin del software es un aspecto crtico, las pruebas deben ser ms exhaustivas. En estos casos pueden aplicacarse tambin pruebas de comparacin. Las herramientas que reducen los tiempos de prueba son muy valiosas. Se pueden distinguir varias categoras de herramientas de prueba: analizadores estticos, auditores de cdigo, generadores de archivos de prueba, generadores de datos de prueba y controladores de prueba.
61
62
Requisitos de usuario Especificacin de requisitos Diseo modular Especificacin lgica del mdulo
Pruebas de aceptacin
Pruebas de sistema
Cdigo
Mdulo 3. Tema 14: Tcnicas de Prueba del Software 63
El responsable del desarrollo del SW es siempre responsable de probar las unidades del programa. Muchas veces tambin se encarga de la prueba de integracin. Cuando hay una arquitectura del sw. completa, debe entrar en juego un Grupo Independiente de Prueba (GIP), que garantice independencia (ha debido participar tambin en la especificacin). El GIP es ayudado por el desarrollador.
64
Prueba de unidad
Conductor
Interfaz Estructuras de datos locales Condiciones lmite Caminos independientes Caminos de manejo de errores
Resguardo
RESULTADOS
Ingeniera del Software (3 I.T.I.S., I.T.I.G.)
65
A menudo, se dice que est orientada a caja blanca, aunque se puede completar con caja negra Un enfoque ms realista:
1. 2. Disear un conjunto de pruebas de caja negra, basadas en la especificacin del mdulo Ejecutar las pruebas y comprobar la cobertura obtenida, usando una herramienta de pruebas:
Buscamos al menos C1 + C2 C1 Cobertura de sentencias C2 Cobertura de condicin
3.
66
Prueba de integracin
p p
ascendente Descendente
No 1. 2. -
incremental (Big-bang) Realizar todas las pruebas unitarias Realizar toda la integracin En este caso las pruebas unitarias no se solapan con las de integracin
67
Se empieza con el mdulo principal Se sustituyen los resguardos uno a uno Enfoques:
primero-en-profundidad primero-en-anchura Aunque a veces se puede retocar el enfoque...
- Conviene probar pronto los mdulos de E/S - Mdulos crticos
69
Tipos de resguardos
p
Mostrar un mensaje de traza Mostrar el parmetro pasado Devolver valor (de una tabla o archivo externo) Hacer una bsqueda en una tabla de un parmetro de entrada y devolver el parmetro de salida asociado
70
Prueba de regresin
p
Cada vez que el se aade un nuevo mdulo como parte de una prueba de integracin, el sw. cambia Estos cambios pueden producir errores con funciones que antes trabajaban perfectamente Las pruebas de regresin consisten en volver a ejecutar un subconjunto de las pruebas realizadas anteriormente, con el fin de asegurarse de que los cambios no han propagado efectos laterales no deseados Fuera de la prueba de integracin, las pruebas de regresin tambin se utilizan cuando cambia la configuracin del software p.ej. durante el mantenimiento correctivo
71
Ventajas:
Lo ms importante es probar el control cuanto antes
- Si la jerarqua est bien diseada, es lo que se hace con esta aproximacin
Inconvenientes:
Si se requiere un procesamiento no trivial en los niveles ms bajos de la jerarqua para probar los niveles superiores, qu se hace con los resguardos?
- Desarrollar resguardos con funciones limitadas esfuerzo++ - Retrasar las pruebas hasta que los resguardos sean sustituidos por mdulos reales - Integrar el sw. desde abajo integracin ascendente
72
2.
3. 4.
73
74
Ventajas:
No se necesitan resguardos
Inconvenientes:
Hay que escribir controladores (impulsores)
- Son menos complejos que los resguardos - Se pueden automatizar ms fcilmente
75
Se comienza en los mdulos superiores de forma descendente Simultneamente, se empieza de forma ascendente desde los mdulos inferiores Se contina hasta que ambas aproximaciones se encuentran en un nivel intermedio En la integracin ascendente,
si los dos niveles superiores de la estructura se prueban de forma descendente, se elimina la necesidad de muchos controladores
76
Mdulos crticos
p
77
Prueba de aceptacin
p
La realiza el usuario Si el SW se desarrolla como un producto que se va a usar por muchos usuarios, no es prctico realizar pruebas de aceptacin formales para cada uno de ellos:
pruebas alfa: en el lugar de desarrollo pero por un cliente. El desarrollador observa y registra los problemas y errores. pruebas beta: por los usuarios finales (o un conjunto limitado de ellos) en sus entornos de explotacin. El cliente registra los errores e informa al desarrollador.
78