Está en la página 1de 47

TCNICAS DE PRUEBAS DEL

SOFTWARE

VERIFICACIN Y VALIDACIN DE SOFTWARE


Ing Rembrandt Ubalde Enriquez
rembrandtubalde@gmail.com

Si su software fuera un edificio, se parecera mas a uno

de la izquierda o de la derecha?

Mito: los
programadores de
ahora ya no
programan como
los de antes.
Herramientas ms
fciles y

productivas
El software es cada
da ms complejo

Complejidad del Software

El Problema de Entendimiento

Costos
40% de los Costos de Desarrollo son para Pruebas

Costo
Tiempo

FUNDAMENTOS DE LAS
PRUEBAS
El ingeniero crea una

serie de casos de
prueba
que intentan
demoler el software
construido
Las pruebas son uno de los

pasos de la ingeniera del


software que se puede ver (por
lo menos, psicolgicamente)
como destructivo en lugar de
constructivo.
8

LAS PRUEBAS
DE LA CAJA NEGRA

Se basa las pruebas sobre la interfaz


del software operatividad del sistema

DE LA CAJA BLANCA

comprueban los caminos

lgicos del software


proponiendo
casos de prueba que
ejerciten conjuntos
especficos de condiciones
y/o bucles. Se puede
examinar el
estado del programa en
varios puntos para
determinar si el estado real
coincide con el esperado o
mencionado.

Se basa Es el minucioso examen de


los detalles procedimentales (Cdigo
Fuente).
Es diseada despus de tener el
cdigo fuente

10

LA PRUEBA DEL CAMINO BSICO


Permite al

diseador de casos
de prueba obtener
una medida de la
complejidad lgica
de un diseo
procedimental y
usar esa medida
como gua para la
definicin de un
conjunto bsico de
caminos de
ejecucin

Construcciones estructurales en forma de grafo de flujo:


Segn-sea
(Case)
Secuencia Si-si-no Mientras Repetir-hasta- Segn Sea

(If)
(While) (Untii)
(Case)

Donde cada crculo representa una o ms


sentencias, sin bifurcaciones,
en LDP o cdigo fuente

11

Diagramas de Flujo
Diagrama de Flujo
Representa la estructura y
control del programa

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
Fjese que cada nuevo camino
introduce una nueva
arista. Cual es el nuevo camino?

Grafo de Flujo
Representa el Flujo de control
lgico mediante notacin
ilustrada
Cada circula es un Nodo y
corresponde a una secuencia
de cuadros de proceso y a un
rombo de decisin
12

13

Ejemplo:

Nodos
Predicado

a
Falso

Cierto

SI a O b
Entonces
hacer x
Si No
hacer y

b
Falso
y

x
Cierto
x

FinSI

14

PRUEBA DEL CAMINO BSICO: COMPLEJIDAD


CICLOMTICA (VG)
Define el nmero de caminos independientes del conjunto bsico de un

programa y nos da un lmite inferior para el nmero de pruebas que se deben


realizar para asegurar que se ejecuta cada sentencia al menos una vez.
Un camino independiente es cualquier camino del programa que introduce
por lo menos un nuevo conjunto de sentencias de procesamiento o una nueva
condicin. En trminos del grafo de flujo, un camino independiente se debe
mover por lo menos por una arista que no haya sido recorrida anteriormente a la
definicin de un camino.
La complejidad ciclomtica V(G) se puede calcular de tres formas:
1. El nmero de regiones del grafo de flujo coincide con la complejidad ciclomtica.
2. Aristas - Nodos + 2, es decir V (G) = A N + 2.
3. Nodos Predicado + 1 (un nodo predicado es el que representa una condicional if o

case, es decir, que de l salen varios caminos).

Por tanto se deben preparar los casos de prueba que forzarn la ejecucin de cada
camino del conjunto bsico.

V(G) = 4

El grafo de la figura delimita

cuatro regiones.

R3

3
R2

R1

11 aristas - 9 nodos + 2 = 4
7

3 nodos predicado + 1 = 4

R4
9

16

Prueba del camino bsico: Complejidad ciclomtica


El conjunto de caminos independientes del
grafo ser 4.

