Beruflich Dokumente
Kultur Dokumente
Testing
La Crisis del
Software
Fenmeno mundial decretado hace muchos aos
Muchos dicen que es crnica
Algunos casos traumticos
Therac-25 (6 vidas)
Arianne 5 (500 mill.)
AT&T Switching System, etc, etc
Denver Airport (9 meses penalidad de 1.1 x da)
Miles de fracasos en Information Systems
Cada vez + software crtico y + complejo
2
Por qu es tan
difcil?
No existen soluciones mgicas, o Balas de
Plata
Dificultades esenciales y accidentales
Inmadurez de la Disciplina
Abismo entre el Estado del Arte y el Estado
de la Prctica (Ing. en Verificacin)
Problemas de Gerenciamiento
Confusin Calidad Proceso Calidad Producto
Calidad en software
Confiabilidad
Correccin
Robustez
Seguridad (en
datos,
en acceso, Safety)
Funcionalidad
Usabilidad
Facilidad de
Mantenimiento
Reusabilidad
Verificabilidad +
Claridad
Interoperabilidad
Testear antes de
codificar
El acto de disear tests es uno de los mecanismos
Definiciones
Validacin
Estamos haciendo el producto correcto?
Basada en el uso de modelos
Verificacin
Estamos haciendo el producto correctamente?
Necesariamente es en relacin a un componente
anterior, que describe nuestro producto
10
Verificacin
esttica y dinmica
Dinmica: trata con ejecutar y observar
el comportamiento de un producto
Esttica: trata con el anlisis de una
representacin esttica del sistema
para descubrir problemas
11
Tcnicas de
Verificacin Esttica
Inspecciones, Revisiones, Walkthrough
(31 a 93 % media de 60%)
Anlisis de Reglas Sintcticas sobre
cdigo
Anlisis Data Flow sobre cdigo
Model Checking
Theorem Proving (prueba de teoremas),
etc.
12
Tcnicas de
Verificacin Dinmica
Testing
Run-Time Monitoring.
(prdida de memoria,
performance)
Run-Time Verification
13
Testing
Verificacin Dinmica de la adecuacin del
sistema a los requerimientos (de distinto tipo)
Objetivo: encontrar los errores importantes
Mundialmente: 30 a 50% del costo de un
software confiable
14
Testing
Es el proceso de ejecutar un producto para
verificar que satisface los requerimientos
identificar diferencias entre el comportamiento
real y el comportamiento esperado
(IEEE Standard for Software Test Documentation,
1983)
15
Comportamiento
esperado del
programa ORCULO
Comportamiento
obtenido del
programa
=
ok
Falla
16
Estamos asumiendo...
que se puede ejecutar el programa
que se conoce el resultado esperado
y que el resultado esperado puede
compararse con el resultado obtenido
(problema del orculos: visibilidad y
comparacin)
17
18
La visin moderna
Se puede invertir mucho esfuerzo en testear
Testear es el proceso
Mejor
de establecer confianza
prevenir
en que un programa hace
% Errores
lo que se supone
Detectados
que tiene que hacer
Testear es una
decisin
econmica
Unidad de Tiempo
19
22
Niveles de test
Test de sistema (o subsistema)
Test de integracin
Test de unidad
23
Testing de Integracin
Test orientado a verificar que las
partes de un sistema que funcionan
bien aisladamente, tambin lo
hacen en conjunto
Testeamos la interaccin,
la comunicacin entre partes
No debe confundirse
con testear un sistema-integrado
(test de sistema)
24
El test de Integracin
Unimos y testeamos partes ya testeadas (que
se asumen correctas)
La estrategia de unin depende del tipo de
sistema
Sistema organizado jerrquicamente
25
Programa auxiliares:
Stubs y drivers
Driver simula las llamada
Stub simula subprograma
En total, exigen un esfuerzo
considerable de programacin
26
Testing de Unidad
Se realiza sobre una unidad de cdigo
pequea, claramente definida
qu es una unidad
33
Test de unidades
Qu es una unidad?
Un programa
Una funcin o procedimiento
Un form
Un script de un form
Un subsistema
Una clase
34
Requerimientos
Diseo
preliminar
Test de
sistema
Preparar test
de integracin
Diseo
detallado
Preparar Test
de unidades
Test de
integracin
Test de
unidades
Test de
aceptacin
Programacin
Proceso de testing
El testing no es slo una etapa del
proceso de desarrollo
Tradicionalmente, empezaba al trmino de la
implementacin, y terminaba con la puesta en
produccin
37
38
39
40
Testing Funcional
Inputs
Outputs
espec.
f(i)
43
44
Terminologa (I)
Requerimientos de Test: Qu quiero
testear. En el marco del testing de sistemas
reactivos se llama el Test Purpuse.
45
Terminologa (II)
Casos de test: descripciones de condiciones o
situaciones a testear. Suele surgir de una
especificacin de test.
Dato de test: asignacin de valores concretos de
parmetros para ejecutar un caso de test
Test Suite T: conjunto de datos de test con los que se
testea el programa
Si P es correcto para todo elemento de T, se dice que
T es exitoso para P
Crear especificaciones y casos es un proceso creativo
Crear datos de test es un proceso laborioso, y hay creatividad en
cumplir econmicamente con los casos
46
De manera Simple
Caso1: cond1, cond2, cond3,..., condn1 y ResEsp(1)
...
Param1
Param2 Param3
Res. Esp.
D1
X1
Y1
Z1
R1
...
...
...
...
...
Dk
Xk
Yk
Zn
Rn
47
Criterios de Seleccin:
La base Terica de las
Tcnicas de Generacin de
Casos
49
Criterios ideales
Un Criterio C es Consistente para P sii
para todo par T1 y T2 de test sets que
satisfacen C, T1 es exitoso para P sii T2
lo es
Un Criterio C es Completo para P sii si P
es incorrecto entonces hay un test set T
que no es exitoso para P
50
Criterioscaja negra
Tambin llamado testing producido por los datos, o
testing producido por la entrada/salida
nos desentendemos completamente
de la estructura interna del programa,
pero no de su
especificacin
x,y
xy
52
Criterios estructurales o
de caja blanca o de cristal
Los casos de test se definen a partir
x,y
de la estructura interna del programa
function fastexp (x,y: int):int;
% pre: y >= 0
% post: devuelve x a la y
z :int :=1;
while y 0 do
if odd(y) then
z :=z*x;
y :=y-1
endif;
x := x*x; y :=y/2
endwhile
Qu
return(z)
xy
pasa si y es potencia
Qu pasa si y = 2n -1?
53
54
Importante
No slo testear casos vlidos!!!!
Condiciones vlidas y esperadas
hace lo que se supone que hace
55
Tcnicas de Seleccin de
Casos:
Partir y Combinar
57
Tcnicas de particin de
Dominio
58
59
Ejemplo
PASO 1
1. Elegir una funcionalidad que pueda
testearse en forma independiente
Ya lo tenemos!
60
Ejemplo
PASO 2
2. Determinar sus parmetros u otros
objetos del ambiente que pueden afectar
su funcionamiento
-Archivo (nombre)
-Expresin
61
PASO 3
3. Determinar las caractersticas
relevantes de cada objeto determinado
en el punto 2 (Archivo, Expresin) y de la
relacin entre estos objetos en el output
(relacin Archivo/Expresin)
Category en el artculo original de
Ostrand & Balcer 1988
62
Ejemplo - PASO 3
Caractersticas de E
longitud de expresin
blancos en la misma
63
Ejemplo - PASO 3
Caractersticas de A
Tamao de A
64
Ejemplo - PASO 3
Caractersticas de A/E
nmero de ocurrencias de E en A
nmero mximo de ocurrencias de E en
una lnea de A
longitud de A vs. longitud de E
repeticiones de palabras que contienen a
E en A
ubicacin relativa de E en palabras de A
...
65
PASO 4
4. Determinar elecciones (choices) para
cada caracterstica de cada objeto
66
Ejemplo en
Categoras de E
longitud de expresin
vaca
no vaca
contiene blancos
s
no
67
Ejemplo en
Categoras de A
existe
s
no
tamao
vaco
no vaco
68
Ejemplo en
Categoras de A/E (I)
nmero de ocurrencias de E en A
0
al menos 1
69
Ejemplo en
Categoras de A/E (II)
longitud de A vs. longitud de E
long A >= long E
long A < long E
repeticiones de palabras que contienen a E en A
Sin repeticiones
A contiene repetida a p, palabra que comienza con
E
Ubicacin relativa de E
p en A, E es prefijo de p
p en A, p contiene a E pero p no comienza con E ...
70
E
longitud
vaca - ERROR
no vaca
blancos
s - ERROR
no
A
existe
s
no - ERROR
tamao
vaco - NICO
no vaco
71
A/E
nmero de
ocurrencias de E en
A
0 - NICO
al menos 1 (A no
vaco)
nmero mximo de
ocurrencias de E en
una lnea de A
0o1
ms de 1 (A no
vaco) NICO
ETC.
72
PASO 6
Armado de casos
Ver una posible solucin en archivo Word
73
independiente
2. Determinar sus parmetros u otros objetos del ambiente
que pueden afectar su funcionamiento
3. Determinar las caractersticas relevantes de cada objeto
determinado en el punto 2 y de la relacin entre estos
objetos en el output
4. Determinar elecciones para cada caracterstica de cada
objeto
5. Clasificacin: errores, nicos, relaciones, restricciones
6. Armado de casos
74
75
Algunas Conclusiones
El mtodo se aplica a cualquier
descripcin de funcionalidad (formal,
semiformal o informal)
Es necesario usar los requerimientos
para planificar el testing
Esto genera preguntas de incompletitud,
ambigedad, inconsistencia, e
incorreccin en un momento en que es
fcil corregir requerimientos
76
77
Tcnicas de particin de
Dominio
78
Especificaciones de Servicios o
Requerimientos
Aparecen de manera + o clara los
(parmetros implcitos y explcitos), su
casustica, la relacin entre ellos
Ejemplo:en los casos de uso: hay
escenarios distintos dependiendo de
valores de parmetros o de acciones
decididas por el actor. Son parmetros
candidatos con sus categoras y
elecciones
79
80
1. Heurstica
Si una condicin de input especifica un
rango de valores (intervalo), identificar
una clase vlida y dos invlidas
Ejemplo: el item puede variar entre 1 y 999
VLIDA: 1 < valor < 999
INVLIDAS: 1 valor y valor 999
DE BORDE: valor = 1 y valor = 999
81
2. Heurstica
Si una condicin de input especifica un
nmero de valores, identificar una clase
vlida y dos invlidas
Ejemplo: un automvil puede tener entre
uno y seis dueos
VLIDA: entre uno y seis dueos
INVLIDAS: ningn dueo y ms de seis
dueos
DE BORDE: 1 dueo y 6 dueos
82
3. Heurstica
Si una condicin de input especifica un
conjunto de valores, y hay razones para
pensar que cada uno es manejado por el
programa en forma distinta, identificar
una clase vlida por cada elemento y una
clase invlida
Ejemplo: tipo de vehculo: camin, taxi, auto,
moto
VLIDAS: camin, taxi, auto, moto
INVLIDA: algn tipo que no es camin,
taxi, auto ni moto
83
4. Heurstica
86
87
Ejemplo
Cuenta
Firmante
88
89
Ejemplo
Inicio
Solicitud Ingresada
Solcitud Preadjudicada
Solicitud Rechazada
Debo probar:
Transiciones
vlidas
Transiciones
invlidas
Solicitud Aceptada
90
Tcnicas Combinatorias
91
Definicin Arbrea
Un ejemplo:
Alta de Cuenta
Datos Vlidos
Caja de ahorro
Dlares
Datos invlidos
Cuenta
corriente
Comn
92
Definicin Arbrea
Puede verse como category-partition especial donde el
mismo diseador de casos decide explictimanete cmo
combinar
Por ejemplo, cuando hay idea de orden de ingreso de
parmetros se puede minimizar casos sin sentido
Se arma un rbol donde cada nodo indica category
sobre un parmetro o combinacin entre un parmetro
y uno anterior descripto en el rbol
Los ejes que salen son las choices compatibles con las
condiciones acumuladas desde la raz
Los casos de tests especificados y ejecutados son los
caminos del rbol
93
94
95
Tcnicas Combinatorias
96
Grafo de Causa-Efecto
Especificaciones de I/O complejas (mucha
dependencia entre Inputs, entre Outputs y
entre I/O)
Nos permite definir combinaciones relevantes
de categoras binarias sobre inputs para
definir casos. All difiere del la parte
combinatoria de Category-Partition
Provee un display visual de las relaciones entre
una causa y la otra
Ayuda a detectar ambigedades o
incompletitud en la especificacin
97
Grafo de Causa-Efecto
Idea: Generar todos los outputs
admisibles con la siguiente heurstica:
Efectos
1. Carcter en la 1er
columna es D
2. Carcter en la 1er
columna es L
3. Carcter en la 2da
columna es un dgito
51
1
E
1=causa
presente pasa,
nulo no importa
o
r
not
not
20
a
n
d
50
52
Grafo booleano
100
Causas
1
2
3
1
1
0
1
50
51
52
1
0
0
Casos de test
2
0
1
1
3
0
0
Efectos
1
0
0
0
1
0
0
0
1
Input
D5
L4
B2
DA
RE
Se muestra indice 5
Se muestra indice 4
"Comando invlido"
"Nmero de ndice invlido"
101
B
m
P
E
E=B
o
r
a
n
d
m
p
SE
E=I
SE=B
SE=I
o
r
a
n
d
SE=I+B
102
Tcnicas Combinatorias
103
104
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
3
3
3
1
2
3
1
2
3
1
2
3
105
1
2
3
1
2
3
1
2
3
106
Factors: Columnas=Parmetros
Levels: cantidad de valores posibles para cada
columna (e.g.,choices)
Strength: Cantidad de columnas tales que las Levels
Strenght posibilidades aparecen la misma cantidad de
veces
Tabulados como: Lruns(Levels Factors)
Ej: L4(2 3): cuatro corridas para cubrir 3 factores
con dos elecciones posibles c/u
L18(3 6 6 1 ): 18 corridas para 7 factores, 6 de 3
niveles y 1 de 6 niveles. Mejor que 216 tests!
108
109
Secuencia
if then else
if then
115
do while
repeat until
case, o seleccin
mltiple
116
Flowgraph - Ejemplo
1
begin
1: read(x,y)
2: while x y do
3:
if x > y
4:
then x := x-y
5:
end-if
6: end-while
7: return x
8: end
3
4
5
117
118
119
Caminos no factibles
Un camino en un flowgraph para el cual no
existe input del programa que fuerce su
ejecucin, se dice camino no factible
Cada camino factible puede tener muchos inputs
asociados que fuercen su ejecucin
120
Criterios de
Testing Estructural
Un criterio de testing estructural
permite identificar entidades que deben
cubrirse con los datos de test para
satisfacer el criterio
121
Cubrimiento de sentencias o
instrucciones
Todas las sentencias del programa deben
ejercitarse
equivale a cubrir todos los nodos del flowgraph
122
Flowgraph - Ejemplo 2
1
begin
1: read(a,b,x)
2: if (a>-1) and
(b=0)then
3:
x := x/a
4: end if
5: if (a=2) or (x >1)
then
6:
x := x+1
7:
end if
8:end
2
3
4
5
6
7
8
123
Ejemplo sentencias
en el ejemplo, debemos cubrir los nodos 1, 2, 3,
4, 5, 6, 7 y 8
el siguiente camino cubre todos los nodos
1, 2, 3, 4, 5, 6, 7, 8
por ejemplo, con el input siguiente forzamos el
camino
Test 0: a=2, b=0, x=1
124
125
Observaciones
El testing basado en cdigo encuentra
muchos errores
Se ha realizado mucha investigacin para
determinar qu tcnica estructural es la
mejor
Pero
126
Problemas
Cualquier tcnica de seleccin de casos
que no est basada en el comportamiento
funcional, est mal guiada desde el
comienzo
La gente no usa el software para ejecutar
sus instrucciones, sino para invocar sus
funcionalidades
Es fcil ejecutar todas las instrucciones y
sin embargo no invocar ciertas funciones
127
Ejecutar tests
NO
Fallas?
NO
Cubrimiento
estructural?
SI
Reparar
SI
Terminacin
del testing
128
Cubrimiento de decisiones
o Branch
Problema: el else del if no est testeado
Todas las decisiones en el control del programa
deben ejercitarse al menos una vez por true, y
al menos una vez por false
branch equivale a cubrir todos los arcos del
flowgraph
branch implica sentencias
129
Problema...
Una decisin puede estar compuesta de
varias condiciones
En el ejemplo, (a>-1) and (b=0)
Test1: a=0, b=0, x=0
condiciones: a>-1, b=0, a 2, x1
131
Cubrimiento de condiciones
Todas las condiciones de todas las decisiones
en el control del programa deben ejercitarse al
menos una vez por true, y al menos una vez por
false
132
Condiciones
Para satisfacer condiciones hay que
ejecutar: (a>-1) (a-1) (b=0) (b0) (a=2)
(a2) (x>1) (x1)
Por ejemplo, Test1, Test2 y Test3,
donde:
Test3: a=2, b=1, x=0
camino: 1, 2, 4, 5, 6, 7, 8
condiciones: a>-1, b0, x1 , a=2
condiciones: A, A, B, B
(A & B) (A & B)
condiciones no implica branch
es decir, ninguno garantiza al otro!
Lo mismo sucede entre sentencias y condiciones
134
Cubrimiento de caminos
Todo camino del flujo de control del programa
debe ejercitarse al menos una vez
equivale a cubrir todos los caminos del
flowgraph
Es factible?
Garantiza algo?
135
sentencias
branch
decisiones
caminos
136
137
Definiciones y Usos
una sentencia que guarda un valor en la posicin
de memoria de una variable, crea una definicin
una sentencia que trae el valor de la posicin de
memoria de una variable es un uso de la
definicin activa de esa variable
un uso de x es un un uso predicado o p-uso si
aparece en el predicado de una sentencia que
representa una bifurcacin de control
en otro caso, se llama uso computacional o c-uso
(aparece del lado derecho de una asignacin)
138
Def-Use flowgraph
Dado un programa P y una variable x en P, el defuse flowgraph es el flowgraph de P anotado de
la siguiente manera:
por cada definicin de x, el nodo asociado est
etiquetado con una definicin de x
por cada c-uso, el nodo asociado est etiquetado
con un uso de x
Por cada p-uso todos los arcos salientes del
nodo asociado estn etiquetados con un uso de x
139
begin
1: read(a,b,x)
2: if (a>-1) and (b=0)then
3:
x := x/a
4: end if
5: if (a=2) or (x >1) then
6:
x := x+1
7:
end if
8:end
ua
ua
ua
3
4
ua
ua
6
7
8
140
begin
1: read(a,b,x)
2: if (a>-1) and (b=0)then
3:
x := x/a
4: end if
5: if (a=2) or (x >1) then
6:
x := x+1
7:
end if
8:end
ub
ub
3
4
5
6
7
8
141
begin
1: read(a,b,x)
2: if (a>-1) and (b=0)then
3:
x := x/a
4: end if
5: if (a=2) or (x >1) then
6:
x := x+1
7:
end if
8:end
ux dx
3
4
ux
ux dx
ux
6
7
8
142
143
[1,
[1,
[1,
[1,
[1,
2-3, a]
2-4, a]
3, a]
5-6, a]
5-7, a]
[1, 2-3, b]
[1, 2-4, b]
[1, 3, x]
[1, 5-6, x]
[1, 5-7, x]
[1, 6, x]
[3, 5-6, x]
[3, 5-7, x]
[3, 6, x]
144
145
Cubrimiento All-uses
Para cada variable en el programa, deben
ejercitarse toda las asociaciones entre
cada definicin y toda uso de la misma
(tal que esa definicin est activa)
All-uses equivale a cubrir todas las
DUAS del programa
146
Ejemplo All-Uses
Test 0: a=2, b=0, x=1
Cubre las DUAS [1, 2-3, a], [1, 3, a], [1, 5-7, a], [1, 23, b], [1, 3, x], [3, 5-7, x]
Cubre las DUAS [1, 2-4, a], [1, 5-6, a], [1, 2-4, b], [1,
5-6, x], [1, 6, x]
Cubre las DUAS [1, 2-4, a], [1, 5-6, a], [1, 2-4, b], [1,
5-6, x], [1, 6, x]
147
Ejemplo (cont.)
Falta cubrir la DUA [1, 5-7, x]
Por ejemplo, el test
Test 4: a=1, b=1, x=0
cubre esta DUA
148
A ll p a th s
A ll d u p a th s
A ll u s e s
A ll- c /s o m e - p
A ll c /u s e s
A ll- p /s o m e - c
A ll d e f s
A ll p /u s e s
B ra n c h
S ta te m e n t
149
151
152
Movimiento de componentes
integracin,
testing del sistema
programacin
testing de unidades testing de aceptacin
Desarrollo
Testing
Produccin
153
seleccin de datos
dnde testear: ambiente de test
terminacin del testing
documentacin
reporte y seguimiento de errores
test de regresin
154
155
156
Documentos de
Casos de test
Criterios de derivacin de casos empleados
Casos de test organizados por
Mdulo, sistema, unidad, etc.
Incluyendo el resultado esperado
con referencia al requerimiento que prueban
Documentos de
reporte de ejecucin
ambiente de test
seleccin de datos
referencia a casos de test que prueban
Gerenciamiento de errores
Determinacin del origen del error
una vez detectado un error, se busca el
problema que lo origin haciendo debugging
Clasificacin de errores
prioridad
severidad
Seguimiento de errores
159
Gerenciamiento de errores
Reparacin del software
Testing y testing de regresin
Iterar hasta terminar
160
161
Test de Regresin
Tareas de testing luego de que un sistema
ha sido modificado
162
163
164
Bibliografa