Está en la página 1de 37

Testing de Software

Cuarta Unidad:
TIPOS DE TESTING

4.1 Pruebas Unitarias

Comprender el significado de las pruebas unitarias

Distinguir pruebas de caja negra vs. pruebas de caja blanca


Lograr cobertura de la prueba adecuada
Aprender un estndar de prueba
Revise un plan de prueba de unidad

Objetivo de la prueba: maximizar el nmero y gravedad de los defectos encontrados por dlar
gastado
as: primera prueba

Lmites de la prueba: Prueba slo puede determinar la presencia de defectos, no su ausencia


utilizar las pruebas de correccin para establecer "ausencia"

3.

Pruebas
del
Sistema
2. InPruebas de
Integracin
tests

Combinacin de Mdulos
1.
Prueb
as
Unita
rias

Modulus

Funciones

3.

Pruebas de
Sistema

Incluye use-cases

2. Pruebas de
Integracin
OO:

Module combination

Paquetes de
clases

1.
Pruebas Unitarias
Mdulo

Funcin

Combinaciones de
mtodos dentro de
clases

Mtodos

Unified Process

Jacobson et al:
USDP

Inception Elaboration

Construction

Transition

Requirements

Analysis
Design
Implementation

Test

Prelim.
iterations

Iter.
#1

Iter.
#n

Iter.
#n+1

..

Iter.
#m

Iter.
#m+1

Iter.
#k

Jacobson et al:
USDP

Unified Process
Inception Elaboration

Construction

Transition

Requirements

Analysis
Design
Implementation

Unit Tests

Test

Prelim.
iterations

Iter.
#1

Iter.
#n

Iter.
#n+1

Integration tests ... System tests

..

Iter.
#m

Iter. ..
#m+1

Iter.
#k

Hoja de ruta para pruebas unitarias


Requirimirntos
1. Plan de Pruebas
Unitarias

Detalles de diseo

....

Resultadados del
Test

Hoja de ruta para pruebas unitarias


Requerimientos

Detalles de diseo

Productos de
Pruebas previas

1. Plan for
unit testing
-- see section SSS

Identifique los mayores


puntos conflictivos
Unit test plan

2. Adquirir
Conjunto
de prueba
-- see section SSS

Conjunto de Pruebas

Codigo bajo
Prueba

3. Ejecutar
Prueba unitria
-- see section SSS

Resultados
de Pruebas
IEEE, 1986

Black-, Gray-,
& White-box Testing

* De fase previa

Entradas
determinadas
por...

Resultados

requerimientos*

salida real
comparado
con
requerimientos

Black box

Black-, Gray-,
& White-box Testing
Entrada
determinada
por.. requerimientos

Black box
Gray box

requerimientos &
Elementos clave de diseo

Resultados
salida real
comparado
con
salida requerida
En cuanto a las
pruebas de caja
negra y blanco

White box
elementos de
diseo

Confirmacin
de comportamiento
esperado

Posibilidades de Prueba de entrada


de Test Input

Infinitamente
muchos valores
ilegales:

elegir una muestra


finita.

principal
$100

$100M

20%
Infinitamente
muchos valores
legales:

inflation

elegir una
muestra finita.

estimate

25%

interest rate
1%

Prueba de particionamiento de entrada y


Lmites
Una
regin
ilegal

principal

lmites

$100

$100M

20%

inflacin

Rango de entradas vlidas

estimada

25%

1%

0%
particiones de
equivalencia

tasa de
interes

Rangos de prueba: Casos elementales


1. dentro del rango

2. en los lmites
Del rango
3. fuera del rango
("Ilegal")

range

Cubrir cada declaracin no es suficiente


(Myers)
Programa
Requerido

Yes
u>1 and
v==0
x = x/u
No

Yes
u==2 or
x>0
++x
No

Cubrir cada declaracin no es suficiente


(Myers)
Programa
Requerido
Yes
u>1 and
v==0
x = x/u
No

(2)
(3)
(4)

u=2, v=0 and x=3


ejecuta cada linea (1) - (4)
dando la salida correcta x= 2.5

Yes

u==2 or
x>0
++x
No

Cdigo implementado en
diagrama de flujo
if( (u>1) && (v==0) ) (1)
x = x/u;
if( (u==2) || (x>3) )
++x;

Sin embargo, la lnea (3) es

Caminos de comprobacin
N

Set _name to
defaultName"

Parameter &
settings make
sense?

Set _name
to parameter

Parameter
name too
long?

Truncate
name

Caminos de comprobacin
N

Set _name para


defaultName"

Cobertura
Decisin

Parmetros y
ajustes tienen
sentido?

