Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cajablancaabes 1 PDF
Cajablancaabes 1 PDF
1.- Introducción 3
2.- Pruebas
· Gráfico de flujo 4
· Complejidad ciclomática 7
o 1er camino 10
o 2º camino 11
o 3er camino 12
o 4º camino 13
o 5º camino 14
o 6º camino 15
o 1era expresión 19
o 2ª expresión
Tabla 1 20
Tabla 2 21
Tabla 3 22
Tabla 4 23
o 3er expresión 24
3.- Conclusiones 27
2
1.- Introducción
1. Que se ejecute por lo menos una vez cada instrucción del programa.
2. Garantizar que todas las condiciones se comprueban como
verdaderas y falsas.
3. Que se ejecuten los bucles, probando el caso general y los casos
extremos.
3
2.- Pruebas
· Gráfico de flujo
4
El gráfico de flujo se obtiene a partir de observar el código y
asignarle a cada sentencia el número del nodo que le corresponde, como
se observa en la siguiente tabla:
DECLARACIÓN DE TIPOS
Type i is INTEGER;
INICIALIZACIÓN DE VARIABLES
CÓDIGO DE LA FUNCIÓN
total.entrada<100 Nodo 3
{ total.entrada++; Nodo 4
Else null;
End if;
i++; Nodo 8
end do}
if total.valido>0 Nodo 9
End if;
5
Como podemos ver, la declaración de tipos no supone una acción a
contemplar en el grafo, pero sí lo es la inicialización, ya que es una
asignación de valores. También contemplamos las sentencias de control y
por último, el final de la función, ya que el programa no debería acabar en
dos nodos, que serían los 10 y 11, sino en un doceavo nodo, que suponga
el retorno de la función.
6
· Complejidad ciclomática
CC(G) = 6, porque existen las regiones R1, R2, R3, R4, R5 y R6.
7
2. CC(G) = Aristas – Vértices + 2. En este caso tenemos 16 aristas, que
son las líneas que unen los nodos, y 12 vértices, que son los
distintos nodos. Haciendo el cálculo obtenemos que la complejidad
ciclomática de nuestro grafo quedaría como:
8
· Descripción de los distintos caminos básicos
1. Nodos: 1, 2, 9, 10, 12
2. Nodos: 1, 2, 9, 11, 12
3. Nodos: 1, 2, 3, 9, 10, 12
4. Nodos: 1, 2, 3, 4, 5, 8, 2,...
5. Nodos: 1, 2, 3, 4, 5, 6, 8, 2,…
6. Nodos: 1, 2, 3, 4, 5, 6, 7, 8, 2,…
9
1. Primer camino: El primer camino nunca se podrá ejecutar porque, para
que no se cumpla la condición del nodo número 2, se debe estar
observando en la primera iteración una posición que no pertenece al
array, por lo que en la condición del nodo 9, el total.válido será 0, y no
mayor que 0, por lo que dicha condición no se acepta y es imposible
acceder al nodo 10.
if total.valido>0 Nodo 9
...
10
2. Segundo camino: El segundo camino se puede reproducir, ya que, para
que no se cumpla la condición del nodo número 2, se debe estar
observando un valor no perteneciente al array, y el total.válido es 0, ya
que se inicializó en el nodo número 1, con lo que no se accede al bucle
sino que se comprueba la condición del nodo 9. Dado que el valor de la
variable total.válido no se ha modificado y es 0, se accede al nodo número
11, asignando a la variable media el valor -999.
if total.valido>0 Nodo 9
...
Total.válido = 0
11
3. Tercer camino: El tercer camino no se ejecutará nunca, ya que, para que
se cumpla la condición del nodo número 2, se debe estar observando el
primer valor del array, y el número total de datos de entrada para la
primera iteración es 0, ya que la variable total.entrada se inicializó a 0 en
el nodo número 1, con lo que debería entrar al bucle, es decir, al nodo 4,
pero salta al nodo número 10, lo que es imposible para ser la primera
iteración.
total.entrada<100 Nodo 3
if total.valido>0 Nodo 9
...
12
4. Cuarto camino: El cuarto camino se puede ejecutar, ya que, para que se
cumpla la condición del nodo número 2, se debe estar observando el
primer valor del array, y la condición del nodo número 3 también se
cumple, ya que la variable total.entrada se inicializó en el nodo número 1
y no ha cambiado su valor, con lo que se entra en el bucle y se incrementa
el valor de la variable total.entrada en el nodo número 4, con lo que se
quedaría con valor numérico total.entrada = 1. El siguiente paso para que
se siguiese el flujo esperado es que el valor observado del array fuera
menor que el mínimo estipulado, lo cual no se puede permitir, como
expresa la condición del nodo número 5, con lo que el programa decidiría
ignorarlo, incrementando en el nodo número 8 el valor de la variable i,
que hace de iterador, y continuando con el bucle.
total.entrada<100 Nodo 3
{ total.entrada++; Nodo 4
i++; Nodo 8
Suma = 0
13
5. Quinto camino: El quinto camino se puede ejecutar, ya que para que se
cumpla la condición del nodo número 2, se debe estar observando el
primer valor del array, y la condición del nodo número 3 también se
cumple, ya que la variable total.entrada se inicializó en el nodo número 1
y no ha cambiado su valor, con lo que se entra en el bucle y se incrementa
el valor de la variable total.entrada en el nodo número 4, con lo que se
quedaría con valor numérico total.entrada = 1. El siguiente paso para que
se siguiese el flujo esperado es que el valor observado del array fuera
mayor que el mínimo estipulado, lo cual es lo deseable, como expresa la
condición del nodo número 5, pero también mayor que el valor máximo,
lo cual no se debe permitir, como expresa claramente el nodo número 6,
con lo que el programa decidiría ignorarlo, incrementando en el nodo
número 8 el valor de la variable i, que hace de iterador y continuando con
el bucle.
total.entrada<100 Nodo 3
{ total.entrada++; Nodo 4
...
i++; Nodo 8
14
6. Sexto camino: Por último, el sexto camino se puede ejecutar, ya
que, para que se cumpla la condición del nodo número 2, se debe estar
observando el primer valor del array, y la condición del nodo número 3
también se cumple, ya que la variable total.entrada se inicializó en el nodo
número 1 y no ha cambiado su valor, con lo que se entra en el bucle y se
incrementa el valor de la variable total.entrada en el nodo número 4, con
lo que se quedaría con valor numérico total.entrada = 1. El siguiente paso
para que se siguiese el flujo esperado es que el valor observado del array
estuviera entre los valores mínimos y máximos permitidos, lo cual es
deseable, como expresan los nodos números 5 y 6. A continuación se
accedería al nodo número 7, donde se actualizarían algunas variables, y a
continuación al 8, incrementando el valor de la variable i, que hace de
iterador, y continuando con el bucle.
total.entrada<100 Nodo 3
{ total.entrada++; Nodo 4
i++; Nodo 8
15
Por tanto concluimos con la siguiente tabla, donde se muestra el
resumen de lo que se ha dicho hasta ahora: los caminos, los parámetros
de entrada necesarios para su ejecución y sus correspondientes grafos.
Suma = 0
16
Camino 1 Camino 2 Camino 3
17
2.2.- Prueba de condición
18
1. Para la expresión VALOR[i] <>999 and total.entrada<100, hay una
única posible tabla:
19
2. Para la expresión VALOR[i]>=mínimo and valor<=máximo, hay
cuatro posibles opciones reflejadas en las cuatro siguientes tablas. Para
ello hemos supuesto un valor mínimo y máximo de prueba.
Tabla 1:
20
Tabla 2:
VV =0 y =100 0 0 Continuar
21
Tabla 3:
22
Tabla 4:
23
3. Para la expresión total.válido>0, hay una única posible tabla:
24
2.3.- Prueba de bucles
25
Iteraciones Valor[i] Total.entrada Resultado
* = si existiera.
26
3.- Conclusiones
27