Requisito previo: prueba de ruta básica
Hemos visto los pasos involucrados en el diseño de casos de prueba para un programa que utiliza la prueba de ruta básica en el artículo anterior . Ahora, resolvamos un ejemplo siguiendo los mismos pasos.
Pregunta: Considere el programa dado que verifica si un número es primo o no. Para el siguiente programa:
- Dibujar el gráfico de flujo de control
- Calcular la complejidad ciclomática utilizando todos los métodos
- Listar todos los Caminos Independientes
- Diseñe casos de prueba a partir de rutas independientes
int main() { int n, index; cout << "Enter a number: " << endl; cin >> n; index = 2; while (index <= n - 1) { if (n % index == 0) { cout << "It is not a prime number" << endl; break; } index++; } if (index == n) cout << "It is a prime number" << endl; } // end main
Solución:
1. Dibuje el gráfico de flujo de control:
- Paso 1:
comience a numerar las declaraciones después de la declaración de las variables (si no se han inicializado variables en esa declaración). Sin embargo, si una variable ha sido inicializada y declarada en la misma línea, entonces la numeración debe comenzar desde esa misma línea.Para el programa dado, así es como se hará la numeración:
int main() { int n, index; 1 cout << "Enter a number: " <> n; 3 index = 2; 4 while (index <= n - 1) 5 { 6 if (n % index == 0) 7 { 8 cout << "It is not a prime number" << endl; 9 break; 10 } 11 index++; 12 } 13 if (index == n) 14 cout << "It is a prime number" << endl; 15 } // end main
- Paso 2:
coloque las declaraciones secuenciales en un solo Node. Por ejemplo, las instrucciones 1, 2 y 3 son instrucciones secuenciales y, por lo tanto, deben combinarse en un solo Node. Y para otras declaraciones, seguiremos las notaciones como se discute aquí .Nota:
use numeración alfabética en los Nodes para simplificar.El gráfico obtenido será el siguiente:
2. Calcular la complejidad ciclomática:
- Método 1:
V(G) = e - n + 2*p
En el gráfico de flujo de control anterior,
where, e = 10, n = 8 and p = 1 Therefore, Cyclomatic Complexity V(G) = 10 - 8 + 2 * 1 = 4
- Método-2:
V(G) = d + p
En el gráfico de flujo de control anterior,
where, d = 3 (Node B, C and F) and p = 1 Therefore, Cyclomatic Complexity V(G) = 3 + 1 = 4
- Método-3:
V(G) = Number of Regions
En el gráfico de flujo de control anterior, hay 4 regiones como se muestra a continuación:
Therefore, there are 4 regions: R1, R2, R3 and R4 Cyclomatic Complexity V(G) = 1 + 1 + 1 + 1 = 4
Es importante notar que los tres métodos dan el mismo valor para la complejidad ciclomática V(G).
3. Caminos Independientes:
Como la complejidad ciclomática V(G) para el gráfico resultó ser 4, entonces hay 4 caminos independientes.
Los bordes cubiertos (marcados en rojo) por la Ruta 1 son:
Path 1 : A - B - F - G - H
Los bordes cubiertos por la ruta 1 y la ruta 2 se muestran a continuación:
Path 2 : A - B - F - H
Los bordes cubiertos por Path 1, Path 2 y Path 3 son:
Path 3 : A - B - C - E - B - F - G - H
Ahora solo quedan 2 bordes descubiertos, es decir, el borde CD y el borde DF. Por lo tanto, la ruta 4 debe incluir estos dos bordes.
Path 4 : A - B - C - D - F - H
Cada uno de estos caminos ha introducido al menos un nuevo borde que no ha sido recorrido antes.
Nota:
las rutas independientes no son necesariamente únicas.
4. Casos de prueba:
Para derivar casos de prueba, tenemos que usar los caminos independientes obtenidos previamente. Para diseñar un caso de prueba, proporcione una entrada al programa de modo que se ejecute cada ruta independiente.
Para el programa dado, se obtendrán los siguientes casos de prueba:
ID de caso de prueba | Número de entrada | Producción | Camino Independiente cubierto |
---|---|---|---|
1 | 1 | Ninguna salida | ABFH |
2 | 2 | es un numero primo | ABFGH |
3 | 3 | es un numero primo | ABCEBFGH |
4 | 4 | No es un número primo | ABCDFH |