CAPITULO: CAPITULO: TÉCNICAS DE DISEÑO DE PRUEBAS Complejidad Ciclomática de McCae !"#$ Métrica Métrica que mide la complejidad complejidad estática estática de un programa basada basada en su grafo de ujo de control. Mide los caminos linealmente independientes, como índice de testabilidad y mantenibilidad.
!"#$ % e & ' ( )p • • •
Número de aristas: e Número de nodos: n nspeccionadas: p !normalmente "#
NOTA: Valores hasta 10 aceptables. Para valores superiores el código debe ser reconstruido $jemplo: $l grafo tiene: " parte independientes "& nodos "' aristas (!g# % )
p%"
n % "& e % "'
Eje*cicio+: Dado el ,i-.ie'te /*a-me'to de p*o-*ama e' ja0a: mport ja*a.io +ublic class Maimo +ublic static *oid main !tring args/0# t1ro2s 3$ception bu4ered5eader entrada % ne2 6u4ered5eader !ne2 nputtream5eader!ystem.in##: nt ,y,7,ma8 ystem.out.print!9ntroduce ,y,7#8 ;%nteger.parseint !entrada.read>=7# ma%8 else if!7=y# ma%78 else ma%y8 system.out.println!9$l maimo es ?ma#8 @ @
SE P!E
a$ Calc.la* la complejidad ciclomática de McCae !"#$ +ara calcular la complejidad ciclomática de McAabe, lo primero que tenemos que 1acer es dibujar el grado de ujo. +ara esto seguimos pasos: ". eBalamos en el cCdigo los pasos para dibujar el grafo de ujo
)
mport ja*a.io +ublic class Maimo +ublic static *oid main !tring args/0# t1ro2s 3$ception bu4ered5eader entrada % ne2 6u4ered5eader !ne2 nputtream5eader!ystem.in##: nt ,y,7,ma8 ystem.out.print!9ntroduce ,y,7#8 ;%nteger.parseint !entrada.read
1
if!=y >> =7# ma%8 else if!7 = y# ma%78 else ma%y8 system.out.println!9$l maimo es ?ma#8 @ @
nicio
ngresar ;, E, F
; = E >> ;=F i
No
i
Ma 9;
Ma 9F
F=E
No
Ma 9y
Ma
Gin
2. Dibujamos el grafo de ujo calculamos la complejidad ciclomática
y determinamos los caminos independientes: "
J Pru
K Prue
Gals Gals
Prue
&
Galse
)
L
Aalculamos la complejidad ciclomática de McAabe: (!H# % e I n ? J%
1" #" $" %"
", J, K, &, L ", J, , ), L ", J, K, , , L ", J, , , L
+or lo tanto identiOquemos los caminos independientes mirando el grafo de ujo:
1" ", J, K, &, L #" ", J, K, , , L $" ", J, , ), L
2 De3'i* co'j.'to, de p*.ea, m4'imo pa*a alca'5a* lo, ,i-.ie'te, c*ite*io, de coe*t.*a: COBERTURA DE SENTENCIAS "i',t*.cci6'$ e trata de ejecutar con los casos de prueba cada sentencia a instrucciCn al menos una *e7. eleccionar los caminos a ejecutar:
•
Cami'a
Ca*acte*4,tica
Aamino " Aamino J Aamino K
;=E,;=F EQ;QF ;QE,FQE
Ca,o de P*.ea 7 8 9 + 1 1 ; ) + ; + ;
COBERTURA DE DECISIONES $scribimos los casos suOcientes para cada condiciCn tenga al menos un resultado *erdadero y otro falso.
Se ejec.ta' 1 cami'o, pa*a c.*i* toda, la, a*i,ta,
•
COBERTURA DE CONDICIONES e trata de escribir los casos suOcientes para que cada condiciCn de cada decisiCn adopte el *alor *erdadero y el falso al menos una *e7.
Se ejecta el cami'o +<)<1 pa*a te'e* lo, 1 *e,.ltado, de la, co'dicio'e,< 'o co',ide*amo, el cami'o = po*>.e el cami'o 1 ?a lo e,ta ejec.ta'do2 7%+<8%)<9%1 Ma@%9 Cami'o = 7%1%)<9%+ Ma@%7 Cami'o + 7%)<8%1<9%+ MA7%8 Cami'o ) 7%)<8%+<9%1 Ma@%9 Cami'o 1
Eje*cicio ): Dado el siguiente fragmento de programa en ja*a: f!a="# and !b=# and !cQJ# t1en ;%?": $lse ;%R"8
. c*ite*io, de coe*t.*a ,ati,/ace' lo, ,i-.ie'te, ca,o, de p*.ea a%<%++
i
a = " and b = and A Q J
No
;%R"
;%?"
Gin
J. Dibujamos el grafo de ujo
" a=
J
b= K
AQ
aQ" bQ
c=J Aomo me dan una parte del cCdigo se le agrega el nodo para indicar que el cCdigo contiúa
&
K. Aalculamos la complejidad ciclomatica (!H#%
COBERTURA DE SENTENCIAS e trata de ejecutar con los casos de prueba cada sentencia a instrucciCn al menos una *e7. Aamino Aamino Aamino Aamino
" R= " R R J R= " R J R R K R= " I J I K I R & R= " I J I K I & R
Aon el caso de prueba !a%S,b%""b,c%"# ejecutamos el primer camino independiente Aon el caso de prueba !a%&,b%&,c% ejecutamos el primer camino independiente Aon el caso de prueba !a%J,b%,c%S# ejecutamos el primer camino independiente
COBERTURA DE DECISIONES: $scribimos los casos suOcientes para cada condiciCn tenga al menos un resultado *erdadero y otro falso.
Coe*t.*a de co'dicio'e,: e trata de escribir los casos suOcientes para que cada condiciCn de cada decisiCn adopte el *alor *erdadero y el falso al menos una *e7 .
a%<%++
Eje*cicio 1: Dado el mismo fragmento de cCdigo del ejercicio de anterior con dos clausulas 35, calcular el numero mínimo de casos de prueba que es necesario para que se cumpla la cobertura de condiciones.
". eBalemos en el cCdigo los nodos J. Dibujamos el grafo de ujo. en este caso al tratarse de clausulas 35 en *e7 de TND el dibujo cambia notablemente:
" aQ
J
bQ K
A= ;%R"
a=" b=
&
;%?"
cQJ Aomo me dan una parte del cCdigo se le agrega el nodo para indicar que el cCdigo continúa.
K. Aalculamos las complejidad ciclomatica (!H#%LR?J%& caminos independientes
Cami'o + K +K=KF Cami'o + K +K)K=KF Cami'o + K +K)K1K=KF Cami'o + K +K)K1K=K;KF
Ejercicio 4: Teniendo en cuenta el siguiente fragmento de código, ¿Cuántas pruebas se requieren para cubrir el 100% cobertura decisión? if width > length then biggest_dimension = width if height > width then biggest_dimension = height end_if else biggest_dimension = length if height > length then biggest_dimension = height end_if end_if
. !
". #
C. 2
$. 1
Ejercicio 5: n termómetro mide la temperatura en grados solamente. &i la temperatura cae por deba'o de 1( grados, la calefacción está apagada. &e )uel)e a encender cuando la temperatura alcan*a 21 grados. ¿Cuáles son los me'ores )alores en grados para cubrir todas las particiones de equivalencia? . 1+, 1 - 2+. C. 1(, 20 - 22.
". 1, 1( - 1. $. 1/, 2/ - !2.
+ Tpagad
)+ $ncendido
Para equivalencia debo evaluar que los números se encuentren en los tres limites X<18 18
Ejercicio ): Teniendo en cuenta la tabla siguiente decisión los siguientes casos de prueba - resultados esperados son )álidos?
¿Cuál
de
. ". C. $.
2! aos en el seguro de la clase , remium es 0 - el e3ceso es +00. *+also, +1 aos en el seguro de la clase C, remium es 100 - el e3ceso es 00. *+also, !1 aos en el seguro de la clase ", remium es 0 - el e3ceso es +00. *-erdadero, #! aos en el seguro de la clase C, remium es 100 - el e3ceso es 000. *+also,
Ejercicio .: n ma-orista )ende cartuc4os de impresora. 5a cantidad m6nima de pedido es de +. 7adescuento del 20% de los pedidos de 100 o más cartuc4os. &e le 4a pedido preparar casos de prueba utili*ando distintos )alores para las órdenes de cartuc4os ¿Cuál de los siguientes grupos contienen tres entradas de prueba que se generar6an con nálisis de 8alor 56mite? . +, /, 20 C. #, +,
". #, +, (0 $. 1, 20, 100.