Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PRUEBAS
Vicente García Díaz
garciavicente@uniovi.es
F-16 (1986)
Therac-25 (1985-1987)
Misil Patriot (1991)
Ariadne 5 (1996)
Mars Climate Orbiter (1999)
Multidata Software (2001)
Ubicación general
3
Son necesarias
¿Por qué hacer pruebas?
Desarrollos en cascada o iterativos…
Revisión
Inicio
Análisis Diseño Codificación Pruebas
operación
Prueba
Es un proceso crítico en el que un software o uno de sus
componentes se ejecuta en circunstancias previamente
planificadas con el objetivo básico de encontrar errores
Los resultados se observan, se guardan y se evalúan
Ciclo de prueba
Es una actividad compuesta:
Formar una idea de los resultados aceptables para
determinados valores de entrada
Se ejecuta el software dándole los valores determinados en
unas condiciones específicas
Se observan los resultados
Se comparan los resultados con la idea inicial
3/3
Conceptos básicos
6
Caso de prueba
Es un escenario concreto de una prueba:
Identificador
Componente a probar
Condiciones de entrada
Datos de entrada
Salida esperada
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
Deberían:
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 deberían:
Ser redundantes
Ser demasiado complejas
Dar por supuesto que un software no tendrá defectos
Falsos mitos sobre pruebas
10
Fallos encontrados
Desarrollo Depurar Evaluar
Resultados esperados
Informes
Analizar
Identificación
Enfoque
Informe de incidencias
Criterio de suspensión
Productos a entregar
Tareas a realizar
Necesidades ambientales
Responsabilidades
Personal necesario
Calendario
Riesgos
Diseño de la prueba
13
Corregir el defecto
Eliminación de causas
Espacio conceptual
15
Prueba
* 1..n
Caso de prueba Componente Corrección
* *
Controlador
Resguardo
* *
* * * *
Fallo Estado erróneo Defecto
Manejo de
defectos
Revisión
Pruebas Depuración
Pruebas Pruebas de
...
unitarias integración
[Bruegge and Dutoit, 04]
Estándares relacionados con pruebas
17
Pruebas de integración
Pruebas de sistema
Pruebas de implantación
Pruebas alfa y beta
Pruebas de aceptación
TÉCNICAS DE PRUEBAS
20 Pruebas de caja negra
Principales preocupaciones
Funcionalidad
Entradas
Salidas entrada salida
funcionalidad
1/7
Criterios de cobertura
Particiones / Clases de equivalencia
21
Modelos (criterios)
Consiste en reducir el número de casos de prueba:
¿Cómo?
Dividiéndolos en conjuntos de datos equivalentes
Dos fases
1. Identificar clases de equivalencia
Es un conjunto de datos de entrada equivalentes
Clases de equivalencia válidas valores esperados
Clases de equivalencia no válidas valores no esperados
Se obtienen de las especificaciones de entrada
2. Identificar casos de prueba
2/7
Criterios de cobertura
Particiones de equivalencia
22
[http://www.uv.mx/jfernandez/]
6/7
Criterios de cobertura
Particiones de equivalencia
26
Salidas efectos
c e c e c1 e c1 e
c2 c2
Si c e Si !c e
OR AND
2/3
Criterios de cobertura
Grafo Causa – Efecto
35
Ejemplo
“Se quiere sacar dinero de un cajero”
Causas (condiciones a cumplir)
1- La tarjeta es válida
2- La clave de usuario es correcta
3- Se pasa el nº máximo
4- Hay dinero disponible
Efectos
50- Sale el dinero
51- Rechaza la tarjeta
52- Pregunta otra clave
53- Rechaza la operación
3/3
Criterios de cobertura
Grafo Causa – Efecto
36
Ejemplo
Tabla de decisión
Cuidado, es un OR
Causas Regla 1 Regla 2 Regla 3 Regla 4
1 La tarjeta es válida NO SI SI -
2 Clave correcta - SI NO -
3 Sobrepasa el nº máximo - - NO SI
4 Hay dinero disponible - SI - NO
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
Casos de prueba
Una por cada columna
1/6
Criterios de cobertura
Matrices ortogonales
37
¿Qué son?
Matrices en las que si se selecciona 2 columnas
cualesquiera, en dichas columnas estarán todas las
combinaciones posibles de pares, sin repetirse
ninguna
Estudios empíricos
2/6
Criterios de cobertura
Matrices ortogonales
38
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
Combinaciones: 3 x 3 x 3 x 3 = 81
3/6
Criterios de cobertura
Matrices ortogonales
39
Combinaciones totales 3 x 3 x 3 x 3 = 81
4/6
Criterios de cobertura
Matrices ortogonales
40
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
5/6
Criterios de cobertura
Matrices ortogonales
Navegadores
41
1 IE 8
Es el proceso de:
Encontrar fragmentos del software no ejecutados
Ejemplos de cobertura
ajuste(1, 10, 0)
ajuste(1, 11, 15)
Criterios de cobertura
Decisiones
47
Decisiones vs Sentencias
Condiciones vs Decisiones
Condiciones vs Sentencias
Camino de prueba
Camino que atraviesa como máximo 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 dibujáramos como una grafo, se
correspondería con dibujar una nueva arista que no haya sido
recorrida anteriormente por otro camino
2/12
Criterios de cobertura
Caminos
52
2. Dibujar grafo
2- Dibujar grafo
Aristas. Líneas que
unen dos nodos
IF-ELSE
Regiones. Áreas
delimitadas por
false
aristas y nodos true
secuencia
5/12
Criterios de cobertura
Caminos
55
2- Dibujar grafo
WHILE DO-WHILE
true false
true
false
6/12
Criterios de cobertura
Caminos
56
2- Dibujar grafo
SWITCH IF múltiple
m
false true
low high
medium true
n
false
7/12
Criterios de cobertura
Caminos
57
2- Dibujar grafo 1
2 false
6
3
4 7 8
false
5
9 10
true
false
11
12
8/12
Criterios de cobertura
Caminos
58
V(G) = R
R Nº de regiones cerradas del grafo
V(G) = C + 1
C Nº de nodos de condición
V(G) = C + 1 = 7 + 1 = 8
R1
R3
R2
R4
R7
R5
R8 R6
Instrucciones típicas
For
While
Do While
2/4
Criterios de cobertura
Bucles
64
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
3/4
Criterios de cobertura
Bucles
65
Bucles anidados
Reglas
Comenzar en el bucle más interno
Realizar pruebas de bucle simple
Bucles externos valores mínimos
Ir al siguiente nivel
Realizar pruebas de bucle simple
Bucles externos valores mínimos
Bucles internos valores típicos
4/4
Criterios de cobertura
Bucles
66
Bucles concatenados
Reglas
Si son independientes
Igual que bucles simples
Si no son independientes
Igual que bucles anidados
¿Bucles no estructurados?
Otros criterios de cobertura
67
Métodos
Hilos
Relacionales
Arrays
Criterios de cobertura
Basados en el flujo de datos
68
[ftp.ncsu.edu/pub/tech/2006/TR-2006-22.pdf /]
3/6
Criterios de cobertura
Basados en el flujo de datos. Análisis estático
71
4/6
Criterios de cobertura
Basados en el flujo de datos. Análisis estático
72
5/6
Criterios de cobertura
Basados en el flujo de datos. Análisis estático
73
Criterios de cobertura ˜u
˜k
ku
dd
Usar directamente
Eliminar directamente
Eliminar – Usar
Definir – Definir
Problema potencial
Problema potencial
Problema potencial
Problema potencial
Basados en el flujo de datos. Análisis estático kk Eliminar – Eliminar Problema potencial
d˜ Definir y no más Problema potencial
74
1/3
Criterios de cobertura
Basados en el flujo de datos. Análisis dinámico
75
All-c-uses (ACU)
ADUP
All-p-uses / Some-c-uses (APU+C)
All-c-uses / Some-p-uses (ACU+P) AU
All-uses (AU)
ACU+P APU+C
All-du paths (ADUP)
ACU AD APU
Decisiones
Sentencias
2/3
Criterios de cobertura
Basados en el flujo de datos. Análisis dinámico
76 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)
3/3
Criterios de cobertura
Basados en el flujo de datos. Análisis dinámico
77 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)
Pruebas progresivas
Realización de pruebas para tratar de encontrar
errores en partes nuevas de un software
Pruebas regresivas
Repetición selectiva de pruebas para estudiar
efectos adversos cuando se introducen cambios
Probabilidad de introducir errores 50-80%
Pruebas unitarias
82
Objetivo
Probar un módulo software de manera independiente
Técnica
Caja blanca
Caja negra
Software para realizar este tipo de pruebas
JUnit, NUnit, …
Un módulo
Es un bloque básico de construcción
Tiene una función independiente
Puede ser probado por separado
No suele tener más de 500 líneas de código
Pruebas unitarias
Algunos problemas que pueden detectar…
83
Objetivo
Verificar el correcto ensamblaje de los módulos
Asegurando que interactúan correctamente
Regresión
Técnica
Caja negra
Estrategias principales
No incremental
Incremental
Pruebas de integración
Algunos problemas que pueden detectar…
85
1. Problemas de configuración
2. Problemas en métodos
3. Llamadas a métodos equivocados
4. Fallos en los parámetros
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, …)
1/2
Pruebas de integración
Estrategia incremental ascendente
86
Módulo principal
1
2 3
7 8
4 5 11
9
6 12
10
2 3
7 8
4 5 11
9
6 12
10
Pruebas de integración
Estrategia incremental descendente
88
Resguardo 1 Resguardo 2
2 3
7 8
4 5 11
9
6 12
10
Pruebas de integración
Integración ascendente VS integración descendente
89
Integración mixta
Pruebas de sistema
90
Objetivo
Comprobar la integración del sistema visto desde el
punto de vista global
Técnica
Caja negra
requisitos
1/6
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
Generación de los casos de prueba
Se toma un caso de uso por su camino típico 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 algún recurso
Imposibilidad de acceder a recursos
Equivocaciones de los usuarios
Situaciones de medio ambiente
2/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 podría entrar
en el sistema”
Mejor así:
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 aplicación es segura de acuerdo con
sus necesidades
4/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 más recursos de
los requeridos (por ejemplo memoria RAM,
procesador, disco duro, etc.)
Configuración
Comprobar que el software funciona correctamente
con otras configuraciones software / hardware
5/6
Pruebas de sistema
Diferentes pruebas
95
Compatibilidad
Asegurar que los requisitos de compatibilidad hacia
atrás se cumplen y si los métodos de actualización
funcionan
Instalación
Determinar si la instalación y desinstalación del
software funciona correctamente en todos los casos
Recuperación
Determinar si el software cumple con los requisitos de
recuperación ante fallos inesperados
6/6
Pruebas de sistema
Diferentes pruebas
96
Disponibilidad / Servicio
Comprobar que las condiciones de disponibilidad son las
adecuadas
Estrés
Identificar las condiciones máximas en las que el software
fallará en procesarlas dentro de un periodo de tiempo
determinado
Localización
Probar que una aplicación funciona después de traducirla a otra
¿cultura?
Otros tipos de prueba de sistema
Homologación
Interoperabilidad
Solidez
Pruebas de implantación
97
Objetivo
Comprobar la correcta instalación en el entorno
objetivo
Técnica
Caja negra
Seguridad
Rendimiento
Comunicaciones
Pruebas de aceptación
98
Objetivo
Validar que un sistema cumple con lo esperado
Permitir que el cliente acepte el sistema
desde todos los puntos de vista
contrato
Técnica
Caja negra
Objetivo
Encontrar problemas en las interfaces de usuario
Técnica
Caja negra
Suelen realizarse muy pronto en el ciclo de desarrollo
Aspectos a tener en cuenta
Accesibilidad
Calidad de respuesta
Eficiencia
Comprensibilidad
Métricas
Exactitud
Tiempo
Recuerdo
Respuesta emocional
Pruebas Alfa y Beta
100
Muy extendidas
Eclipse, Netbeans, …
Ciclo de vida
Garantías de orden
Asserts
106
Ciclo de vida
EasyMock.createMock(myInterface.class)
EasyMock.createNiceMock(myInterface.class)
EasyMock.createStrictMock(myInterface.class)
Creación de objetos Mock mediante un control
Los objetos Mock están relacionados a través del control
Grabar el comportamiento en objetos Mock
111
Métodos que devuelven void
.anyTimes()
Reproducciones
Validación
Cobertura de código
aspecto de la aplicación en
funcionamiento
114
Uso de la herramienta
2- seleccionar las clases a
1- activar CodeCover estudiar
1. Statement Coverage
2. Branch Coverage
3. Term Coverage
4. Loop Coverage
5. Question mark operator (?) Coverage
6. Synchronized Coverage
1/3
Informes generados
116
2/3
Informes generados
117
3/3
Informes generados
118
JMeter http://jakarta.apache.org/jmeter/
119