Title: PRUEBAS1
1Pruebas de software
- Técnicas de prueba del software
- Estrategias de prueba del software
Autor Manuel Collado Fecha Marzo 2003
2Técnicas de prueba del software
- Contenido
- Conceptos. Objetivos. Casos de prueba
- Pruebas de caja blanca
- Pruebas de caja negra
3Pruebas concepto y objetivos
- Comprobación del software
- Demostración (proof) manual o semiautomática
- Inspección manual del código
- Prueba o ensayo (testing) ejecutar y ver
resultados - Caso de prueba ensayo individual
- Imposibilidad de pruebas exhaustivas
- Impracticable, demasiado costoso
- Imposible garantizar la ausencia de defectos
- Si se provocan fallos, seguro que hay defectos
- Si no aparecen fallos, puede que haya defectos, o
no
4Pruebas concepto y objetivos
- Objetivos de las pruebas
- Encontrar defectos en el software
- Una prueba tiene éxito si descubre un defecto
- Una prueba fracasa si hay defectos pero no los
descubre - Pruebas de Verificación
- Ver si cumple las especificaciones de diseño
- Pruebas de Validación
- Ver si cumple los requisitos del análisis
5Pruebas de caja blanca
- Concepto y terminología
- Pruebas en que se conoce el código a probar
- Caja blanca (clear box caja clara o
transparente) - Se procura ejercitar cada elemento del código
- Algunas clases de pruebas
- Pruebas de cubrimiento
- Pruebas de condiciones
- Pruebas de bucles
6Pruebas de cubrimiento
- Ejecutar al menos una vez cada sentencia
- Se necesitan varios casos de prueba
- Determinar posibles caminos independientes
- Cada condición debe cumplirse en un caso y en
otro no. En general, se necesitan tantos casos
como condiciones, más uno (número ciclomático) - Puede ser imposible cubrir el 100
- Código que nunca se ejecuta condiciones
imposibles - Ejemplo detección y notificación de errores
internos en un código sin errores
7Pruebas de condiciones
- Cumplir o no cada parte de cada condición
- Se necesitan varios casos de prueba
- Determinar expresiones simples en las condiciones
- Una por cada operando lógico o comparación
- Cada expresión simple debe cumplirse en un caso y
en otro no, siendo decisiva en el resultado - Puede ser imposible cubrir el 100
- Expresiones simples no independientes
8Pruebas de bucles
- Conseguir números de repeticiones especiales
- Bucles simples
- Repetir cero, una y dos veces
- Repetir un número medio (típico) de veces
- Repetir el máximo-1, máximo y máximo 1!
- Bucles anidados
- Repetir un número medio (típico) los bucles
internos, el mínimo los externos, y variar las
repeticiones del bucle intermedio ensayado. - Ensayarlo con cada nivel de anidamiento
9Pruebas de caja negra
- Concepto y terminología
- Pruebas en que se conoce sólo la interfaz
- Caja negra (black box caja opaca)
- Se procura ejercitar cada elemento de la interfaz
- Algunas clases de pruebas
- Cubrimiento ? invocar todas las funciones (100)
- Clases de equivalencia de datos
- Pruebas de valores límite
10Pruebas de clases de equivalencia
- Particiones de equivalencia
- Los datos se clasifican según las distinciones
visibles en la interfaz del programa. - Ejemplo EsPrimo Entero ? Booleano
- Clase 1 primo ? 2 (2, 3, 5, 7, 11, ...)
- Clase 2 no_primo ? 2 (4, 6, 8, 9, 10, ...)
- Clase 3 valores singulares (0, 1)
- Clase 4 no definido (-1, -2, ...)
- Casos de ensayo con datos de cada clase
11Pruebas de valores límite
- Complemento a las particiones de equivalencia
- Varios casos de prueba por cada partición
- Valores típicos, intermedios
- Valores primero y segundo del rango
- Valores penúltimo y último
- Valores vecinos fuera del rango (en otra
partición) - Motivación
- Los programadores se equivocan con más frecuencia
al tratar los valores en la frontera (Ej gt en
vez de ?)
12Estrategias de prueba del software
- Contenido
- Pruebas de unidades
- Pruebas de integración
- Pruebas de regresión
- Pruebas de validación
13Pruebas sin estrategia
- Motivación
- Las pruebas son incómodas
- La pruebas son aburridas
- Estoy seguro de que lo he codificado bien
- Probar todo junto, al final - Big-Bang
- Falla por todas partes
- Muy difícil diagnosticar las causas de los fallos
- Muy costoso de arreglar
- Resultado ? productos finales defectuosos
14Actividades de prueba de software
- Actividades de desarrollo
Análisis
Diseño
Codificación
Integración
Mantenimiento
15Pruebas de unidades
Programa de prueba
Módulo en pruebas
Reales o simulados (stubs)
Otros módulos
Otros módulos
16Pruebas de integración
Programa de prueba
Otros módulos
Módulo en pruebas
Reales, ya probados
Otros módulos
Otros módulos
17Pruebas de integración
Otros módulos
Reales, ya probados
Módulo en pruebas
simulados (stubs)
Otros módulos
Otros módulos
18Prueba unidades integración ascendente
Dibujar
Curva_C
Pluma
Papel
19Prueba unidades integración ascendente
P_Papel
Papel
20Prueba unidades integración ascendente
P_Pluma
P_Papel
Pluma
Papel
21Prueba unidades integración ascendente
P_Curva_C
Curva_C
P_Pluma
P_Papel
Pluma
Papel
22Prueba unidades integración ascendente
P_Curva_C
Dibujar
Curva_C
P_Pluma
P_Papel
Pluma
Papel
23Pruebas de regresión
- Repetir las pruebas tras cada modificación
- Repetir sólo pruebas de verificación
- Pruebas de unidades
- Pruebas de integración
- Conservar y actualizar los programas de prueba
- Usar herramientas de ejecución automática de las
pruebas
24Pruebas de validación
- Comprobar que se satisfacen los requisitos
- Se usan la mismas técnicas, pero con otro
objetivo - No hay programas de prueba, sino sólo el código
final de la aplicación - Se prueba el programa completo
- Uno o varios casos de prueba por cada requisito o
caso de uso especificado - Se prueba también rendimiento, capacidad, etc. (y
no sólo resultados correctos) - Pruebas alfa (desarrolladores) y beta (usuarios)