Set _name
al parmetro

Parametro
nombre
demasiado
largo?

Truncar
nombre

Pruebas basadas en Assert para max ()


1.2
public static boolean checkAssertion
Definirndo la
assertion de
( int loopSoFarP, int indexOfMaxP, double[] arrayP )
checkeo
{
// Estableci por primera vez siguientes booleanos :
boolean b1M = true; / * Significa valores de arrayP [] son inferiores
arrayP [indexOfMaxP] para todos los ndices <indexOfMaxP */
if( indexOfMaxP != 0 ) // B1M verdaero si max hasta ahora es primer elemento
for( int u = 0; u < indexOfMaxP; ++u )
b1M &= ( arrayP[u] < arrayP[ indexOfMaxP ] );

....

public static boolean checkAssertion


( int loopSoFarP, int indexOfMaxP, double[] arrayP )
{
// Primero establecidas siguientes booleanos:
boolean b1M = true; /* significa valores de arrayP [] son inferiores
arrayP [indexOfMaxP] para todos los ndices <indexOfMaxP */
if( indexOfMaxP != 0 ) // B1M cierto si max hasta ahora es primer elemento
for( int u = 0; u < indexOfMaxP; ++u )
b1M &= ( arrayP[u] < arrayP[ indexOfMaxP ] );
boolean b2M = true;
/* significa vals. de arrayP [] no superior a arrayP
[indexOfMaxP] para los ndices
indexOfMaxP ... loopSoFarP */
for( int v = indexOfMaxP; v <= loopSoFarP; ++v )
b2M &= ( arrayP[v] <= arrayP[ indexOfMaxP ] );

Definicin de un inspector de asercin para max (): 2 de 2

if
(

)
{
}
else
{
}

// Loop has progressed up to index loopSoFarP


( 0 <= loopSoFarP ) && (loopSoFarP < arrayP.length )
&& // indexOfMaxP is the index <= loopSoFarP ...
( 0 <= indexOfMaxP ) && ( indexOfMaxP <= loopSoFarP )
&& b1M && b2M // ... where the first max occurs
System.out.println( "Assertion valid" );
return true;

System.out.println( "Assertion invalid" );


return false;

/** Finds index & value of first of the largest array elements ... */
public static void main( String[] mainArg )
La aplicacin de las pruebas basadas en
{
asercin? A max ()
double[] a = getArray();
// Let I be the assertion (see section tbd of chapter 7) ... Establish I
int i = 0;
int k = 0;
boolean validityM = checkAssertion( i, k, a );
// assertion test
// Following preserves I . terminates . (section tbd of chapter 7)
while( i != a.length - 1 )
{ ++i;
if( a[i] > a[k] )
k = i;
validityM = validityM && checkAssertion( i, k, a ); // assertion test
}
System.out.println( "First max value is " + a[k] + " at index " + k );
System.out.println( "Validity: " + validityM );
// assertion report
}

Planificacin de las pruebas unitarias


1. Decidir sobre la filosofa de las pruebas unitarias
ingeniero individual responsable (comn)?
revisado por los dems?
diseado y realizado por los dems?

2. Decida qu / dnde / cmo documentar

conjunto de documentos personales individuales (comn)?


cmo / cundo incorporar a otros tipos de pruebas?
incorporar en los documentos formales?
utilizar herramientas / utilidades de prueba?

3. Determinar el alcance de las pruebas unitarias (es decir, con antelacin).


hacer no slo "de prueba hasta que el tiempo expira"
priorizar, por lo que las pruebas importantes definitivamente realizan

4. Decidir cmo y dnde obtener la entrada de prueba


ver seccin por determinar.

5. Estimar los recursos necesarios


utilizar datos histricos si estn disponibles

Realizar Prueba Mtodo (Humphrey) 1/2


1. Verifique el funcionamiento en valores de los parmetros normales (una prueba de caja negra
sobre la base de los requisitos de la unidad)
2. Verifique la operacin en valores de los parmetros de lmite (caja negra)
3. Verifique el funcionamiento fuera de los valores de parmetros (caja negra)
4. Asegrese de que todas las instrucciones se ejecutan (cobertura de declaracin)

5. Revise todos los caminos, incluyendo ambos lados de todas las ramas (cobertura de decisin)
6. Compruebe el uso de todos los llamados objetos
7. Verificar el manejo de todas las estructuras de datos

8. Verifique el manejo de todos los archivos

Realizar Prueba Mtodo (Humphrey) 2/2


9. Compruebe la terminacin normal de todos los bucles

(parte de una prueba de correccin)


10. Compruebe la terminacin anormal de todos los bucles
11. Compruebe la terminacin normal de todas las recurrencias
12. Compruebe la terminacin anormal de todos recursiones
13. Verificar el manejo de todas las condiciones de error
14. Compruebe temporizacin y sincronizacin
15. Verifique que todas las dependencias de hardware

(1) D-Requirements

(2) Design GameCharacter

3.2.EC.1.2 Cualidades de caracteres


Encuentro

requerimientos

Cada personaje del juego tiene el mismo


conjunto de cualidades. Cada cualidad
debe ser un nmero de punto flotante no
negativo con al menos un decimal de
precisin. . .

Una clase abstracta con nombre de


atributo ...

....

(1) D-Requirements

(2) Diseo GameCharacter

3.2.EC.1.2 Cualidades de caracteres


Encuentro

Una clase abstracta con nombre de atributo ...

Cada personaje del juego tiene el mismo


conjunto de cualidades. Cada cualidad
debe ser un nmero de punto flotante no
negativo con al menos un decimal de
precisin. . . .

Requerimientos

Probar esta clase ...


... contra este requisito
Characters

GameCharacter

Test este metodo ...


Encounter Characters
... Contra este requerimiento

Relacionar Pruebas para


Requisitos y Diseo

EncounterCharacter
adjustQuality()

Aplicado a ...
Unit test
Concentracin

Aguante

Results in a
zero value?

1. Dentro del
Rango

No:
Test 1.1
Test 1.1.1
etc.

La particin de la
gama de pruebas
unitarias 1 de 2

Yes:
Test 1.2

Adapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission.

Test 1.2.1
etc.

Aplicado para ...


Unit test

Concentracin

aguante

Results in a
zero value?

2. Fuera de
Rango

No:
Test 2.1
Test 2.1.1

etc.

La particin de la
gama de pruebas
unitarias 2 de 2

Yes:
Test 2.2

Adapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission.

Test 2.2.1
etc.

Una manera de realizar las pruebas


Unitarias
1. Mtodos de entrenamiento en combinacin

2-5, por lo general


Elegir secuencias ms comunes primero
incluir secuencias que puedan causar defectos
Requiere salidas de computacin en los valores de los atributos resultantes

2. Enfocado en pruebas unitarias en cada atributo


inicializar, a continuacin, ejecutar secuencias de mtodo que la afectan

3. Verifique que cada invariante de clase no se ha modificado


Verifique que el invariante es cierto con los valores iniciales
Ejecutar una secuencia (por ejemplo, el mismo que en 1.)
Verificar que el invariante sigue siendo verdad

4. Verifique que los objetos de transicin entre los estados esperados


Planificar la secuencia de eventos / transicin de estado
Configurar el objeto en el estado inicial estableciendo las variables
Proporcionar primer evento y consultar ocurri esa transicin. etctera

Secuencia de Encuentro de Prueba de


transicin de estados 1 de 2
test step 1

Preparacin

Jugador
descarta
men
cualidades

Verifique que el juego est


inicialmente en estado de
Preparacin (mediante la
comprobacin de la
pertenencia a una clase de
gameStateI)

Esperando

paso de la prueba 1
paso de la prueba 2

Preparacin

Descartar el men de calidad,


y verificar que el juego est
en estado de espera.

paso de la prueba 3

Mueva el personaje del


jugador a un rea
adyacente, y verificar que
el juego todava est en
estado de espera.

Jugador
descarta
men
cualidades

Mover a la
zona
adyacente

Waiting

Prueba de Secuencia de transicin de


estados de Encuentro 1 de 2
test step 1

test step 2
Descartar el men de calidad,
y verificar que el juego est en
estado de espera.

Preparing

Jugador
descarta
men
cualidades

Verifique que el juego est


inicialmente en estado de
Preparacin (mediante la
comprobacin de la pertenencia a
una clase de gameStateI)

test step 3
Mueva el personaje del
jugador a un rea
adyacente, y verificar
que el juego todava
est en estado de
espera.

Mover a la
zona
adyacente

Waiting

Prueba Estado-Transicin completar


encuentro
2

Player
descarta

Preparacin

informes

Cualidades
Del men
6

Jugador
descarta
men
informe
encuentro

Mover a la
zona
adyacente

5
Espera

Encuentro
completado
4
Personaje entra
en zona
habitada por un
rival

Engaging

Resumen
Pruebas Unitarias = "piezas"

Otras pruebas = " assemblies "


Caja Negra: solo entrada / salida
Caja blanca: verifica el procesamiento
Varias maneras
Asegurar la integridad

La planificacin de prueba temprano/ mejor


Ayuda a aclarar los requisitos