Title: Mtodos de Prueba del Software
 1Métodos de Prueba del Software
- Jaime Ramírez 
 - Unidad de Programación
 
  2Contenido
- Definiciones básicas 
 - Principios de la Prueba 
 - Tipos de Pruebas 
 - Métodos de Prueba 
 - Revisiones de Código 
 - Recomendaciones para el Proyecto 
 
  3Definiciones básicas
- Se llama Prueba del Software al proceso en el que 
se ejecuta un programa con el objetivo de 
detectar fallos (o errores).  - Un Defecto provoca un fallo. 
 - Se llama Depuración al proceso en el que se 
localiza el defecto que es la causa de un fallo, 
se determina la forma de corregirlo, se evalúa el 
efecto de la corrección y se lleva a cabo la 
corrección.  - Un Caso de Prueba se especifica indicando 
 - Alcance de la prueba. 
 - Entradas a proporcionar al programa. 
 - Salidas esperadas.
 
  4Principios de la Prueba (i)
- Un buen caso de prueba es el que tiene una alta 
probabilidad de mostrar un defecto no descubierto 
hasta entonces.  - Una prueba tiene éxito si descubre un defecto no 
detectado hasta entonces.  - No son posibles las pruebas exhaustivas. 
 -  se deben escoger los mejores casos de prueba. 
 -  no se puede asegurar la ausencia de defectos. 
 
  5Principios de la Prueba (ii)
- Principio de Pareto aplicado a la Prueba 
 -  El 80 de los defectos descubiertos durante las 
pruebas surgen al hacer un seguimiento del 20 de 
todos los módulos del programa 
-  Conviene aislar módulos sospechosos y probarlos 
concienzudamente. 
  6Principios de la Prueba (iii)
- Si las pruebas las realiza alguien ajeno a la 
implementación, serán más efectivas.  - La prueba se puede llevar hasta el 50 o 60 del 
esfuerzo dedicado al proyecto ? es muy importante 
seleccionar bien las pruebas que se van a 
realizar.  
  7Tipos de Pruebas (i)
- La Prueba Modular consiste en la prueba de cada 
módulo aislado del resto del sistema.  - Comprobación de las POSTs de los subprogramas. 
 - La Prueba de Integración se realiza a medida que 
los diferentes módulos del sistema se integran en 
el mismo. El objetivo fundamental de esta prueba 
es comprobar que las interfaces entre los 
distintos módulos son correctas.  - Corrección en los tipos y en la sintaxis en la 
invocación de procedimientos y funciones. 
  8Tipos de Pruebas (ii)
- Prueba de Integración (sigue...) 
 - Se pueden utilizar tres posibles estrategias de 
integración  - De arriba a abajo (top-down) Consiste en empezar 
la integración y la prueba por los módulos que 
están en los niveles superiores de abstracción, e 
integrar incrementalmente los niveles inferiores.  - De abajo a arriba (bottom-up) Consiste en 
empezar la integración y la prueba por los 
módulos que están en los niveles inferiores de 
abstracción, e integrar incrementalmente los 
niveles superiores.  - De big-bang Consiste en integrar y probar todo 
al mismo tiempo. 
  9Tipos de Pruebas (iii)Ejemplo Integración 
Bottom-Up
Dibujar
Curva_C
Pluma
Papel 
 10Tipos de Pruebas (iv)Ejemplo Integración 
Bottom-Up
P_Papel
Papel 
 11Tipos de Pruebas (v)Ejemplo Integración Bottom-Up
P_Pluma
P_Papel
Pluma
Papel 
 12Tipos de Pruebas (vi)Ejemplo Integración 
Bottom-Up
P_Curva_C
P_Pluma
Curva_C
P_Papel
P_Papel
Pluma
Pluma
Papel
Papel 
 13Tipos de Pruebas (vii)Ejemplo Integración 
Bottom-Up
P_Curva_C
Dibujar
Curva_C
P_Pluma
P_Papel
Pluma
Papel 
 14Tipos de Pruebas (y viii)
- La Prueba del Sistema se realiza cuando se han 
integrado todos los módulos, y su objetivo es 
comprobar que el sistema satisface los requisitos 
del usuario, tanto los funcionales como los no 
funcionales.  - La Prueba de Aceptación se realiza una vez que el 
sistema se ha implantado en su entorno real de 
funcionamiento, y su objetivo es demostrar al 
usuario que el sistema satisface sus necesidades.  
  15Métodos de Prueba
- Enfoque sistemático que ayuda a encontrar buenos 
conjuntos de casos de prueba, y a determinar su 
grado de cobertura.  - Dos enfoques alternativos 
 - Caja negra se comprueban las funcionalidades sin 
tener en cuenta la estructura interna.  - Caja blanca se comprueban los componentes 
internos (módulos, subprogramas, bucles, 
condiciones, etc.).  - Se deben combinar ambos enfoques 
 - Obtener un conjunto de casos de prueba 
razonablemente riguroso utilizando métodos de 
caja negra.  - Completar el conjunto con casos de prueba 
generados con métodos de caja blanca con la vista 
puesta en las partes del programa 
algorítmicamente más complejas. 
  16Métodos de Caja Negra
