Tecnología de Programación

Anuncio
Prueba del Camino Básico
Tom McCabe (1976)
A software Complexity Measure
•Derivar una medida de complejidad
•Usar esa medida como guía de un conjunto básico de
caminos de ejecución
•Los casos de prueba garantizan que se ejecuten al
menos cada sentencia una vez
Notación de Grafo de Flujo
Secuencia
If
Until
While
Case
Representación de un diagrama de flujo como Grafo de Flujo
Nodo
Arista
1
1
2,3
2
6
3
4,5
6
7
4
8
5
7
8
Región
9
9
10
10
11
11
Lógica Compuesta
a
.
.
.
IF a OR b
then procedimiento x
else procedimiento y
ENDIF
.
.
.
Lenguaje de Diseño de Programas LDP
Nodo Predicado
b
y
x
x
Complejidad Ciclomatica
Medida cuantitativa de la
complejidad lógica de un programa
1
Se usa para hallar el numero de
caminos independientes de un
grafo.
2,3
6
4,5
7
8
9
10
Camino independiente es aquel que
introduce por lo menos un nuevo
conjunto de sentencias de
procesamiento o una nueva condicion
11
Camino 1: 1-11
Camino 2: 1-2-3-4-5-10-1-11
Camino 3: 1-2-3-6-8-9-10-1-11
Camino 4: 1-2-3-6-7-9-10-1-11
¿Como sabemos cuantos caminos debemos buscar?
1
1. El numero de regiones del grafo coincide con la
complejidad ciclomatica
2,3
2. La complejidad ciclomatica V(G), de un grafo de flujo G
se define como
V(G) = E - N + 2
E es el numero de aristas y N el numero de nodos
3. La complejidad ciclomatica V(G), de un grafo de flujo G
se define como
V(G) = P + 1
6
4,5
7
8
Donde P es el numero de nodos predicados del grafo.
9
1. Cuatro regiones
10
2. V(G) = 11 arista - 9 nodos + 2 = 4
3. V(G) = 3 nodos predicado +1 = 4
11
Derivación de casos de prueba
PROCEDUR media;
INTERFACE RETURNS media, total.entrada, total.valido;
INTERFASE ACEPTS valor, mini, maximo;
TYPE valor[1:100] IS SCALAR ARRAY;
TYPE media, total.entrada, total.valido, minimo, maximo;
suma IS SCALAR;
TYPE i IS INTEGER
i=1;
total.entrada=total.valido=0;
suma=0;
DO WHILE valor[i]<> -999 AND total.entrada<100
increment total.entrada by 1;
IF valor[i]>=minimo AND valor[i]<=maximo
THEN increment total.valido by 1;
suma = suma + valor[i]
ELSE skip
ENDIF
increment i by 1
ENDDO
IF total.valido>0
THEN media = suma / total.valido;
ELSE media = -999;
ENDIF
END media
Derivación de casos de prueba (Cont.)
1
2
2. Determinar la complejidad ciclomatica.
V(G) = 6 Regiones
V(G)= 17 aristas - 13 nodos + 2 = 6
V(G)= 5 nodos predicado +1 = 6
3
4
10
5
12
11
3. Determinar un conjunto básico de
caminos linealmente independientes
6
13
7
8
1. Dibujar el grafo que
representa el
procedimiento media
9
Camino 1: 1-2-10-11-13
Camino 2: 1-2-10-12-13
Camino 3: 1-2-3-10-11-13
Camino 4: 1-2-3-4-5-8-9-2-......
Camino 5: 1-2-3-4-5-6-8-9-2-......
Camino 6: 1-2-3-4-5-6-7-8-9-2-......
Derivación de casos de prueba (Cont.)
4. Preparar los casos de prueba que forzaran la ejecución de cada camino del conjunto básico.
PROCEDUR media;
INTERFACE RETURNS media, total.entrada, total.valido;
INTERFASE ACEPTS valor, mini, maximo;
TYPE valor[1:100] IS SCALAR ARRAY;
TYPE media, total.entrada, total.valido, minimo, maximo;
suma IS SCALAR;
TYPE i IS INTEGER
i=1;
total.entrada=total.valido=0;
suma=0;
DO WHILE valor[i]<> -999 AND total.entrada<100
increment total.entrada by 1;
IF valor[i]>=minimo AND valor[i]<=maximo
THEN increment total.valido by 1;
suma = suma + valor[i]
ELSE skip
1
4
5
8
13
3
6
7
ENDIF
increment i by 1
ENDDO
9
2
IF total.valido>0
THEN media = suma / total.valido;
ELSE media = -999;
ENDIF
END media
10
11
12
Derivación de casos de prueba (Cont.)
2
1
2
3
i=1;
total.entrada=total.valido=0;
suma=0;
DO WHILE valor[i]<> -999 AND total.entrada<100
increment total.entrada by 1;
IF valor[i]>=minimo AND valor[i]<=maximo
THEN increment total.valido by 1;
suma = suma + valor[i]
ELSE skip
ENDIF
3
10
increment i by 1
10
ENDDO
12
11
13
IF total.valido>0
THEN media = suma / total.valido;
ELSE media = -999;
ENDIF
13
END media
Caso de prueba camino 1:
valor(k)=entrada valida, con k<1, definida por
valor(i)= -999, donde 2<= i <= 100
resultados esperados:
media correcta sobre n valores y totales
adecuados
Caso de prueba camino 2:
valor (1) = -999
resultados esperados:
media= -999, otros totales con sus valores iniciales
Caso de prueba camino 3:
intento de proceder con 101 o mas valores
los primeros 100 intentos deben ser validos
resultados esperados:
igual que en el caso de prueba 1
Derivación de casos de prueba (Cont.)
1
Caso de prueba camino 4:
valor(i) = entrada valida con i < 100
valor(k)<mínimo para k < i
resultados esperados:
media correcta sobre los valores y totales
adecuados
2
3
Caso de prueba camino 5:
valor(i) = entrada valida con i < 100
valor(k)>máximo para k <= i
resultados esperados:
media correcta sobre los n valores y totales
adecuados
4
10
5
12
11
6
13
7
Caso de prueba camino 6:
valor(i) = entrada valida con i < 100
resultados esperados:
media correcta sobre los valores y totales
adecuados
8
Se tendrá la seguridad de que todos los caminos se
han ejecutado al menos una vez.
9
Matrices de Grafos
1
Conectado al nodo
a
1
e
3
2
1
3
4
5
a
b
Nodo
f
5
d
4
c
g
2
2
3
d
4
c
5
g
b
f
e
Matrices de Grafos (Cont.)
Conectado al nodo
1
2
1
Nodo
NodoPredicado
3
4
5
1
1
-1 = 0
2
-1
= 1
2
-1
= 1
2
-1
= 1
------3 + 1=4
2
3
1
4
1
5
1
1
1
1
Complejidad
ciclomatica
Documentos relacionados
Descargar