Este documento presenta diferentes técnicas de pruebas de software, incluyendo pruebas de caja blanca y negra, estrategias como pruebas de unidades, integración y validación. Explica conceptos como cubrimiento de código, clases de equivalencia de datos, y valores límite. Además, destaca la importancia de una estrategia de pruebas frente a un enfoque de "big bang" sin planificación.
2. PRUEBAS-2
Introducción a las pruebas del software
Técnicas de prueba del software
Contenido
Conceptos. Objetivos. Casos de prueba
Pruebas de caja blanca
Pruebas de caja negra
3. PRUEBAS-3
Introducción a las pruebas del software
Pruebas: 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
4. PRUEBAS-4
Introducción a las pruebas del software
Pruebas: 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
5. PRUEBAS-5
Introducción a las pruebas del software
Pruebas 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
6. PRUEBAS-6
Introducción a las pruebas del software
Pruebas 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
7. PRUEBAS-7
Introducción a las pruebas del software
Pruebas 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
8. PRUEBAS-8
Introducción a las pruebas del software
Pruebas 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
9. PRUEBAS-9
Introducción a las pruebas del software
Pruebas 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
10. PRUEBAS-
10
Introducción a las pruebas del software
Pruebas 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
11. PRUEBAS-
11
Introducción a las pruebas del software
Pruebas 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: > en vez de ≥)
12. PRUEBAS-
12
Introducción a las pruebas del software
Estrategias de prueba del software
Contenido
Pruebas de unidades
Pruebas de integración
Pruebas de regresión
Pruebas de validación
13. PRUEBAS-
13
Introducción a las pruebas del software
Pruebas 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
14. PRUEBAS-
14
Introducción a las pruebas del software
Actividades de prueba de software
Actividades de desarrollo
Análisis
Diseño
Codificación
Integración
Mantenimiento
P. unidades
Doc. Diseño
Cod. Módulos
P. integración
Cód. Completo
P. validación
Doc. Requisitos
15. PRUEBAS-
15
Introducción a las pruebas del software
Pruebas de unidades
Se prueba cada módulo
Módulo en
pruebas
Programa
de prueba
Otros
módulos
Otros
módulos
Reales o
simulados
(stubs)
16. PRUEBAS-
16
Introducción a las pruebas del software
Pruebas de integración
Integración ascendente
Módulo en
pruebas
Otros
módulos
Otros
módulos
Reales,
ya probados
Otros
módulos
Programa
de prueba
17. PRUEBAS-
17
Introducción a las pruebas del software
Pruebas de integración
Integración descendente
Módulo en
pruebas
Otros
módulos
Otros
módulos
Reales,
ya probados
Otros
módulos
simulados
(stubs)
18. PRUEBAS-
18
Introducción a las pruebas del software
Prueba unidades + integración ascendente
Dibujar
Curva_C
Pluma
Papel
Ejemplo
20. PRUEBAS-
20
Introducción a las pruebas del software
Prueba unidades + integración ascendente
Pluma
Papel
P_Papel
P_Pluma
Paso 2
21. PRUEBAS-
21
Introducción a las pruebas del software
Prueba unidades + integración ascendente
Curva_C
Pluma
Papel
P_Papel
P_Pluma
P_Curva_C
Paso 3
22. PRUEBAS-
22
Introducción a las pruebas del software
Prueba unidades + integración ascendente
Dibujar
Curva_C
Pluma
Papel
P_Papel
P_Pluma
P_Curva_C
Paso 4
23. PRUEBAS-
23
Introducción a las pruebas del software
Pruebas 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
24. PRUEBAS-
24
Introducción a las pruebas del software
Pruebas 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)