Camino 1: 1-9
Camino 2: 1-2-4-5-7-8-1-9
Camino 3: 1-2-4-6-7-8-1-9
Camino 4: 1-2-3-8-1-9

Cualquier otro camino no ser un camino


independiente, p.e.,
1-2-4-5-7-8-1-2-3-8-1-2-4-6-7-8-1-9

ya que es simplemente una combinacin de


caminos ya especificados

7
8

Los cuatro caminos anteriores constituyen un


conjunto bsico para el grafo

Casos de Prueba

Un caso por cada camino


Prueba del camino bsico: Derivacin de casos de prueba

Valores concretos

para los datos


de entrada y de salida

Cdigo Fuente
(Pseudocdigo)
Etiquetado
3

Caminos Independientes
(<= CC)

Cada nuevo camino incluye


una arista no contemplada
en los anteriores caminos

2
4

3
5

6
Grafo de Flujo

Complejidad Ciclomtica
A-N+2
N.Predicado + 1
Regiones Internas + 1

Prueba del camino bsico:


Ejemplo
1

void calcula_e_imprime_media(float x, float y)


{
float resultado;
3
resultado = 0.0;
if (x < 0 || y < 0)
printf(x e y deben ser positivos); 4
2
else {
resultado = (x + y)/2;
5
printf(La media es %f\n, resultado);
}
}

Prueba del camino bsico:


Ejemplo
1

V(G) = 3 regiones. Por lo tanto, hay que


X<0

2
Cierto

Falso
Y<0

Cierto

Falso

determinar tres caminos independientes.


- Camino 1: 1-2-3-5-6
- Camino 2: 1-2-4-6
- Camino 3: 1-2-3-4-6
Casos de prueba para cada camino:
Camino 1: x=3, y= 5, rdo=4
Camino 2: x=-1, y=3, rdo=0, error
Camino 3: x=4, y=-3, rdo=0, error

Determinamos la complejidad ciclomtica del


grafo de flujo resultante.

Se determina aplicando uno de los


algoritmos descritos en la Seccin
Se debe tener en cuenta que se puede
determinar V(G) sin desarrollar el grafo de
flujo, contando todas las sentencias
condicionales del LDP
V(G) = 6 regiones
V(G) = 17 aristas - 13 nodos +2 = 6
V(G) = 5 nodos predicado + 1 = 6

21

Determinamos un conjunto bsico de caminos


linealmente independientes.
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- ...
Los puntos suspensivos (...) que siguen a
los
caminos 4,5 y 6 indican que cualquier
camino del
resto de la estructura de control es
aceptable
22

23

Ejemplo Camino Bsico: Cdigo Fuente


int contar_letra(char cadena[10], char letra)
{
int contador, n, lon;
n=0; contador=0;
lon = strlen (cadena);
if (lon > 0) {
do {
if (cadena[contador] == letra) n++;
contador++;
lon--;
} while (lon > 0);
}
return n;
}

Ejemplo Camino Bsico: Cdigo Fuente Etiquetado


int contar_letra(char cadena[10], char letra)
{
int contador, n, lon;
1
n=0; contador=0;
lon = strlen (cadena);
if (lon > 0) { 2
do {
if (cadena[contador] == letra) 3
n++; 4
contador++; 5
lon--;
} while (lon > 0); 6
}
return n; 7
}

Ejemplo Camino Bsico: Grafo de Flujo


int contar_letra(char cadena[10], char
letra)
{
int contador, n, lon;
1
n=0; contador=0;
lon = strlen (cadena);
if (lon > 0) { 2
do {
if (cadena[contador] == letra) 3
n++; 4
contador++;
5
lon--;
} while (lon > 0); 6
}
return n; 7
}

F
3

V
F

V
6

F
7

Ejemplo Camino Bsico: Caminos Independientes


V(G) = 4;
Nodos=7; Aristas=9;
Nodos Predicado=3;
Regiones = 4

F
3

V
F

Conjunto de caminos

independientes:
1. 1-2-7
2. 1-2-3-4-5-6-7
3. 1-2-3-5-6-7
4.1-2-3-4-5-6-3-5-6-7 (No es el
nico)

