lunes, julio 9

Técnica de Camino Básico - Pruebas de Caja Blanca

El método del camino básico, propuesto por Tom McCabe, permite al diseñador de casos de prueba obtener una medida de la complejidad lógica de un diseño procedimental y usar esa medida como guía para la definición de un conjunto básico de caminos de ejecución. Los casos de prueba derivados del conjunto básico garantizan que durante la prueba se ejecuta por lo menos una vez cada sentencia de programa.

Cualquier representación del diseño procedimental se puede traducir a un grafo de flujo. La complejidad ciclomática de este grafo (como se definió en la clase anterior) define el número de caminos independientes del conjunto básico de un programa y nos da un límite superior para el número de pruebas que se deben realizar para asegurar que se ejecuta cada sentencia al menos una vez.

Un camino independiente es cualquier camino del programa que introduce por lo menos un nuevo conjunto de sentencias de procesamiento o una nueva condición.

En términos del grafo de flujo, un camino independiente se debe mover por lo menos por una arista que no haya sido recorrida anteriormente a la definición de un camino.

La complejidad se puede calcular de tres formas:

1.- El numero de regiones del grafo de flujo
2.- Aristas - Nodos + 2
3.-Nodos predicado + 1 (un nodo predicado es el que representa una condicional if o case, es decir, que de él salen varios caminos)
El valor de V(G) nos da el número de caminos linealmente independientes de la estructura de control del programa. Entonces se preparan los casos de prueba que forzarán la ejecución de cada camino del conjunto básico.

Ejemplo:
Diseñemos un algoritmo que sea capaz de procesar una situación de overflow cuando un conjunto de N pilas comparten un área de memoria común de M localizaciones enumeradas de L0 a Lm.

L0 L1 L2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LM

Entradas al programa:

N - Cantidad de pilas
b(j), t(j) J = 1, ..., N
i - Pila donde se va a efectuar una inserción
 
Si t(i) > b(i+1) ocurre overflow. Tres casos son posibles:
 
1.- ¿Existe espacio a la izquierda? Se decrementa j desde i hasta 1 hasta encontrar que t(j) <= b(j+1). Si se encuentra, se corren a la izquierda una posición todas las pilas desde la j+1 hasta la pila i. Posteriormente se procede a ejecutar la inserción abandonada.
 
2.- Si no existe espacio a la izquierda ¿existe a la derecha? Se incremente j desde i hasta M hasta encontrar que t(j) <= b(j+1). Si es así, se corren todas las pilas 1 posición a la derecha desde la i+1 hasta la j. Efectuar la inserción abandonada.
 
3.- Si no existe espacio a la derecha ni a la izquierda, el overflow no tiene solución.
Caminos:
1 2 9
1 3 4 5 7 9
1 3 4 6 8 7 9
1 3 4 6 9
Los casos de prueba deben explotar los caminos anteriores.

No hay comentarios.:

Publicar un comentario