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.
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
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