2008
V&V 1
Verificacin y Validacin
Temario
Introduccin
Proceso de V&V
Verificacin Unitaria
o Tcnicas Estticas (anlisis)
o Ejecucin Simblica
o Tcnicas Dinmicas (pruebas)
Pruebas de Integracin
Pruebas de Sistemas Orientados a Objetos
Pruebas de Sistema
Herramientas
Planificacin de V&V
2008 Terminacin de la prueba
V&V 2
Introduccin
Temario
Errores, faltas y fallas.
Objetivos y definicin de V&V
Ejemplo
Tipos de faltas
Clasificacin de defectos
2008
V&V 3
Introduccin
puede generar
?!
una falta
una falla
(interna)
(externa)
un error humano
2008
V&V 4
Introduccin
Razones:
Las especificaciones no estipulan exactamente lo que el
cliente precisa o quiere (reqs. faltantes o incorrectos)
Requerimiento no se puede implementar
Faltas en el diseo
Faltas en el cdigo
V&V 5
Introduccin
Objetivos de V&V
Descubrir defectos (para corregirlos)
Provocar fallas (una forma de detectar defectos)
Revisar los productos (otra forma de detectar defectos)
2008
V&V 6
Introduccin
Identificacin y Correccin de
Defectos
Identificacin de defectos
Es el proceso de determinar que defecto o defectos
causaron la falla
Correccin de defectos
Es el proceso de cambiar el sistema para remover los
defectos
2008
V&V 7
Introduccin
Definicin de V&V
Sommerville
Verificacin
o Busca comprobar que el sistema cumple con los requerimientos
especificados (funcionales y no funcionales)
o El software est de acuerdo con su especificacin?
Validacin
o Busca comprobar que el software hace lo que el usuario espera.
o El software cumple las expectativas del cliente?
2008
V&V 8
Introduccin
Definicin de V&V
Boehm
Verificacin
o Estamos construyendo el producto correctamente?
Validacin
o Estamos construyendo el producto correcto?
Ghezzi
Verificacin
o Todas las actividades que son llevadas a cabo para averiguar si el
software cumple con sus objetivos
2008
V&V 9
Introduccin
Definicin de V&V
IEEE
Verificacin
o The process of evaluating a system or component to determine
whether the products of a given development phase satisfy the
conditions imposed at the start of the phase
Validacin
o The process of evaluating a system or component during or at the
end of the development process to determine whether it satisfies
specified requirements
2008
V&V 10
Introduccin
Ejemplo
El programa lee tres nmeros enteros, los que son
interpretados como representaciones de las
longitudes de los lados de un tringulo. El programa
escribe un mensaje que informa si el tringulo es
escaleno, issceles o equiltero
Quiero detectar defectos probando (testeando) el
programa
Posibles casos a probar:
lado1 = 0, lado2 = 1, lado3 = 0 Resultado = error
lado1 = 2, lado2 = 2, lado3 = 3 Resultado = issceles
V&V 11
Introduccin
Ejemplo
Comparo el resultado esperado con el obtenido
Si son distintos probablemente haya fallado el programa
2008
V&V 12
Introduccin
Ejemplo
Otra forma para detectar defectos es revisar el
cdigo
If l1 = l2 or l2 = l3 then
write (equiltero)
else ...
En lugar del or me doy cuenta que debera ir un and
Se puede revisar solo
Se puede revisar en grupos
o Veremos ms adelante tcnicas conocidas para revisiones en
grupo
2008
V&V 13
Introduccin
Tipos de Faltas
en algoritmos
de sintaxis
de precisin y clculo
de documentacin
de estrs o sobrecarga
de capacidad o de borde
de sincronizacin o coordinacin
de capacidad de procesamiento o desempeo
de recuperacin
de estndares y procedimientos
relativos al hardware o software del sistema
2008
V&V 14
Introduccin
Tipos de Faltas
En algoritmos
Faltas tpicas
o
o
o
o
o
Bifurcar a destiempo
Preguntar por la condicin equivocada
No inicializar variables
No evaluar una condicin particular
Comparar variables de tipos no adecuados
De sintaxis
Ejemplo: Confundir un 0 por una O
Los compiladores detectan la mayora
2008
V&V 15
Introduccin
Tipos de Faltas
De precisin o de clculo
Faltas tpicas
o Formulas no implementadas correctamente
o No entender el orden correcto de las operaciones
o Faltas de precisin como un truncamiento no esperado
De documentacin
La documentacin no es consistente con lo que hace el
software
Ejemplo: El manual de usuario tiene un ejemplo que no
funciona en el sistema
2008
V&V 16
Introduccin
Tipos de Faltas
De estrs o sobrecarga
Exceder el tamao mximo de un rea de almacenamiento
intermedio
Ejemplos
o El sistema funciona bien con 100 usuarios pero no con 110
o Sistema que funciona bien al principio del da y se va degradando
paulatinamente el desempeo hasta ser espantoso al caer la
tarde. Falta: haba tareas que no liberaban memoria
De capacidad o de borde
Ms de lo que el sistema puede manejar
Ejemplos
o El sistema funciona bien con importes <1000000
o Ao 2000. sistema trata bien fechas hasta el 31/12/99
2008
V&V 17
Introduccin
Tipos de Faltas
De sincronizacin o coordinacin
No cumplir requerimiento de tiempo o frecuencia.
Ejemplo
o Comunicacin entre procesos con faltas
De recuperacin
No poder volver a un estado normal luego de una falla
2008
V&V 18
Introduccin
Tipos de Faltas
De estndares o procedimientos
No cumplir con la definicin de estndares y/o
procedimientos
2008
V&V 19
Introduccin
Clasificacin de Defectos
Categorizar y registrar los tipos de defectos
Gua para orientar la verificacin
o Si conozco los tipos de defectos en que incurre la organizacin me
puedo ocupar de buscarlos expresamente
Mejorar el proceso
o Si tengo identificada la fase en la cual se introducen muchos
defectos me ocupo de mejorarla
Clasificacin Ortogonal
Cada defecto queda en una nica categora
Si pudiera quedar en ms de una de poco servira
2008
V&V 20
Introduccin
Clasificacin de Defectos
Clasificacin Ortogonal de IBM
Funcin: afecta capacidad de brindarla, interfaz usuario, de
producto, con hardware o estructura global de datos
Interfaz: al interactuar con otros componentes o drivers va call,
macros, control blocks o lista de parmetros
Validacin: no valida de forma adecuada los datos antes de usarlos
Asignacin: falta en inicializacin de estructura de datos o bloque
Tiempo/serializacin: recursos compartidos o tiempo real
Build/package/merge: problemas en repositorios, control de
cambios o versiones
Documentacin: publicaciones o notas de mantenimiento
Algoritmo: involucra eficiencia o correctitud de algoritmo o
estructura de datos, pero no diseo
2008
V&V 21
Introduccin
Clasificacin de Defectos - HP
ORIGEN: POR QU?
TIPO: EN QU?
Especificacin Diseo
Requerimientos
Codific.
Ambiente/ Documentacin
soporte
Otro
Estndares
Control de Errores
Estndares
MODO:
FORMA?
2008
Introduccin
Faltas en un departamento de HP
Otros Cdigo
11%
Manejo Datos
6%
Documentacin
19%
Clculo
18%
Lgica
32%
2008
Requerimientos
5%
Hardware
4%
Proceso/
entre procesos
5%
V&V 23
Proceso de V&V
Temario
Proceso y pruebas en el proceso
Quin verifica?
Actitudes respecto a la verificacin
2008
V&V 24
Proceso de V&V
Proceso
Especifi- Requerimien- Otros Especificacin Ambiente
caciones
tos
Requeri- de Requeride Uso
de Diseo funcionales mientos del mientos
del Sistema software para el Cliente
Unit
.
.
.
Unit
2008
componente verificado
Component code
Unit
Prueba
Prueba
Prueba
Prueba
Prueba
Integracin Funcional desempeo Aceptacin Instalacin
Mdulos
Sistema
Software
Sistema
Integrados Funcionando Verificado Aceptado
Visin simplificada....
SISTEMA
EN USO
V&V 25
Proceso de V&V
Pruebas en el Proceso
Mdulo, Componente o unitaria
Verifica las funciones de los componentes
Integracin
Verifica que los componentes trabajan juntos como un
sistema integrado
Funcional
Determina si el sistema integrado cumple las funciones de
acuerdo a los requerimientos
2008
V&V 26
Proceso de V&V
Pruebas en el Proceso
Desempeo
Determina si el sistema integrado, en el ambiente objetivo
cumple los requerimientos de tiempo de respuesta,
capacidad de proceso y volmenes
Aceptacin
Bajo la supervisin del cliente, verificar si el sistema
cumple con los requerimientos del cliente (y lo satisface)
Validacin del sistema
Instalacin
El sistema queda instalado en el ambiente de trabajo del
cliente y funciona correctamente
2008
V&V 27
Proceso de V&V
Quin Verifica?
Pruebas Unitarias
Normalmente las realiza el equipo de desarrollo. En
general la misma persona que lo implement.
Es positivo el conocimiento detallado del mdulo a probar
Pruebas de Integracin
Normalmente las realiza el equipo de desarrollo
Es necesario el conocimiento de las interfaces y funciones
en general
V&V 28
Proceso de V&V
Quin Verifica?
Por qu un equipo especializado?
Maneja mejor las tcnicas de pruebas
Conoce los errores ms comunes realizados por el equipo
de programadores
Problemas de psicologa de pruebas
o El autor de un programa tiende a cometer los mismos errores al
probarlo
o Debido a que es SU programa inconcientemente tiende a hacer
casos de prueba que no hagan fallar al mismo
o Puede llegar a comparar mal el resultado esperado con el
resultado obtenido debido al deseo de que el programa pase las
pruebas
2008
V&V 29
Proceso de V&V
Actitudes Respecto a la
Verificacin
Soluciones:
Trabajo en equipo (roles distintos, igual objetivo)
Se evala al producto (no la persona)
Voluntad de Mejora (personal y del equipo)
2008
V&V 30
Verificacin Unitaria
Temario
Tcnicas de verificacin unitaria
Tcnicas estticas - Anlisis
o Anlisis de cdigo fuente
o Anlisis automatizado de cdigo fuente
o Anlisis formal
Ejecucin simblica
Tcnicas dinmicas Pruebas
o Definiciones, proceso para un mdulo, conceptos bsicos, teora
o Caja Blanca
o Caja Negra
V&V 31
Verificacin unitaria
Ejecucin simblica
Tcnica hbrida
2008
V&V 32
Verificacin unitaria
Tcnicas Estticas
Anlisis de cdigo
Se revisa el cdigo buscando defectos
Se puede llevar a cabo en grupos
Recorridas e Inspecciones (tcnicas conocidas con
resultados conocidos)
Verificacin formal
Se parte de una especificacin formal y se busca probar
(demostrar) que el programa cumple con la misma
2008
V&V 33
V. U. - Anlisis
Anlisis de Cdigo
Se revisa el cdigo buscando problemas en
algoritmos y otras faltas
Algunas tcnicas:
Revisin de escritorio
Recorridas e Inspecciones
o Criticar al producto y no a la persona
o Permiten
Unificar el estilo de programacin
Igualar hacia arriba la forma de programar
o No deben usarse para evaluar a los programadores
2008
V&V 34
V. U. - Anlisis
Anlisis de Cdigo
Recorridas
Se simula la ejecucin de cdigo para descubrir faltas
Nmero reducido de personas
Los participantes reciben antes el cdigo fuente
Las reuniones no duran ms de dos horas
El foco est en detectar faltas y no en corregirlas
Los roles clave son:
o Autor: Presenta y explica el cdigo
o Moderador: Organiza la discusin
o Secretario: Escribe el reporte de la reunin para entregarle al
autor
V&V 35
V. U. - Anlisis
Anlisis de Cdigo
Inspecciones
Se examina el cdigo (no solo aplicables al cdigo)
buscando faltas comunes
Se usa una lista de faltas comunes (check-list). Estas listas
dependen del lenguaje de programacin y de la
organizacin. Por ejemplo revisan:
o Uso de variables no inicializadas
o Asignaciones de tipos no compatibles
36
V. U. - Anlisis
Anlisis de Cdigo
Proceso de la Inspeccin
Planeacin
Seguimiento
Visin de
Conjunto
Seleccionar
equipo de
inspeccin.
Asegurar que
el material
est completo
Correccin
Preparacin
Individual
Presentacin
del programa
Objetivos del
programa
2008
Reunin de
Inspeccin
Bsqueda de
defectos de
forma
individual
Correccin por
parte del autor
del cdigo
Dedicada
solamente a
detectar
defectos
Es necesaria
otra inspeccin?
Tarea del
Moderador
V&V 37
V. U. - Anlisis
Anlisis de Cdigo
En un estudio de Fagan:
Con Inspeccin se detect el 67% de las faltas detectadas
Al usar Inspeccin de Cdigo se tuvieron 38% menos
fallas (durante los primeros 7 meses de operacin) que
usando recorridas
Jones:
report que inspecciones de cdigo permitieron detectar
85% del total de faltas detectadas
2008
V&V 38
V. U. - Anlisis
Anlisis Automatizado
Herramientas de software que recorren cdigo
fuente y detectan posibles anomalas y faltas
No requieren ejecucin del cdigo a analizar
Es mayormente un anlisis sintctico:
Instrucciones bien formadas
Inferencias sobre el flujo de control
Complementan al compilador
Ejemplo
a := a + 1
a := 2
2008
V&V 39
V. U. - Anlisis
Anlisis Formal
Un programa es correcto si cumple con la
especificacin
Se busca demostrar que el programa es correcto a
partir de una especificacin formal
Objeciones
Demostracin ms larga (y compleja) que el propio
programa
La demostracin puede ser incorrecta
Demasiada matemtica para el programador medio
No se consideran limitaciones del hardware
La especificacin puede ser incorrecta igual hay que
validar mediante pruebas. Esto ocurre siempre (nada es
2008
100% seguro)
V&V 40
V. U. - Anlisis
Anlisis Formal
Que sea la mquina la que demuestre
Desarrollar herramientas que tomen:
Especificacin formal
Cdigo del componente a verificar
Responda al usuario:
(1) el componente es correcto o
(2) muestre un contraejemplo para mostrar que la entrada
no se transforma de forma adecuada en la salida
V&V 41
Verificacin Unitaria
Ejecucin Simblica
Ejemplo:
read(a);
read(b);
x := a + 1;
y := x * b;
write(y);
2008
read(a);
[a = A]
VALOR SIMBLICO
read(b);
[a = A, b = B]
x := a + 1;
[a = A, b = B, x = A + 1]
y := x * b;
[a = A, b = B, x = A + 1, y = (A + 1) * B]
write(y);
[se despliega el valor (A + 1) * B]
V&V 42
Verificacin Unitaria
Ejecucin Simblica
Ejemplo 2:
[x = X, a = A, y = Y]
x := y + 2;
[x = Y + 2, a = A, y = Y]
if x > a then
ES Y + 2 > A?
a := a + 2;
else
HACEMOS CADA CASO Y
y := x + 3;
[x = Y + 2, a = A, y = Y + 5] [Y + 2 <= A]
REGISTRAMOS LAS
end if
CONDICIONES ASUMIDAS
x := x + a + y;
[x = 2Y + A + 7, a = A, y = Y + 5] [Y + 2 <= A]
2008
V&V 43
Verificacin Unitaria
Ejecucin Simblica
El resultado es ms genrico que las pruebas
Es experimental
Tiene problemas de escala
Qu pasa con las interfaces grficas?
Y con SQL?
2008
V&V 44
V. U. - Prueba
Algunas Definiciones
Prueba (test)
Proceso de ejecutar un programa con el fin de encontrar
fallas (G. Myers)
Ejecutar un producto para:
o Verificar que satisface los requerimientos
o Identificar diferencias entre el comportamiento real y el esperado
(IEEE)
V&V 45
V. U. - Prueba
Caja Blanca
A partir del cdigo identificar los casos de prueba
interesantes
o Casos de prueba Se necesita disponer del cdigo
o Tiene en cuenta las caractersticas de la implementacin
o Puede llevar a soslayar algn requerimiento no implementado
2008
V&V 46
V. U. - Prueba
Implementar
Revisin
V&V 47
V. U. - Prueba
Conceptos Bsicos
Es imposible realizar pruebas exhaustivas y probar
todas las posibles secuencias de ejecucin
nicas que aseguraran correctitud
2008
V&V 48
V. U. - Prueba
Conceptos Bsicos
El test debe ayudar a localizar faltas y no solo a
detectar su presencia
El test debe ser repetible
En programas concurrentes es difcil de lograr
2008
V&V 49
V. U. - Prueba
Fundamentos Tericos
Consideremos a un programa P como una funcin
(posiblemente parcial) con dominio D (entradas de
P) y codominio R (salidas de P)
Sean RS los requerimientos sobre la salida de P
Para cierto d D decimos que P es correcto para d
si P(d) satisface RS. P es correcto sii es correcto
para todo d en D
Un caso de prueba es un elemento d de D
Un conjunto de prueba es un conjunto finito de
casos de prueba
2008
V&V 50
V. U. - Prueba
Fundamentos Tericos
Decimos que P es correcto para un conjunto de
pruebas T, si es correcto para todos los casos de
prueba de T. En este caso decimos que P es exitoso
en T
Un criterio de seleccin C es un subconjunto del
conjunto de subconjuntos finitos de D
Un conjunto de prueba T satisface C si pertenece a
C
Un criterio de seleccin C es consistente si para
cualquier par T1,T2 que satisfacen C, P es exitoso
en T1 si y slo si es exitoso en T2
2008
V&V 51
V. U. - Prueba
Fundamentos Tericos
Un criterio de seleccin C es completo si, siempre
que P sea incorrecto, existe un conjunto de prueba
T que satisface C para el que P no es exitoso
Si C fuera a la vez consistente y completo,
podramos discriminar (de forma automtica) si un
programa es o no correcto
Podremos construir un algoritmo para generar C?
No. Este es otro problema indecidible
2008
V&V 52
V. U. - Prueba
Fundamentos Tericos
Entrada:
Un nmero del 1 al 3
Criterio
Que al menos est el nmero 1
C = { {1}, {1,2}, {1,3}, {1,2,3} }
2008
V&V 53
V. U. - Prueba
Principios Empricos
Se necesitan estrategias para seleccionar casos de
prueba significativos
Test Set de Significancia
Tiene un alto potencial para descubrir errores
La ejecucin correcta de estos test aumenta la confianza
en el producto
V&V 54
V. U. - Prueba
Principios Empricos
Como intentamos definir test sets de significancia?
Agrupamos elementos del dominio de la entrada en clases
Di, tal que, elementos de la misma clase se comportan (o
suponemos se comportan) exactamente de la misma
manera (consistencia)
De esta manera podemos elegir un nico caso de prueba
para cada clase
2008
V&V 55
V. U. - Prueba
Principios Empricos
Si las clases Di cumplen U Di = D El test set
satisface el principio de cubrimiento completo
Extremos de criterios
Divido las entradas en una nica clase
o No tiene sentido ya que no se provocarn muchas fallas
V&V 56
V. U. - Prueba
Qu Estamos Buscando?
Cul es el subconjunto de todos los
posibles casos de prueba que tiene la
mayor probabilidad de detectar el mayor
nmero posible de errores dadas las
limitaciones de tiempo, costo, tiempo de
computador, etc?
2008
V&V 57
V. U. - Prueba
Caja Blanca
Tipos de tcnicas de caja blanca
Basadas en el flujo de control del programa
o Expresan los cubrimientos del testing en trminos del grafo de
flujo de control del programa
Mutation testing
o Se basan en crear mutaciones del programa original provocando
distintos cambios en este ltimo
o La idea atrs de esta forma de test es poder distinguir (usando los
casos de test) los mutantes del original
o No se va a entrar en detalle
2008
V&V 58
V. U. - Prueba
Caja Blanca
Criterio de cubrimiento de sentencias
Asegura que el conjunto de casos de pruebas (CCP)
ejecuta al menos una vez cada instruccin del cdigo
If (a > 1) and (b = 0) {
x=x/a
}
If (a = 2) or (x > 1) {
x=x+1
}
CP : Entrada a=2, b=0, x=3
2008
V. U. - Prueba
Caja Blanca
a
If (a > 1) and (b = 0) {
x=x/a
}
If (a = 2) or (x > 1) {
x=x+1
}
a>1
and
b=0
False
x = x/a
a=2
or
X>1
d
2008
True
True
False
e
x=x+1
V&V 60
V. U. - Prueba
Caja Blanca
a
CP a = 2, b = 0, x = 3
a>1
and
b=0
Secuencia: ace
True
c
False
x = x/a
a=2
or
X>1
d
2008
True
False
e
x=x+1
V&V 61
V. U. - Prueba
Caja Blanca
Criterio de cubrimiento de decisin
Cada decisin dentro del cdigo toma al menos una vez el
valor true y otra vez el valor false para el CCP
If (a > 1) and (b = 0) {
x=x/a
}
If (a = 2) or (x > 1) {
x=x+1
}
Qu pasa si en la segunda
decisin tuviera x < 1 en lugar de
x > 1?
Hay una secuencia en la cual x se
mantiene sin cambios y esta no es
probada
Hay que extender el criterio para
sentencias del tipo CASE
2008
V&V 62
V. U. - Prueba
Caja Blanca
a
CP1 a = 3, b = 0, x = 3
a>1
and
b=0
Secuencia: acd
True
c
False
x = x/a
a=2
or
X>1
d
2008
True
False
e
x=x+1
V&V 63
V. U. - Prueba
Caja Blanca
a
CP2 a = 2, b = 1, x = 1
Secuencia: abe
a>1
and
b=0
True
c
False
x = x/a
a=2
or
X>1
d
2008
True
False
e
x=x+1
V&V 64
V. U. - Prueba
Caja Blanca
Criterio de cubrimiento de condicin
Cada condicin dentro de una decisin debe tomar al
menos una vez el valor true y otra el false para el CCP
a
If (a > 1) and (b = 0) {x = x / a}
b
If (a = 2) or (x > 1) {x = x + 1}
Hay que tener casos tal que a>1,
a<=1, b=0 y b<>0 en el punto a y
casos en los cuales a=2, a<>2, x>1
y x<=1 en el punto b
CP1 a=2, b=0, x=4
CP2 a=1, b=1, x=1
2008
V. U. - Prueba
Caja Blanca
a
CP1 a = 2, b = 0, x = 4
Secuencia: ace
a>1
and
b=0
True
c
False
x = x/a
a=2
or
X>1
d
2008
True
False
e
x=x+1
V&V 66
V. U. - Prueba
Caja Blanca
a
CP1 a = 1, b = 1, x = 1
Secuencia: abd
a>1
and
b=0
True
c
False
x = x/a
a=2
or
X>1
d
2008
True
False
e
x=x+1
V&V 67
V. U. - Prueba
Caja Blanca
Criterio de cubrimiento de decisin/condicin
Combinacin de los dos criterios anteriores
a
If (a > 1) and (b = 0) {x = x / a}
b
If (a = 2) or (x > 1) {x = x + 1}
2008
V&V 68
V. U. - Prueba
Caja Blanca
If (a > 1) {
a>1
If (b > 0) {x = x / a}}
False
If (a = 2) goto Sum
If (x > 1) goto Sum
goto Fin
a=2
Sum: x = x + 1
False
Fin:
x>1
True
True
b=0
False
x = x/a
True
True
x=x+1
False
2008
V&V 69
V. U. - Prueba
Caja Blanca
True
True
CP1 a = 2, b = 0, x = 4
a>1
False
a=2
False
x>1
b=0
x = x/a
False
True
True
x=x+1
False
2008
V&V 70
V. U. - Prueba
Caja Blanca
True
True
CP1 a = 1, b = 1, x = 1
a>1
False
a=2
False
x>1
b=0
x = x/a
False
True
True
x=x+1
False
2008
V&V 71
V. U. - Prueba
Caja Blanca
True
True
FALTO TESTEAR
a>1
False
a=2
False
x>1
b=0
x = x/a
False
True
True
x=x+1
False
2008
V&V 72
V. U. - Prueba
Caja Blanca
Criterio de cubrimiento de condicin mltiple
Todas las combinaciones posibles de resultados de
condicin dentro de una decisin se ejecuten al menos
una vez
Se deben satisfacer 8 combinaciones:
La secuencia acd queda sin ejecutar
1) a>1, b=0 2) a>1, b<>0
este criterio no asegura testear
3) a<=1, b=0 4) a<=1, b<>0
todos los caminos posibles
5) a=2, x>1 6) a=2, x<=1
7) a<>2, x>1 8) a<>2, x<=1
Los casos 5 a 8 aplican en el punto b
CP1
CP2
CP3
CP4
2008
a=2,
a=2,
a=1,
a=1,
b=0,
b=1,
b=0,
b=1,
x=4
x=1
x=2
x=1
cubre
cubre
cubre
cubre
1
2
3
4
y
y
y
y
5
6
7
8
Incluye al criterio de
condicin/decisin.
Myers lo considera un criterio
aceptable
V&V 73
V. U. - Prueba
Caja Blanca
True
True
a>1
False
a=2
False
x>1
b=0
x = x/a
False
True
True
x=x+1
False
2008
V&V 74
V. U. - Prueba
Caja Blanca
True
True
CP2 a = 2, b = 1, x = 1
a>1
False
a=2
False
x>1
b=0
x = x/a
False
True
True
x=x+1
False
2008
V&V 75
V. U. - Prueba
Caja Blanca
True
True
CP3 a = 1, b = 0, x = 2
a>1
False
a=2
False
x>1
b=0
x = x/a
False
True
True
x=x+1
False
2008
V&V 76
V. U. - Prueba
Caja Blanca
Falta no detectada con el CCCM
If x <> 0
y=5
else
z=zx
If z > 1
z=z/x
else
z=0
2008
V&V 77
V. U. - Prueba
Caja Blanca
Criterio de cubrimiento de arcos
Se pasa al menos una vez por cada arco del grafo de
flujo de control del programa
El criterio no especifica con qu grafo se trabaja; el
comn o el extendido (grafo de flujo de control dnde
est dividida cada decisin en decisiones simples)
Si es con el comn este criterio es igual al de decisin
2008
V&V 78
V. U. - Prueba
Caja Blanca
Criterio de cubrimiento de trayectorias indep.
Ejecutar al menos una vez cada trayectoria independiente
El nmero de trayectorias
independientes se calcula usando la
complejidad ciclomtica
CC = Arcos Nodos + 2
El CC da el nmero mnimo de casos
de prueba necesarios para probar
todas las trayectorias independientes
y un nmero mximo de casos
necesarios para cubrimiento de arcos
En el ejemplo tengo que tener 4
casos de prueba para cumplir con el
criterio de cubrimiento de trayectoria
2008
Si se divide en
decisiones de una
nica condicin (esto
no est especificado
en el criterio), es el
ms fino de los vistos
hasta ahora.
La cantidad de casos de
prueba suele ser demasiado
grande. Es un criterio de
referencia
V&V 79
V. U. - Prueba
Caja Blanca
Trayectorias independientes
El ejemplo que venimos siguiendo
Cuntas trayectorias hay
desde el nodo inicial al nodo
final?
Repuesta: 9
Cuntas trayectorias
independientes hay?
2008
Respuesta: CC = 5
V&V 80
V. U. - Prueba
Caja Blanca
Trayectorias independientes
Un ejemplo ms sencillo
Cuntas trayectorias hay
desde el nodo inicial al nodo
final sin repetir el bucle?
Repuesta: 4
Y repitiendo el bucle?
Cuntas trayectorias
independientes hay?
2008
Respuesta: CC = 3
V&V 81
V. U. - Prueba
Caja Blanca
Trayectorias independientes
Un ejemplo ms sencillo Las 4 trayectorias
T1
2008
T2
T3
T4
V&V 82
V. U. - Prueba
Caja Blanca
Trayectorias independientes
Un ejemplo ms sencillo 3 Trayectorias independientes
T1
2008
T3
T4
V&V 83
V. U. - Prueba
Caja Blanca
Trayectorias independientes
Un ejemplo ms sencillo Como llego a T2
T1
T1 + T4
T1 + T4 T3
X2
2008
V&V 84
V. U. - Prueba
Caja Blanca
Trayectorias independientes
Este criterio detecta el defecto de ejemplo que no
detecta CCCM?
If x <> 0
y=5
else
z=zx
If z > 1
z=z/x
else
z=0
2008
V&V 85
V. U. - Prueba
Caja Blanca
Criterio de cubrimiento de caminos
Se ejecutan al menos una vez todos los caminos posibles
(combinaciones de trayectorias)
En el ejemplo hay 100 trillones de
caminos posibles.
Si determinar cada dato de prueba,
el resultado esperado, ejecutar el
caso y verificar si es correcto lleva
5 minutos la tarea llevar
aproximadamente un billon de aos
2008
>= 20
veces
V&V 86
V. U. - Prueba
Caja Blanca
Criterios basados en el flujo de datos
Definiciones
Una variable en el lado izquierdo de una asignacin es una
definicin de la variable
Una variable en el lado derecho de una asignacin es
llamada un uso computacional o un c-uso
Una variable en un predicado booleano resulta en un par
uso predicado o p-uso correspondiendo a las
evaluaciones verdadero y falso del predicado
Un camino (i,n1,n2,,nm,j) es un camino limpiodefinicin desde la salida de i hasta la entrada a j si no
contiene una definicin de x en los nodos de n1 a nm
2008
V&V 87
V. U. - Prueba
Caja Blanca
Ms definiciones
Dada una definicin de x en el nodo nd y un c-uso de x en
el nodo nc-uso, la presencia de un camino limpio-definicin
para x desde nd hasta nc-uso establece la asociacin
definicin-c-uso (nd, nc-uso, x)
Similar al anterior pero con p-uso establece un par de
asociaciones definicin-p-uso (nd, (np-uso,t), x) y
(nd, (np-uso,f), x) correspondiendo a las evaluaciones de
true y false en el nodo np-uso respectivamente
2008
V&V 88
V. U. - Prueba
Caja Blanca
Ms definiciones
camino-du para una variable x:
Es un camino-du si se cumple alguna de las dos
condiciones siguientes
o (n1,,nj,nk) y n1 contiene una definicin de x y nk es un c-uso de x
y (n1,,nj,nk) es limpio-definicin para x y solamente pueden ser
iguales n1 y nk (es decir, no se repiten nodos a menos de n1 y nk)
o Similar para p-uso. La diferencia es que el camino desde n1 hasta
nk no contiene nodos iguales
2008
V&V 89
V. U. - Prueba
Caja Blanca
Ejemplo
x=a+b
2
false
3
x=x+1 4
if x > 10
Definiciones de x: Nodos 1 y 4
C-uso de x: Nodo 4
P-uso de x: Nodo 5
Camino libre-def: (1,2,4) y (1,2,3,5)
Camino-du (1,2,4) establece una
definicin-c-uso (1,4,x)
Camino-du (1,2,3,5) establece dos
definicin-p-uso (1,(5,t),x) y (1,(5,f),x)
true
2008
V&V 90
V. U. - Prueba
Caja Blanca
Criterios de cobertura
Todas las definiciones
o Se ejecuta para cada definicin al menos un camino libredefinicin para algn uso correspondiente (c-uso o p-uso)
V&V 91
V. U. - Prueba
Caja Blanca
Criterios de cobertura
Todos los usos
o Se ejecuta para cada definicin al menos un camino libredefinicin que lleve a todos los c-usos y p-usos correspondientes
2008
V&V 92
V. U. - Prueba
Caja Blanca
Volvamos al ejemplo no resuelto
Definiciones de z: Nodos 2, 5, 7 y 8
C-uso de z: Nodos 5 y 7
P-uso de z: Nodo 6
Def z 2
Definicin-c-uso que resuelve
x <> 0 3
nuestro problema: (5,7,z)
5 Esto es vlido ya que (5,6,7) es un
z = z - x camino libre-definicin
Def x
If x <> 0
y=5
else
z=zx
If z > 1
z=z/x
else
z=0
4
y=5
z>1
7
z=z/x
6
8
z=0
2008
V&V 93
V. U. - Prueba
Caja Blanca
Consideremos criterio Todas las definiciones
Def x
Def z
x <> 0
4
y=5
5
z=z-x
z>1
7
z=z/x
6
8
z=0
9
2008
V&V 94
V. U. - Prueba
Caja Blanca
Consideremos criterio Todos los c-usos
Def x
Def z
x <> 0
4
y=5
5
z=z-x
z>1
7
z=z/x
6
8
z=0
9
2008
V. U. - Prueba
Caja Blanca
Como seleccionamos los casos de prueba
Def x
Def z
x <> 0
4
y=5
5
z=z-x
z>1
7
z=z/x
6
8
z=0
9
2008
V. U. - Prueba
Caja Blanca
El testing basado en flujo de datos es menos usado
que el testing basado en el flujo de control
Es altamente complejo seleccionar los casos de test
2008
V&V 97
V. U. - Prueba
Caja Blanca
Todos los caminos
Todos los caminos-du
Arcos
2008
Instrucciones
V&V 98
V. U. - Prueba
Caja Negra
Las pruebas se derivan solo de la especificacin.
Solo interesa la funcionalidad y no su
implementacin
El probador introduce las entradas en los
componentes y examina las salidas correspondientes
Si las salidas no son las previstas probablemente se
detecto una falla en el software
Problema clave = Seleccionar entradas con alta
probabilidad de hacer fallar al software (experiencia
y algo ms)
2008
V&V 99
V. U. - Prueba
Caja Negra
El programa lee tres nmeros enteros, los que son
interpretados como representaciones de las
longitudes de los lados de un tringulo. El programa
escribe un mensaje que informa si el tringulo es
escaleno, issceles o equiltero.
Escriban casos de prueba para esta especificacin.
2008
V&V 100
V. U. - Prueba
Caja Negra
V&V 101
V. U. - Prueba
Caja Negra
Myers presenta 4 formas para guiarnos a elegir los
casos de prueba usando caja negra
Particiones de equivalencia
Anlisis de valores lmites
Grafos causa-efecto
Conjetura de errores
2008
V&V 102
V. U. - Prueba
Clase de equivalencia
Conjunto de entradas para las cuales suponemos que el
software se comporta igual
V&V 103
V. U. - Prueba
invlidas
Ejemplos:
o la numeracin es de 1 a 999 clase vlida 1 <=
num <= 999, 2 clases invlidas num < 1 y num > 999
o el primer carcter debe ser una letra clase vlida
el primer carcter es una letra, clase invlida el primer
carcter no es una letra
Si se cree que ciertos elementos de una clase de eq. no
son tratados de forma idntica por el programa, dividir la
clase de eq. en clases de eq. menores
2008
V&V 104
V. U. - Prueba
2008
V&V 105
V. U. - Prueba
V&V 106
V. U. - Prueba
V&V 107
V. U. - Prueba
Caja Negra
En el ejemplo del tringulo detectar:
Clases de equivalencia de la entrada
Valores lmite de la entrada
Clases de equivalencia de la salida
Valores lmite de la salida
2008
V&V 108
V. U. - Prueba
Caja Negra
Algunas clases de equivalencia de la entrada
La suma de dos lados es siempre mayor que la del tercero
La suma de dos lados no siempre es mayor que la del
tercero
o Combinacin para todos los lados
2008
V&V 109
V. U. - Prueba
Caja Negra
Algunas clases de equivalencia de la salida
Tringulo escaleno
Tringulo issceles
Triangulo equiltero
No es un tringulo vlido
2008
V&V 110
V. U. - Prueba
Implementar
Revisin
Verificacin Unitaria
V&V 112
Verificacin Unitaria
V&V 113
Pruebas de Integracin
Temario
Pruebas de Mdulos
Estrategias de Integracin
o
o
o
o
o
Big-Bang
Bottom-Up
Top-Down
Sandwich
Por disponibilidad
Comparacin de Estrategias
Builds en Microsoft
2008
V&V 114
Pruebas de Integracin
Proceso de V&V
Especifi- Requerimien- Otros Especificacin Ambiente
caciones
tos
Requeri- de Requeride Uso
de Diseo funcionales mientos del mientos
del Sistema software para el Cliente
Unit
.
.
.
Unit
2008
componente verificado
Component code
Unit
Prueba
Prueba
Prueba
Prueba
Prueba
Integracin Funcional desempeo Aceptacin Instalacin
Mdulos
Sistema
Software
Sistema
Integrados Funcionando Verificado Aceptado
Visin simplificada....
SISTEMA
EN USO
V&V 115
Pruebas de Integracin
Pruebas de Mdulos
El mdulo A usa a los mdulos B, C, D.
El mdulo B usa a los mdulos E y F
El mdulo D usa al mdulo G
A
B
E
2008
C
F
D
G
V&V 116
Pruebas de Integracin
Pruebas de Mdulos
Quiero probar al mdulo B de forma aislada No
uso los mdulos A, E y F
El mdulo B es usado por el mdulo A
o Debo simular la llamada del modulo A al B Driver
o Normalmente el Driver es el que suministra los datos de los casos
de prueba
Call
Driver
A
Call
B
Call
Stub
F
V&V 117
Pruebas de Integracin
Pruebas de Mdulos
Stub (simula la actividad del componente omitido)
2008
V&V 118
Pruebas de Integracin
Pruebas de Mdulos
Driver
Pieza de cdigo que simula el uso (por otro mdulo) del
mdulo que est siendo testeado. Es menos costoso de
realizar que un stub
Puede leer los datos necesarios para llamar al mdulo
bajo test desde un archivo, GUI, etc
Normalmente es el que suministra los casos de prueba al
mdulo que est siendo testeado
2008
V&V 119
Pruebas de Integracin
Estrategias de Integracin
No incremental
Big-Bang
Incrementales
Bottom-Up (Ascendente)
Top-Down (Descendente)
Sandwich (Intercalada)
Por disponibilidad
V&V 120
Pruebas de Integracin
Big-Bang
Se prueba cada mdulo de forma aislada y luego se
prueba la combinacin de todos los mdulos a la vez
Driver
A
Prueba del
mdulo A
B
Stub
B
Stub
C
Stub
D
Stub
E
Prueba del
mdulo B
Se prueban los
otros mdulos de
manera similar: C,
D, E, F y G
Stub
F
A
B
E
2008
C
F
D
G
No se hacen
integraciones
parciales
Pruebas de Integracin
Big-Bang
Pros y contras
Existen buenas oportunidades para realizar actividades en
paralelo (todos los mdulos pueden ser probados a la vez)
Se necesitan stubs y drivers para cada uno de los mdulos
a ser testeados ya que cada uno se testea de forma
individual
Es difcil ver cul es el origen de la falla ya que integr
todos los mdulos a la vez
No se puede empezar la integracin con pocos mdulos
Los defectos entre las interfaces de los mdulos no se
pueden distinguir fcilmente de otros defectos
No es recomendable para sistemas grandes
2008
V&V 122
Pruebas de Integracin
Bottom-Up
Comienza por los mdulos que no requieren de
ningn otro para ejecutar
Se sigue hacia arriba segn la jerarqua usa
Requiere de Drivers pero no de Stubs
Driver
B
Driver
B
Driver
A
Driver
D
Driver
A
Driver
A
A
B
E
C
F
D
G
V&V 123
Pruebas de Integracin
Bottom-Up
La regla general indica que para probar un mdulo todos los
de abajo del mdulo a probar deben estar probados
Supongamos que C, F y D son mdulos crticos (mdulo
complicado, con un algoritmo nuevo o con posibilidad alta de
contener errores, etc) entonces es bueno probarlos lo antes
posible
Driver
A
Driver
B
Driver
D
Driver
A
Driver
B
Driver
A
A
B
F
C
F
D
G
V&V 124
Pruebas de Integracin
Top-Down
Comienza por el mdulo superior de la jerarqua usa
Se sigue hacia abajo segn la jerarqua usa
Requiere de Stubs pero no de Drivers
A
Stub
B
Stub
C
Stub
D
B
Stub
E
Stub
C
Stub
D
Stub
E
Stub
F
A
B
E
2008
C
Stub
F
A
Stub
D
Stub
F
Stub
E
A
D
Stub
G
B
E
C
F
Stub
F
Stub
G
A
D
Stub
G
B
E
C
F
D
G
V&V 125
Pruebas de Integracin
Top-Down
La regla general indica que para probar un mdulo todos los
de arriba (respecto al mdulo a probar) deben estar
probados
Supongamos que C, F y D son mdulos crticos entonces es
bueno probarlos lo antes posible
A
Stub
B
Stub
C
Stub
D
Stub
B
Stub
D
A
B
Stub
E
2008
C
F
B
Stub
E
Stub
D
C
Stub
F
Stub
E
A
D
Stub
G
B
E
C
F
Stub
D
F
A
D
Stub
G
B
E
C
F
D
GV&V 126
Pruebas de Integracin
Otras Tcnicas
Sandwich
Usa Top-Down y Bottom-Up. Busca probar los mdulos
ms crticos primero
A
Stub
B
Stub
C
Stub
D
Por Disponibilidad
Se integran los mdulos a medida de que estos estn
disponibles
2008
V&V 127
Pruebas de Integracin
V&V 128
Pruebas de Integracin
V&V 129
Pruebas de Integracin
Builds en Microsoft
Iteracin: diseo, construccin, prueba
(clientes involucrados en proceso de prueba)
Equipos de tres a ocho desarrolladores
Diferentes equipos responsables por distintas
caractersticas (features)
Autonoma relativa de cada equipo sobre la
especificacin de las caractersticas
Descomposicin en caractersticas
2008
V&V 130
Pruebas de Integracin
V&V 131
Pruebas de Sistemas OO
Temario
Caractersticas
Algunos problemas
Object-Oriented programs and testing Perry y Kaiser
Estrategia N+
2008
V&V 132
Pruebas de SOO
Caractersticas
Normalmente son sistemas ms complicados de
probar (testear)
Caractersticas que lo diferencian de otros sistemas
Encapsulacin de la informacin
Las clases tienen estado y comportamiento. El estado
afecta al comportamiento y el comportamiento afecta al
estado. Esto no es comn en lenguajes procedurales
Las unidades son ms pequeas (clases, objetos)
Los mtodos son ms pequeos
Un sistema OO tiene muchas ms integraciones que uno
procedural
Herencia, polimorfismo y dynamic binding
2008
V&V 133
Pruebas de SOO
Algunos Problemas
Debido a la encapsulacin de la informacin
Si tengo que testear un mtodo multX (multiplica al
atributo x por el pasado en el mtodo) de una clase A y
ese mtodo cambia el valor del atributo x de la clase A,
Cmo s si lo cambi correctamente? Es vlido confiar
en el mtodo getX de la clase A?
Class A {
int x;
public A(int px) {
x = px
}
public void multX(int y) {
x = (x * y) - 1;
}
public int getX(){
return x + 1;
}
}
2008
Class PruebaMetX {
main {
a = new A(5);
a.multX(2);
int res = a.getX();
if res = 10 pruebaOK
else
pruebaFail
}
}
V&V 134
Pruebas de SOO
Algunos Problemas
Debido a la encapsulacin de la informacin
Si la clase est debidamente testeada se crea (en los
primeros tiempos de la OO) que podra ser usada en
cualquier otro sistema comportndose de manera
correcta. Ms adelante veremos que esto no es como se
pensaba.
En definitiva, una gran bondad de la OO que es la
reutilizacin no se pierde, sin embargo, hay que volver
a testear la integracin (esto es debido al cambio
de contexto)
2008
V&V 135
Pruebas de SOO
Algunos Problemas
Debido al estado y comportamiento de los objetos
Cuando un objeto recibe un mensaje no siempre acta de
la misma manera sino que depende del estado en que
este se encuentre (el estado es el valor de todos los
atributos del objeto; incluyendo otros objetos)
Cuando un objeto termina de ejecutar el mtodo, puede
ser que su estado haya cambiado
Esto trae aparejado que los mtodos convencionales de
testing no pueden ser aplicados tal cual. Existen mtodos
que usan diagramas de estado de clases para realizar
pruebas de objetos (vamos a ver uno ms adelante,
estrategia N+)
2008
V&V 136
Pruebas de SOO
Algunos Problemas
Unidades ms pequeas, mtodos ms pequeos y
mayor integracin que lenguajes procedurales
Si bien los objetos manejan estados y esto hace distintas
las pruebas respecto a las tradicionales, como los mtodos
son ms pequeos es ms fcil realizar pruebas de caja
blanca en OO que en lenguajes procedurales
Por otro lado la cantidad de objetos que interactan entre
s es mucho ms grande que los mdulos que interactan
en un lenguaje procedural
Se considera que la prueba de unidad es ms sencilla en
sistemas OO pero las pruebas de integracin son ms
extensas y tienden a ser ms complejas
2008
V&V 137
Pruebas de SOO
Algunos Problemas
Debido a herencia, polimorfismo y dynamic binding
Cuando una superclase cambia un mtodo hay que
testear la subclase ya que puede haber introducido
inconsistencias en est ltima. Esto es sabido desde
siempre
2008
V&V 138
Pruebas de SOO
2008
V&V 139
Pruebas de SOO
Non-Exhaustive Applicability
o Para un programa P existe un test set T tal que P es
adecuadamente testeado por T, y T no es un test exhaustivo
Monotonicity
o Si T es adecuado para P y T es un subconjunto de T entonces T
es adecuado para P
2008
V&V 140
Pruebas de SOO
Complexity
o Para todo n > 0, hay un programa P, tal que P es adecuadamente
testeado por un test set de tamao n pero no por un test set de
tamao n 1
Statement coverage
o Si T es adecuado para P entonces T causa que toda sentencia
ejecutable de P sea ejecutada
2008
V&V 141
Pruebas de SOO
2008
V&V 142
Pruebas de SOO
Anticomposition
o Testear adecuadamente cada componente de forma aislada no
necesariamente testea adecuadamente todo el programa. La
integracin de dos componentes resulta en interacciones que no
pueden surgir en aislamiento
2008
V&V 143
Pruebas de SOO
2008
V&V 144
Pruebas de SOO
Realidad:
El axioma anticomposition nos recuerda la necesidad de
volver a testear tambin todas las unidades dependientes
porque un programa que fue testeado adecuadamente de
forma aislada puede no estar adecuadamente testeado en
combinacin. Esto significa que adems del testeo de
unidad que hay que realizar en la clase modificada
tambin hay que realizar testeo de integracin
2008
V&V 145
Pruebas de SOO
2008
Volver a
Testear
No se
vuelve a
testear
V&V 146
Pruebas de SOO
Realidad:
El axioma antidecomposition nos dice lo contrario. El uso
de subclases agrega esta inesperada forma de
dependencia porque provee un nuevo contexto para las
componentes heredadas.
2008
V&V 147
Pruebas de SOO
met2(p1,p1)
}
met2(p1,p2){}
B
//redefine met2
met2(p1,p2){}
2008
V&V 148
Pruebas de SOO
2008
V&V 149
Pruebas de SOO
Realidad:
Aunque muy probablemente los dos mtodos (el de la
superclase y el sobre-escrito en la subclase) computen
una funcin semnticamente similar un test set adecuado
para uno no tiene porque ser adecuado para el otro. Esto
se deduce a partir del axioma antiextensionality
2008
V&V 150
Pruebas de SOO
2008
V&V 151
Pruebas de SOO
Testeo de Unidad en OO
Es un acuerdo casi universal que el objeto es la
unidad bsica para el diseo de casos de prueba
Otras unidades para testear son agregaciones de
clases: class cluster (normalmente patterns de
diseo) y pequeos subsistemas
El testing de sistemas orientados a objetos difiere en
algunos aspectos del testing de sistemas
estructurados
2008
V&V 152
Pruebas de SOO
Estrategia N+
Como mencionamos hay clases que son estadodependientes
Ejemplo: Lista o Pila
o Estados: Vaca, ConElementos, Llena
V&V 153
Pruebas de SOO
Estrategia N+
Diagrama de estado de la clase Pila
push(e:Element) [n<maxSize-1]
get():Element [n=1]
Pila(t:int) [t>=1]
push(e:Element) [n=maxSize-1]
Vacia
get():Element [n=1]
Pila(t:int, e:Element) [t=1]
Llena
get():Element [n!=1]
get():Element [n>1]
Pila(t:int, e:Element) [t>1]
push(e:Element) [n=maxSize-1]
ConElementos
push(e:Element) [n<maxSize-1]
2008
V&V 154
Pruebas de SOO
Estrategia N+
La estrategia N+ es una estrategia propuesta por
Binder y se divide en dos partes
All round-trip path
Sneak paths
Sneak paths
Los casos de prueba deben cubrir:
o Todos los mensajes no esperados en cierto estado (ejemplo: un
push en el estado lleno)
2008
V&V 155
Pruebas de SOO
Estrategia N+
All round-trip path
Primero construimos el rbol de transicin haciendo una
recorrida en profundidad (tambin puede ser en amplitud)
del diagrama de estados
La recorrida de un camino se detiene siempre que el
estado al que se llega ya est presente en el rbol
En el caso de guardas con varios conectores se agregan
transiciones. No vamos a profundizar en este tema
Luego para cada camino desde el nodo inicial hasta el
final se realiza un caso de prueba (esto asegura cumplir
con el criterio All round-trip path)
o TODOS LOS CASOS JUNTOS CUBREN ALL ROUND TRIP PATH
2008
V&V 156
Pruebas de SOO
Estrategia N+
Pila(t:int, e:Element) [t>1]
Start
Pila(t:int) [t>=1]
Vacia
push(e:Element) [n<maxSize-1]
Llena
ConElementos
push(e:Element) [n=maxSize-1]
push(e:Element) [n=maxSize-1]
Llena
ConElementos
get():Element [n=1]
push(e:Element) [n<maxSize-1]
get():Element [n>1]
ConElementos
ConElementos
2008
Vacia
Llena
get():Element [n!=1]
get():Element [n=1]
ConElementos
Vacia
V&V 157
Pruebas de SOO
Estrategia N+
Un caso de prueba:
Pila p = new Pila(2);
Chequear poscondiciones del mtodo Pila
Chequear estado de la clase = Vacia
Element e = new Element();
p.push(e);
Chequear poscondiciones del mtodo push
Chequear estado de la clase = ConElementos
p.push(e);
Chequear poscondiciones del mtodo push
Chequear estado de la clase = Llena
Element z = p.get();
Chequear poscondiciones del mtodo get
Chequear estado de la clase = ConElementos
2008
V&V 158
Pruebas de SOO
Estrategia N+
Cada estado debe estar definido en funcin de
restricciones respecto a los miembros de la clase
A partir de estas restricciones se puede chequear en
que estado est la clase
Otra forma es proveer mtodos isEstate() que
devuelven true si la clase se encuentra en el estado
y false en caso contrario. Estos mtodos chequean
las restricciones
2008
V&V 159
Pruebas de SOO
Estrategia N+
Sneak paths
Pongo a la clase en un estado y le mando mensajes no
vlidos
Ejemplos:
o La clase est en el estado Llena y le mando mensaje push(e)
o La clase est en el estado Vaca y le mando un mensaje get()
2008
V&V 160
Pruebas de SOO
Tipos de Testing OO
Propuesta muy comn:
Testing de mtodos individuales
o Dada la definicin funcional de un mtodo se testea segn
tcnicas que ya vimos
Testing intraclase
o Se busca testear la relacin entre los mtodos de una clase. Por
ejemplo, estrategia N+. Existen otras formas
Testing interclases
o Similar al test de integracin solo que como ya se comento es ms
complejo por la cantidad de interacciones
Testing funcional
Etc...
V&V 161
Prueba de Desempeo
Prueba de Aceptacin
Prueba de Instalacin
2008
V&V 162
Proceso de V&V
Especifi- Requerimien- Otros Especificacin Ambiente
caciones
tos
Requeri- de Requeride Uso
de Diseo funcionales mientos del mientos
del Sistema software para el Cliente
Unit
.
.
.
Unit
2008
componente verificado
Component code
Unit
Prueba
Prueba
Prueba
Prueba
Prueba
Integracin Funcional desempeo Aceptacin Instalacin
Mdulos
Sistema
Software
Sistema
Integrados Funcionando Verificado Aceptado
Visin simplificada....
SISTEMA
EN USO
V&V 163
Prueba de desempeo
Verifica los requerimientos no funcionales del sistema
Prueba de aceptacin
Se realiza junto con el cliente. Busca asegurar que el
sistema es el que el cliente quiere
Prueba de instalacin
Se realizan las pruebas en el ambiente objetivo
2008
V&V 164
Prueba de Funcin
La idea es probar las distintas funcionalidades del
sistema
Se prueba cada funcionalidad de forma individual
o Esto puede ser testeo de casos de uso
V&V 165
2008
V&V 166
V&V 167
2008
V&V 168
Condiciones de Prueba
Condiciones
1. Normal
Tipo de Resultado
Caso
Retiro exitoso
2008
No exitoso
V&V 169
Condiciones de Prueba
Condiciones
1. Normal
Tipo de Resultado
Caso
Retiro exitoso
2008
No exitoso
V&V 170
Casos de Prueba
\Caso
A1
A2
A3
A4
13131
13131
13131
23232
9001
9001
9001
9002
Cuenta
CA128
CC321
CC321
CA228
Monto
100
500
12
Entradas
Tarjeta
PIN
Importe
invlido
Salidas
Dispensa
Dev.tarjeta
Recibo
Condics.
2008
1200
100
Sin saldo
$100
$500
$1200
13131...
13131...
13131...
1.1
1.2
3
V&V 171
Prueba de Desempeo
Lo esencial es definir
Procedimientos de prueba
o Ejemplo: Tiempo de respuesta
Simular la carga, tomar los tiempos de tal manera, nmero de
casos a probar, etc
Criterios de aceptacin
o Ejemplo
El cliente lo valida si en el 90% de los casos de prueba en el
ambiente de produccin se cumple con los requerimientos de
tiempo de respuesta
V&V 172
Prueba de Desempeo
Prueba
Prueba
Prueba
Prueba
Prueba
Prueba
Prueba
Prueba
Prueba
Prueba
Prueba
2008
de
de
de
de
de
de
de
de
de
de
de
estrs (esfuerzo)
volumen
facilidad de uso
seguridad
rendimiento
configuracin
compatibilidad
facilidad de instalacin
recuperacin
confiabilidad
documentacin
V&V 173
Prueba de Desempeo
Prueba de estrs (esfuerzo)
Esta prueba implica someter al sistema a grandes cargas
o esfuerzos considerables.
No confundir con las pruebas de volumen. Un esfuerzo
grande es un pico de volmenes de datos (normalmente
por encima de sus lmites) en un corto perodo de tiempo
No solo volmenes de datos sino tambin de usuarios,
dispositivos, etc
Analoga con dactilgrafo
o Volumen: Ver si puede escribir un documento enorme
o Esfuerzo: Ver si puede escribir a razn de 50 palabras x minuto
Ejemplo
o Un sistema de conmutacin telefnica es sometido a esfuerzo
generando un nmero grande de llamadas telefnicas
2008
V&V 174
Prueba de Desempeo
Prueba de volumen
Esta prueba implica someter al sistema a grandes
volmenes de datos
El propsito es mostrar que el sistema no puede manejar
el volumen de datos especificado
Ejemplos
o A un compilador lo ponemos a compilar un programa
absurdamente grande
o Un simulador de circuito electrnico puede recibir un circuito
diseado con miles de componentes
2008
V&V 175
Prueba de Desempeo
Prueba de facilidad de uso
Trata de encontrar problemas en la facilidad de uso
Algunas consideraciones a tener en cuenta
o Ha sido ajustada cada interfaz de usuario a la inteligencia y nivel
educacional del usuario final y a las presiones del ambiente sobr
el ejercidas?
o Son las salidas del programa significativas, no-abusivas y
desprovistas de la jerga de las computadoras?
o Son directos los diagnsticos de error (mensajes de error) o
requieren de un doctor en ciencias de la computacin?
V&V 176
Prueba de Desempeo
Prueba seguridad
La idea es tratar de generar casos de prueba que burlen
los controles de seguridad del sistema
Ejemplo
o Disear casos de prueba para vencer el mecanismo de proteccin
de la memoria de un sistema operativo
V&V 177
Prueba de Desempeo
Prueba de rendimiento
Generar casos de prueba para mostrar que el sistema no
cumple con sus especificaciones de rendimiento
Casos
o Tiempos de respuesta en sistemas interactivos
o Tiempo mximo en ejecucin de alguna tarea
V&V 178
Prueba de Desempeo
Prueba de configuracin
Se prueba el sistema en distintas configuraciones de
hardware y software
Como mnimo las pruebas deben ser realizadas con las
configuraciones mnima y mxima posibles
Prueba de compatibilidad
Son necesarias cuando el sistema bajo test tiene
interfaces con otros sistemas
Se trata de determinar que las funciones con la interfaz no
se realizan segn especifican los requerimientos
2008
V&V 179
Prueba de Desempeo
Prueba de facilidad de instalacin
Se prueban las distintas formas de instalar el sistema
Prueba de recuperacin
Se intenta probar que no se cumplen los requerimientos
de recuperacin
Para esto se simulan o crean fallas y luego se testea la
recuperacin del sistema
2008
V&V 180
Prueba de Desempeo
Prueba de confiabilidad
El propsito de toda prueba es aumentar la confiabilidad
del sistema
Este tipo de prueba es aquella que se realiza cuando
existen requerimientos especficos de confiabilidad del
sistema Se deben disear casos de prueba especiales
Esto no siempre es fcil
o Ejemplo: El sistema Bell TSPS dice que tiene un tiempo de
detencin de 2 horas en 40 aos.
No se conoce forma de probar este enunciado en meses o en
unos pocos aos
V&V 181
Prueba de Desempeo
Prueba de documentacin
La documentacin del usuario debe ser objeto de
inspeccin controlando su exactitud y claridad (entre
otros)
Adems todos los ejemplos que aparezcan en la misma
deben ser codificados como casos de prueba. Es
importantsimo que al ejecutar estos casos de prueba los
resultados sean los esperados
o Un sistema uruguayo tiene en su manual de usuario un ejemplo
que no funciona en el sistema
2008
V&V 182
Prueba de Desempeo
Se mostraron algunos de los tipos de prueba pero
no se dio ningn mtodo de cmo estas se realizan
Los mtodos y los tipos de prueba dependen mucho
del sistema que se est diseando
Existen herramientas que automatizan algn tipo de
estas pruebas. Por ejemplo las pruebas de esfuerzo
2008
V&V 183
Prueba de Aceptacin e
Instalacin
Prueba de aceptacin
Prueba de instalacin
Su mayor propsito es encontrar errores de instalacin
Es de mayor importancia si la prueba de aceptacin no se
realiz en el ambiente de instalacin
2008
V&V 184
Otras Pruebas
Desarrollo para mltiples clientes
Prueba Alfa
o Realizada por el equipo de desarrollo sobre el producto final
Prueba Beta
o Realizada por clientes elegidos sobre el producto final
o Se podra decir que Windows est siempre en Beta testing
2008
V&V 185
Otras Pruebas
Pruebas de regresin
Despus de que se realizan modificaciones se verifica que
lo que ya estaba probado sigue funcionando
Conviene tener automatizadas las pruebas as las
pruebas de regresin se pueden hacer con mucha mayor
rapidez?
Pruebas piloto
Se pone a funcionar el sistema en produccin de forma
localizada
Menor impacto de las fallas
2008
V&V 186
Herramientas
Temario
Distintos tipos de herramientas
Clasificacin de testingfaqs.org
2008
V&V 187
Herramientas
V&V 188
Herramientas
Captura y reproduccin
o Digitaciones, clicks y movimientos del mouse
o Se guardan los datos y los resultados esperados
o Luego de detectar un defecto y corregirlo son usadas para repetir
las pruebas
2008
V&V 189
Herramientas
Ambientes integrados
o Ofrecen conjunto de facilidades
o Integran los tipos de herramientas mencionados ms algunos
otros tipos no vistos en el curso
2008
V&V 190
Clasificacin
Herramientas
www.testingfaqs.org/tools.htm
V&V 191
Clasificacin
Herramientas
www.testingfaqs.org/tools.htm
V&V 192
Clasificacin
Herramientas
www.testingfaqs.org/tools.htm
Test Managers
Ayudan a gerenciar grandes cantidades de test set
2008
V&V 193
Herramientas
JUnit
Artculo a leer: Infected: Programmers Love Writing
Tests
JUnit es una herramienta de testing unitario para
Java
Para cada clase creamos otra que es la que va a
testear el correcto funcionamiento de esta
2008
V&V 194
Herramientas
JUnit
El famoso ejemplo del tringulo
public class Triangulo {
private int lado1 = 0; private int lado2 = 0; private int lado3 = 0;
public Triangulo(int parLado1, int parLado2, int parLado3) throws Exception {
if ( ((parLado1 + parLado2) <= parLado3) ||
((parLado2 + parLado3) <= parLado1) ||
((parLado1 + parLado3) <= parLado2) )
throw (new Exception());
lado1 = parLado1;
lado2 = parLado2;
lado3 = parLado3;
}
//por motivos didacticos se usa el if y no se hace el return directamente
public boolean isEscaleno() {
if ( (lado1 != lado2) && (lado1 != lado3) && (lado2 != lado3) ) return true;
return false;
}
public boolean isEquilatero() {
if ( (lado1 == lado2) && (lado2 == lado3) ) return true;
return false;
}
public boolean isIsosceles() { //si es equilatero tambin es isosceles
if ( (lado1 == lado2) || (lado2 == lado3) || (lado1 == lado3) ) return true;
return false;
}
}
2008
V&V 195
Herramientas
JUnit
public class TrianguloTest extends junit.framework.TestCase {
private Triangulo tEscaleno;
private Triangulo tNoEscaleno;
protected void setUp() {
try {
tEscaleno = new Triangulo(2,3,4);
tNoEscaleno = new Triangulo(2,2,3);
}
catch (Exception e) {
}
}
Heredo de la clase
TestCase de JUnit
Al ejecutar el test se
llama automticamente
al mtodo setUp
Testea la creacin de
un tringulo que no es
vlido
2008
V&V 196
Planificacin de V&V
Temario
Modelo V
Generalidades
Planes de prueba
2008
V&V 197
Planificacin de V&V
ANALISIS DE
REQUERIMIENTOS
Modelo V
Plan de Pruebas de
Aceptacin
Validar requerimientos
DISEO DEL
SISTEMA
PRUEBA DE
ACEPTACION
DISEO
DETALLADO
OPERACION
Y MANTENIMIENTO
Plan de Pruebas
de integracin
PRUEBA DEL
SISTEMA
PRUEBA DE
INTEGRACION
IMPLEMENTACION
DE PROGRAMAS Y
PRUEBA UNITARIA
2008
V&V 198
Planificacin de V&V
Generalidades
El mayor error cometido en la planificacin de un
proceso de prueba
V&V 199
Planificacin de V&V
Generalidades
La V&V es un proceso caro se requiere llevar una
planificacin cuidadosa para obtener el mximo
provecho de las revisiones y las pruebas para
controlar los costos del proceso de V&V
El proceso de planificacin de V&V
Pone en la balanza los enfoques esttico y dinmico para
la verificacin y la validacin
Utiliza estndares y procedimientos para las revisiones y
las pruebas de software
Establece listas de verificacin para las inspecciones
Define el plan de pruebas de software
V&V 200
Planificacin de V&V
2008
V&V 201
Planificacin de V&V
Elementos probados
o Se especifican los productos del proceso de software a probar
2008
V&V 202
Planificacin de V&V
Restricciones
o Se anticipan las restricciones que afectan al proceso de prueba,
como por ejemplo la escasez de personal
V&V 203
Planificacin de V&V
2008
V&V 204
Planificacin de V&V
Criterios de terminacin
o Elegir criterios realistas de terminacin de las pruebas. Ej: criterios
de cobertura
Mtodos a utilizar
o Descripcin de los mtodos a usar para cada tipo de prueba
(unitaria, etc). Por ejemplo, recorridas en unitarias. Describe el
uso de herramientas
2008
V&V 205
Planificacin de V&V
2008
V&V 206
Terminacin de la Prueba
Temario
Ms faltas ms por encontrar
Criterios de terminacin
Estimar cantidad de defectos
2008
V&V 207
Terminacin de la Prueba
Estudio de
Myers en
1979
V&V 208
Terminacin de la Prueba
Criterios de Terminacin
Es la ltima falta detectada la ltima que quedaba?
No es razonable esperar descubrir todas las faltas
de un sistema
En vista de este dilema y que la economa muchas veces
es quien dictamina que la prueba debe darse por
terminada, surgen las alternativas de terminar la prueba
de forma puramente arbitraria o de usar algn criterio til
para definir la terminacin de la prueba
2008
V&V 209
Terminacin de la Prueba
Criterios de Terminacin
V&V 210
Terminacin de la Prueba
2008
V&V 211
Terminacin de la Prueba
2008
V&V 212
Terminacin de la Prueba
2008
V&V 213
Terminacin de la Prueba
V&V 214
Terminacin de la Prueba
2008
V&V 215
Terminacin de la Prueba
Siembra de Defectos
Sirve para estimar el nmero de defectos
Se agregan defectos intencionalmente en un mdulo
Se hacen pruebas para detectar defectos en ese mdulo
Se usa la siguiente relacin (creer o reventar)
Defectos sembrados detectados
V&V 216
Terminacin de la Prueba
Pruebas Independientes
Pongo dos grupos de prueba a probar el mismo programa
Defectos encontrados por Grupo 1 = x
Defectos encontrados por Grupo 2 = y
Defectos en comn = q entonces q<=x & q<=y
Defectos totales = n (nmero a estimar)
Efectividad = cantDefectosEncontrados / n
Efectividad Grupo1 = E1 = x/n
E2 = y/n
Consideremos el Grupo 1 y tomemos que la tasa de
efectividad es igual para cualquier parte del programa
oEl Grupo 1 encontr q de los y defectos detectados por el grupo 2
E1 = q / y
V&V 217
Terminacin de la Prueba
3 4
Semana
2008
5 6
3 4
Semana
5 6
Terminacin de la Prueba
Una Combinacin
Para la fase de prueba de sistema la mezcla de las
dos ltimas categoras puede resultar positiva
Se pararn las pruebas cuando se detecte un nmero
predeterminado de defectos o cuando haya
transcurrido el tiempo fijado para ello, eligiendo la que
ocurra ms tarde, siempre que un anlisis del grfico
del nmero de defectos detectados por unidad de
tiempo en funcin del tiempo indique que la prueba se
ha tornado improductiva
2008
V&V 219