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 < [Link] )
&& // indexOfMaxP is the index <= loopSoFarP ...
( 0 <= indexOfMaxP ) && ( indexOfMaxP <= loopSoFarP )
&& b1M && b2M // ... where the first max occurs
[Link]( "Assertion valid" );
return true;
[Link]( "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 != [Link] - 1 )
{ ++i;
if( a[i] > a[k] )
k = i;
validityM = validityM && checkAssertion( i, k, a ); // assertion test
}
[Link]( "First max value is " + a[k] + " at index " + k );
[Link]( "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
[Link].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
[Link].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