V
6

F
7

Ejemplo Camino Bsico: Casos de Prueba


1. 1-2-7
cadena = letra = a n = 0;
2. 1-2-3-4-5-6-7
cadena = a letra = a n = 1;
3. 1-2-3-5-6-7
cadena = b letra = a n = 0;
4. 1-2-3-4-5-6-3-5-6-7 cadena = ab letra = a n = 1;

Matrices de grafos
Es una matriz cuadrada
cuyo tamao (es decir, el
nmero de filas y de
columnas) es igual al
nmero de nodos del
grafo de flujo. Cada fila y
cada columna
corresponde a un nodo
especifico y la entradas
de la matriz corresponden
a las conexiones (aristas)
entre los nodos

29

PRUEBA D FLUJO DE DATOS:


DEF(S) = { X I la entencia S contiene una definicin de X }
USO(S) = { X I la sentencia S contiene un uso de X)
PRUEBA DE BUCLES:
Los bucles son la piedra angular
de la inmensa mayora
de los algoritmos implementados
en software.

BUCLES SIMPLES:1. pasar


por alto totalmente el bucle
2. pasar una sola vez por el
bucle
3. pasar dos veces por el
nucle
4. hacer m pasos por el
bucle con m < n
5. hacer n - 1, n y n+l pasos
por el bucle

BUCLES ANIDADOS:
Si extendiramos el
enfoque de prueba
de los bucles simples a
los bucles anidados, el
nmero
de posibles pruebas
aumentma
geomtricamente a
medida
que aumenta el nivel de
anidamiento.

BUCLES
CONCATENADOS:
Los bucles
concatenados se
pueden probar mediante
el enfoque anteriormente
definido para los bucles
simples, mientras cada
uno de los bucles sea
independiente del resto.

BUCLES NO
ESTRUCTURADOS:
Siempre que sea posible,
esta clase de bucles se
deben redisear para que
se ajusten a las
construcciones de
programacin
estructurada

30

PARTICIN EQUIVALENTE:La particin


equivalente es un mtodo de prueba de caja negra que
divide el campo de entrada de un programa en clases de
datos de los que se pueden derivar casos de prueba.

ANLISIS DE VALORES LMITE: Por razones que no

MTODOS DE
PRUEBA
BASADOS EN
GRAFOS

estn del todo claras, los errores tienden a darse ms en los


lmites del campo de entrada que en el centro.

PRUEBA DE COMPARACIN: En la mayora de los


casos, la comparacin de las salidas se puede llevar a cabo
mediante una herramienta automtica.

31

Particin equivalente
La particin equivalente es un mtodo que divide el

campo de entrada de un programa en clases de datos a


partir de los cuales se pueden derivar casos de prueba.
La particin equivalente define casos de prueba para

descubrir clases de errores.


Se define una condicin de entrada para cada dato de

entrada (valor numrico especfico, rango de valores,


conjunto de valores relacionados o condicin lgica).

Particin equivalente
Las clases de equivalencia se pueden definir de

acuerdo a las siguientes directrices:


Si una condicin de entrada especifica un rango, se

define una clase de equivalencia vlida y dos no vlidas.


Si la condicin de entrada es un valor especfico, se
define una clase de equivalencia vlida y dos no vlidas.
Si la condicin de entrada especifica un miembro de
un conjunto, se define una clase de equivalencia vlida
y otra no vlida.
Si la condicin de entrada es lgica, se define una clase
vlida y otra no vlida.

Ejemplo Particin equivalente


Datos de entrada a una aplicacin bancaria
Cdigo de rea: en blanco o nmero de 3 dgitos.
Prefijo: nmero de 3 dgitos que no comience por 0 o 1.
Sufijo: nmero de 4 dgitos.
Contrasea: en blanco o valor alfanumrico de 6
caracteres.
Ordenes: comprobar, depositar, pagar factura, etc.

Ejemplo Particin Equivalente


Condiciones de entrada
Cdigo de rea: nmero de 3 dgitos o no es nmero

lgica: el cdigo puede ser un nmero o no.


