EJERCICIO DE PRUEBA DE CAJA BLANCA A continuación se muestra un procedimiento en pseudocódigo para calcular la media de varios números. Se han numerado las sentencias con objeto de crear el correspondiente grafo de flujo. PROCEDURE Media; * Este procedimiento calcula la media de 100 o menos números que se encuentran entre unos límites; también calcula el total de entradas y el total de números válidos. INTERFACE RETURNS media, total.entrada, total.valido; INTERFACE ACEPTS valor, minimo, maximo; TYPE valor [1:100] IS INTEGER ARRAY; TYPE media, total.entrada, total.valido, minimo, maximo, suma IS INTEGER; TYPE i IS INTEGER; i = 1 total.entrada = total.valido = 0 suma = 0 DO WHILE VALOR [i] <> ‐999 and total.entrada < 100 Incrementar total.entrada en 1; IF valor [i] >= minimo AND valor [i] <= maximo THEN incrementar total.valido en 1; suma = suma + valor [i]; ELSE ignorar END IF Incrementar i en 1; END DO IF total valido > 0 THEN media = suma/total.valido ELSE media = ‐999 END IF END MEDIA 2 1 4 7 9 8 11 12 10 13 3 5 6 1 2 3 10 4 12 11 5 13 6 7 8 9 El grafo tiene seis regiones por lo que el camino básico estará formado por seis caminos en el programa. Estos caminos pueden ser: Camino 1: 1, 2, 3, 4, 5, 6, 7, 8, 9, 2 ,10, 11, 13 Camino 2: 1, 2, 3, 4, 5, 6, 7, 8, 9, 2 ,10, 12, 13 Camino 3: 1, 2, 3, 10, 11, 13 Camino 4: 1, 2, 3, 4, 5, 8, 9, 2, 10, 12, 13 Camino 5: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13 Camino 6: 1, 2, 10, 12, 13 Veamos los posibles casos de prueba que se pueden generar para probar estos caminos. Número Caso de Prueba de Camino 1 valor = [0, -999] minimo = 0 máximo = cualquier entero Objetivo Probar el calculo de la media pasando una vez por el ciclo valor = 101 números o más válidos Probar el cálculo de la (menores o iguales que el máximo y media pasando 100 mayores o iguales que el mínimo) veces por el ciclo y proporcionando 101 valores de entrada o más No es posible realizar este camino pasando por la bifurcación 12, ya que si se ejecuta el paso 7, la condición de 12 no se cumple. Probar la bifurcación 12 en otro caso de prueba No es posible probarlo sin pasar Probar el cálculo de 100 veces por el ciclo. Probar el más de 100 valores de camino en combinación con otro entrada que pase 100 veces por el ciclo, por ejemplo en el Camino 1 valor = [19, ‐999] Probar el cálculo de minimo = 20 media con valor menor máximo = cualquier entero que el mínimo valor = [21, ‐999] Probar el cálculo de minimo = 1 media con valor mayor máximo = 20 que el máximo valor = ‐999 Probar el cálculo de la minimo = cualquier entero media con un número máximo = cualquier entero inválido 2 3 4 5 6 Resultado Esperado media = 0 total.entrada= 1 total.valido = 1 media de los 100 primeros valores total.entrada=100 total.valido =100 media = ‐999 total.entrada = 1 total.valido = 0 media = ‐999 total.entrada = 1 total.valido = 0 media = ‐999 total.entrada = 0 total.valido = 0 Inicialmente el camino 1 podría conducir a un caso de prueba sencillo en el que se pasara una sola vez por el bucle (este es el primero que se ha indicado). Sin embargo, dada la restricción del camino 3, este caso de prueba se puede ampliar para pasar 100 veces por el bucle y observar la reacción del sistema ante el dato 101. Los casos de prueba 4 y 5 podrían modificarse para que se pasara un número n de veces por el bucle siendo la vez n+1 la que presentara el problema del valor menor que el mínimo o mayor que el máximo respectivamente.