- La elección de los casos de prueba no se va a 
basar en el conocimiento que se tenga acerca de 
la estructura del objeto, sino en el conocimiento 
acerca de la funcionalidad deseada.  - Casi siempre el número de combinaciones de 
entradas (válidas o inválidas) es muy elevado ? 
Las pruebas de caja negra exhaustivas casi 
siempre son imposibles.  - Algunos métodos de caja negra son 
 - Clases de equivalencia. 
 - Análisis de valores límite. 
 - Grafo causa-efecto.
 
  17Métodos de Caja Negra(Clases de Equivalencia)
- Consiste en dividir las posibles entradas al 
sistema en clases de equivalencia, de tal forma 
que todos los miembros de una misma clase de 
equivalencia reciban el mismo tratamiento.  - La partición se puede realizar teniendo en cuenta 
condiciones que deben cumplir las entradas.  - Se diseñan los casos de prueba de manera que 
 - Abarquen el mayor números de clases. 
 - Dos casos no prueben las mismas clases. 
 
  18Métodos de Caja Negra(Ejemplo de C. de 
Equivalencia) 
 19Métodos de Caja Negra(Ejemplo de C. de 
Equivalencia)
- Casos válidos 
 -  300 Nomina Depósito (1) (5) (9) 
 -  400 Viajes Cheque (1) (5) (8) 
 -  500 Coches Pago Factura (1) (5) (10) 
 -  600 Comida Retirada Fondos (1) (5) (11) 
 -  Casos No Válidos 
 -  180 (2) 
 -  1032 (3) 
 -  XY (4) 
 -  ltCRgt (6) 
 -  Regalos (7) 
 -  Casa (12) 
 
  20Métodos de Caja Negra(Valores Límite)
- Los errores se esconden en los rincones y se 
aglomeran en los límites.  - Consiste en seleccionar como casos de prueba 
aquellos valores de entrada que caen en la 
frontera de las clases de equivalencia (justo a 
un lado, justo al otro y justo en la frontera).  - Este método complementa al de las clases de 
equivalencia.  
  21Métodos de Caja Negra(Grafo Causa-Efecto)
- Consiste en crear un grafo causa/efecto a partir 
de las especificaciones, y seleccionar 
suficientes casos de prueba como para asegurar la 
cobertura del grafo.  - Se llama causas a las características de los 
datos de entrada.  - Los efectos son las clases de salidas que puede 
proporcionar el programa.  
  22Métodos de Caja Blanca o Transparente
- El programa que se desea probar se ve como una 
caja transparente ?  - La elección de los casos de prueba se va a basar 
en el conocimiento que se tenga acerca de la 
estructura del programa.  - Dependiendo del grado de cobertura que se desea 
lograr (ordenados de menos a más exhaustivos)  - Cobertura de sentencias. 
 - Cobertura de decisiones. 
 - Cobertura de condiciones. 
 - Cobertura de decisiones/condiciones. 
 - Cobertura de condiciones múltiples. 
 - Cobertura de caminos.
 
  23Métodos de Caja Blanca(Cobertura de Camino 
Básico)
- La cobertura de caminos con bucles es 
impracticable.  - Aprox. factible a la cobertura de caminos C. de 
camino básico.  - Todo programa se puede representar mediante un 
grafo de flujo de control, donde cada nodo 
representa una condición o una secuencia de 
sentencias.  - Se deben diseñar los casos de prueba necesarios 
para cubrir todos los caminos independientes.  - Un camino independiente se diferencia de los 
otros en al menos una sentencia o en una 
condición (arista).  - Caminos  Aristas  nodos  2  Regiones
 
  24Métodos de Caja Blanca(Ejemplo de C. de Camino 
Básico)
- 1 Enc  False 
 - 2 I  1 
 - 3 while (not Enc) 
 - 4 and then (IltN) loop 
 - 5 if V(I)  Elem 
 -  then 
 - 6 Enc  True 
 -  else 
 - 7 I  I  1 
 -  end if 
 - 8 end loop 
 - 9 FIN
 
6
1, 2
3
4
5
8
9
7
- Caminos independientes 
 - 1-2-3-9 (imposible!) 
 - 1-2-3-4-9 
 - 1-2-3-4-5-6-8-..... 
 - 1-2-3-4-5-7-8-.....
 
- Casos de Prueba 
 - Elem ?V 1,3 
 - Elem ?V 2,4
 
  25Revisiones de Código
- Comprobación de escritorio (desk checking). 
 - Comprobación por pares o iguales (peer review). 
 - Inspección 
 - Un grupo de desarrolladores se asegura de que el 
código fuente cumple una serie de condiciones 
(checklist)  - Inicialización de variables, control de límites 
de arrays, liberación de memoria dinámica, etc.  - Walkthrough o visita guiada 
 - La realiza un grupo en el que al menos está el 
programador del código fuente a revisar  - Una persona ajena al código fuente prepara un 
conjunto de casos de prueba.  - Se ejecuta mentalmente en grupo el código para 
los casos de prueba. Ejecución guiada por el 
programador del código.  - Se plantean preguntas al programador del código.
 
  26Recomendaciones para el Proyecto
- Escribir un programa de prueba para cada paquete. 
 - Integrar paquetes siguiendo una estrategia 
bottom-up.  - Probar el programa para los valores límite, y 
para valores de entrada inválidos.  - Realizar revisiones en grupo del código fuente. 
 - Permitir a alguien ajeno al proyecto que juegue 
con vuestro programa.