TecnicasDeCajaBlanca Ejemplo1
TecnicasDeCajaBlanca Ejemplo1
TecnicasDeCajaBlanca Ejemplo1
Se pide:
Para calcular la complejidad ciclomática de McCabe, lo primero que tenemos que hacer
es dibujar el grafo de flujo. Para esto seguiremos los siguientes pasos:
Import java.io.*;
Public class Maximo
{
public static void main (String args[]) throws IOException
{
BufferedReader entrada = new BufferedReader (new
InputStreamReader(System.in));
1
Int x,y,z,max;
System.out.println(“Introduce x,y,z: ”);
x = Integer.parseInt (entrada.readLine());
y = Integer.parseInt (entrada.readLine());
z = Integer.parseInt (entrada.readLine());
Calidad y Pruebas de Software. Profesor Lain Cárdenas Página 1
2 if (x>y && x>z) 3
max = x; 4
else
if (z>y) 5
6 max = z;
else 7
max = y;
System.out.println (“El máximo es ”+ max); 8
}
}
True 2
False
False
True 3
5 False
True
4
6 7
Por lo tanto tendremos cuatro caminos independientes, que mirando el grafo de flujo
deducimos serán los siguientes:
- Camino 1 1 - 2 – 3 – 4 – 8
- Camino 2 1 – 2 – 3 – 5 – 6 –8
- Camino 3 1 – 2 – 5 – 6 – 8
- Camino 4 1 – 2 – 5 – 7 - 8
Cobertura de sentencias
Se trata de ejecutar con los casos de prueba cada sentencia e instrucción al menos
una vez.
Caso de Prueba
Camino Características
x y z
Camino 1 x>y ,x>z 10 3 3
Camino 2 y<x<z 5 2 10
Camino 4 x<y,z<y 5 10 5
- Caso de prueba 1 (Camino 1). Ejecutaremos un caso en el que x>y y x>z, como
por ejemplo: x = 10, y = 3 y z = 3.
- Caso de prueba 2 (Camino 2). Ejecutamos un caso en el que y<x<z, como por
ejemplo: x = 5, y = 2, z = 10.
- Caso de prueba 3 (Camino 4). Ejecutamos un caso en el que x<y y z<y, como
por ejemplo: x = 5, y = 10, z = 5.
Cobertura de decisiones
Escribimos los casos suficientes para que cada decisión tenga al menos un resultado
verdadero y otro falso. Utilizando los mismos caminos y casos de prueba que en la
cobertura de sentencias cubriremos también en este caso la cobertura de decisiones:
Caso de Prueba
Camino Características
x y z
Camino 1 x>y ,x>z 10 3 3
Camino 2 y<x<z 5 2 10
Camino 4 x<y,z<y 5 10 5
Cobertura de condiciones
Se trata de escribir los casos suficientes para que cada condición de cada decisión
adopte el valor verdadero y el falso al menos una vez. Los casos de prueba en este
caso serán los mismos que en la cobertura de decisiones.
Caso de Prueba
Camino Características
x y z
Camino 1 x>y ,x>z 10 3 3
Camino 2 y<x<z 5 2 10
Camino 3 x<y<z 2 5 8
Camino 4 x<y,z<y 5 10 5
¿Qué criterios de cobertura satisfacen los siguientes casos de prueba {a=0, b=11,
c=1}, {a=4,b=4,c=4}, {a=2, b=6, c=0}? Explicar cada uno de ellos
Incluimos un sexto nodo que hace referencia al código que supuestamente viene
después (en el enunciado no lo determina). De esta manera podremos calcular la
complejidad ciclomática sin errores.
1
a>1
2
a<=1
b>5 b<=5
3
c>=2
c<2
5
4
6
Con el caso de prueba {a=0, b=11, c=1} ejecutamos el primer camino independiente.
Con el caso de prueba {a=4, b=4, c=4} ejecutamos el segundo camino independiente.
Con el caso de prueba {a=2, b=6, c=0} ejecutamos el cuarto camino independiente.
Cobertura de sentencias:
Se trata de ejecutar con los casos de prueba cada sentencia e instrucción al menos
una vez. Ejecutando los casos de prueba que nos dan en el enunciado ejecutaremos
cada instrucción al menos una vez: si nos fijamos en los caminos independientes nos
daremos cuenta de que el flujo de ejecución pasa por todos los nodos del código.
Cobertura de decisiones:
Escribimos los casos suficientes para que cada condición tenga al menos una
resultado verdadero y otro falso. En nuestro caso bastaría con ejecutar el interior del
if y el interior del else, sin tener en cuenta las condiciones. Cuando tenemos
decisiones multicondicionales puede ejecutarse el bloque else con diferentes
combinaciones de estas. En este caso se cumple la cobertura de decisiones ya que se
ejecutan el nodo 4 y 5, que son las sentencias del interior del if y del else
respectivamente.
Cobertura de condiciones:
Se trata de escribir los casos suficientes para que cada condición de cada decisión
adopte el valor verdadero y el falso al menos una vez. En este caso a y b adoptan el
valor verdadero y el valor falso al menos una vez. En el caso de c, comprobamos
que en el caso de prueba {a=2, b=6, c=0} adopta el valor verdadero, pero no
Cobertura de decisión/condición
Es el cumplimiento de la cobertura de condiciones y de decisiones. Evidentemente
en este caso no se cumple, puesto que hemos dicho que no se cumple la cobertura de
condiciones.
Ejercicio 3: Dado el mismo fragmento de código del ejercicio anterior con dos
cláusulas OR, calcular el número mínimo de casos de prueba que es necesario para
que se cumpla la cobertura de condiciones.
1
a<=1
a>1
2
b>5 b<=5
c<2 3
c >= 2
4 5
6
Para que se cumpla el criterio de cobertura de condiciones, es decir, que cada condición
de cada decisión tome el valor falso y verdadero al menos una vez, deberán ejecutarse
los cuatro caminos críticos. Es dicir, el número mínimo de pruebas que deberemos
realizar será cuatro.