S2 PruebasDeCajaBlanca
S2 PruebasDeCajaBlanca
S2 PruebasDeCajaBlanca
DISEAR
Mtodos de
caja
BLANCA
Sesin
2:
Pruebas
de
caja
blanca
B
S
P
A
3
S Control
ow
tesPng
S
P
P
Los dos tipos de sentencias bsicas en un programa son:
Sentencias
de
asignacin
Por defecto se ejecutan de forma secuencial
Sentencias
condicionales
Alteran el flujo de control secuencial en un programa
- Los nodos representan una o ms sentencias secuencias y/o una nica CONDICIN
(as como los puntos de entrada y de salida de la unidad de programa)
- Cada nodo estar etiquetado con un entero cuyo valor ser nico
- Si un nodo contiene una condicin anotaremos a su derecha dicha condicin
- Las aristas representan el flujo de ejecucin entre dos conjuntos de sentencias
(representadas en los nodos)
- Si uno nodo contiene una condicin etiquetaremos las aristas que salen del nodo
con "T" o "F" dependiendo de si el valor de la condicin que representan es
cierto o falso.
Intntalo!
1. if ((a != b) && (a!= c) && (b!= c)) {
2.
...
3. } else {
4.
if (a==b) {
5.
if (a==c) {
6.
...
7.
}
8.
} else {
9.
...
10.
}
11. }
try {
s1; //puede lanzar Exception1;
s2; //no lanza ninguna excepcin
...
} catch (Exception1 e) {
...
} finally {
...
}
Intntalo!
Sesin
2:
Pruebas
de
caja
blanca
10
11
r1
C2
r2
Resultado Real
12
1
2
3
4
CC
=
4
-
4
+
2
=
2
El valor mximo de CC comnmente
aceptado como "tolerable" es 10
13
...
i=1;
total.input=total.valid=0;
sum=0;
do while ((value[i] <> -999) && (total.input<100))
{
total.input+=1;
if ((value[i]>= minimum) && (value[i]<= maximum))
{
total.valid+=1;
sum= sum + value[i];
}
i+=1;
}
if (total.valid >0) {
average= sum/total.valid;
} else average = -999;
return average;
CC = 5 + 1 = 6
14
S Caminos
independientes
S
P
P
Buscamos (como mximo) tantos caminos independientes como valor
obtenido de CC
Cada
camino
independiente
contiene
un
nodo,
o
bien
una
arista,
que
no
aparece
en
el
resto
de
caminos
independientes
Con
ellos
recorreremos
TODOS
los
nodos
y
TODAS
las
aristas
del
grafo
Ejemplo:
1
2
Camino
1-3-4
3
Camino
1-2-4
4
} else {
result=10;
}
if (b>=20) {
result=0;
} else {
result=10;
}
4
5
7
8
C1
=
1-3-4-7-8
C2
=
1-3-4-5-8
C3
=
1-2-4-5-8
C1
=
1-3-4-7-8
C2
=
1-2-4-5-8
if
(a
>
b)
{
result
=
20
}
else
{
result
=
0
}
CFG
(paso 1)
(paso
3)
Caminos
independientes
a
>
b
T
C1
=
1-3-4
C2
=
1-2-4
CC
=
4
-
4
+
2
=
2
(paso
2)
Datos Entrada
Resultado Esperado
C1
a = 20; b = 10
result = 20
C2
a = 10; b = 20
result = 0
(paso
4)
Valores
de
entrada
Sesin
2:
Pruebas
de
caja
blanca
Resultado Real
(paso
5)
Resultado
esperado
16
17
18
19
class BinSearch
{ int bottom = 0;
int top = elemArray.length -1;
1
int mid;
r.found= false; r.index= -1;
2
while (bottom <= top) {
mid = (top+bottom)/2;
3
if (elemArray [mid] == key) {
r.index = mid;
8
r.found = true;
return;
} else {
4
if (elemArray [mid] < key)
bottom = mid + 1;
5
else top = mid -1;
6
}
7
} //while loop
} //search
9
} //class
Sesin
2:
Pruebas
de
caja
blanca
20
CC = 11 - 9 + 2 = 4
1
boiom
<=
top
2
T
F
T
elemArray[mid]
==
key
F
elemArray
<
key
4
T
9
7
Sesin
2:
Pruebas
de
caja
blanca
21
S Caminos
independientes
S
P
P
Posible conjunto de caminos independientes
C1:
1,
2,
3,
4,
6,
7,
2,
9
C2:
1,
2,
3,
4,
5,
7,
2,
9
C3:
1,
2,
3,
8,
9
Ejercicio: Calcula la tabla resultante:
Camino
Datos Entrada
Resultado Esperado
C1
key=
elemArray=
r.found=
r.index=
C2
key=
elemArray=
r.found=
r.index=
C3
key=
elemArray=
r.found=
r.index=
Resultado Real
22
Cdigo 1
Cdigo 2
Cdigo 3
...
public boolean validar_PIN (Pin pin_number) {
boolean pin_valido= false;
String codigo_respuesta=GOOD;
int contador_pin= 0;
}
...
}
S Ejercicio
propuesto
2
S
P
P
Especificacin del mtodo validar_PIN():
El
mtodo
validar_PIN()
anterior
valida
un
cdigo
numrico
de
cuatro
cifras
(objeto
de
la
clase
Pin)
introducido
a
travs
de
un
teclado
(asumimos
que
en
el
teclado
solamente
hay
teclas
numricas
(0..9),
y
una
tecla
para
cancelar).
El
mtodo
obtener_pin()
lee
el
cdigo
introducido
por
teclado
creando
una
nueva
instancia
de
un
objeto
Pin,
y
devuelve
GOOD
si
no
se
pulsa
la
tecla
para
cancelar,
o
CANCEL
si
se
ha
pulsado
la
tecla
para
cancelar
(carcter
\).
El
mtodo
comprobar_pin()
verica
que
el
cdigo
introducido
tiene
cuatro
cifras
y
se
corresponde
con
la
contrasea
almacenada
en
el
sistema
para
dicho
usuario,
devolviendo
cierto
o
falso,
en
funcin
de
ello.
El
usuario
dispone
de
tres
intentos
para
introducir
un
pin
vlido,
en
cuyo
caso
el
mtodo
validar_PIN()
devuelve
cierto,
y
en
caso
contrario
devuelve
falso.
25
CFG
CC
CC =
pruebas
(M CC)
Sesin
2:
Pruebas
de
caja
blanca
Camino
C1
Datos
Entrada
Resultado
Esperado
d1=
d2=
r1
d1=
d2=
rM
Resultado
Real
..
CM
26
S Referencias
bibliogrcas
S
P
P
A practitioners guide to software test design. Lee Copeland. Artech House
Publishers. 2004
Captulo
10:
Control
Flow
Testing
Pragmatic software testing. Rex Black. Wiley. 2007
Captulo
21:
Control
Flow
Testing
Software testing and quality assurance. Kshirasagar Naik & Priyadarshi
Tripathy. Wiley. 2008
Captulo
4:
Control
Flow
Testing
27