valor: nmero de 3 dgitos.
Prefijo: nmero de 3 dgitos que no comience por 0 o 1.
rango: valores entre 200 y 999.
Sufijo: nmero de 4 dgitos.
valor: nmero de 4 dgitos.
Contrasea: en blanco o valor alfanumrico de 6 caracteres.
lgica: la contrasea puede estar presente o no.
valor: cadena de 6 caracteres.
Ordenes: comprobar, depositar, pagar factura, etc.
conjunto: el de todas las ordenes posibles.

Esquema prueba de la particin


equivalente
4

Casos de Prueba Vlidos:


que cubran clases vlidas

Especificar los
datos de entrada:

Casos de Prueba No Vlidos:


que cubran una clase no vlida
y el resto vlidas

dato: tipo o descripcin

Determinar las clases equivalencia


Rango: una vlida y dos no vlidas.
Valor especfico: una vlida y dos no vlidas.
Conjunto:
- Si cada elmenento se trata igual,
una vlida y otra no vlida.
- Si cada elemento se trata diferente,
una vlida por cada elemento y
otra no vlida
Lgica: una vlida y otra no vlida.

DATO
ENTRADA

CLASES
VLIDAS

CLASES
NO VLIDAS

(1)

(2)

(3)

(4) (5)

...

...

...

TABLA de CLASES de EQUIVALENCIA


ENUMERADAS

Ejemplo Particin Equivalente


Aplicacin bancaria. Datos de entrada:
Cdigo de rea: nmero de 3 dgitos que no empieza por

0 ni por 1
Nombre de identificacin de operacin: 6 caracteres
rdenes posibles: cheque, depsito, pago factura,
retirada de fondos

Ejemplo Particin Equivalente


Determinar las clases de equivalencia

Cdigo de rea:
Lgica:
1 clase vlida: nmero
Rango:
1 clase vlida: 200 < cdigo < 999
2 clases no vlidas: cdigo < 200; cdigo > 999
1 clase no vlida: no es nmero
Nombre de identificacin:
Valor especfico:
1 clase vlida: 6 caracteres
2 clases no vlidas: ms de 6 caracteres; menos de 6
caracteres
rdenes posibles:
Conjunto de valores:
1 clase vlida: 4 rdenes vlidas
1 clase no vlida: rden no vlida

Ejemplo Particin Equivalente : Tabla de clases de equivalencia


Datos de Entrada

Clases Vlidas

Clases No Vlidas

Cdigo de rea

(1) 200 <= cdigo <= 999 (2) cdigo < 200
(3) cdigo > 999
(4) no es nmerico

Identificacin

(5) 6 caracteres

(6) menos de 6 caracteres


(7) ms de 6 caracteres

Orden

(8) cheque
(9) depsito
(10) pago factura
(11) retirada de fondos

(12) ninguna orden vlida

Ejemplo Particin Equivalente :


Casos de Prueba Vlidos
Cdigo

Identificacin

Orden

Clases Cubiertas

300

Nmina

Depsito

(1)C (5) C (9) C

400

Viajes

Cheque

(1) (5) (8)C

500

Coches

Pago-factura

(1) (5) (10) C

600

Comida

Retirada-fondos (1) (5) (11) C

TCNICAS DE PRUEBAS DE CAJA NEGRA: Particin


Equivalente

TCNICAS DE PRUEBAS DE CAJA NEGRA: Particin


Equivalente

TCNICAS DE PRUEBAS DE CAJA NEGRA: Anlisis de


Valores Lmite (AVL)
Permite la eleccin de casos de prueba que ejerciten los valores lmites. Es una

tcnica de diseo de casos de prueba que complementa la particin equivalente.


En lugar de seleccionar cualquier elemento de una clase de equivalencia, el AVL
lleva a la eleccin de casos de prueba en los extremos de la clase, en lugar de
centrarse en las condiciones de entrada, el AVL tambin obtiene casos de prueba
para el campo de salida.

Ingeniera del Software

44

45

46

P
R
U
E
B
A
D
E
E
N
T
R
O
N
O
S
E
S
P
E
CI
A
LI
Z
A
D
O
S
47

También podría gustarte