Upload
duglaskha
View
35
Download
0
Embed Size (px)
Citation preview
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
1
INGENIERA del SOFTWARECurso 2006/07
Ingeniera en InformticaFacultad de Informtica
UPV/EHU
Departamento de Lenguajes y Sistemas Informticos
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
2
Tema 3. Evaluacin / Pruebas del Software
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
3
ndice
Introduccin Objetivos y principios de las pruebas
Diseo de casos de prueba del software Cul debe ser el conjunto de casos de prueba
que tenga la mayor probabilidad de descubrirdefectos en el software?
Estudio de tcnicas de diseo de casos de prueba: cajanegra y caja blanca
Las pruebas en el proceso unificado de desarrollo de software Cmo integrar las tcnicas de diseo de casos
de prueba en una serie de pasos bien planificadosque obtienen una construccin correcta del software?
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
4
Introduccin. Objetivos de una prueba
La prueba es un proceso de ejecucin con la intencin de descubrir errores.
Un buen caso de prueba es aquel que tiene una probabilidad muy alta de descubrir un nuevo error.
Un caso de prueba no debe ser redundante. Debe ser el mejor de un conjunto de pruebas de propsito
similar. No debe ser ni muy sencillo ni excesivamente complejo: es mejor
realizar cada prueba de forma separada si se quiere probar diferentes casos.
Una prueba tiene xito si descubre un nuevo error Lo que no hace una prueba
Una prueba no asegura la ausencia de defectos, slo puede demostrar que existen errores en el software.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
5
Introduccin. Principios de las pruebas
Se debe hacer un seguimiento hasta ver si se cumplen los requisitos del cliente.
Las pruebas debern planificarse mucho antes de que empiecen.
El principio de Pareto es aplicable a la prueba del software. El 80% de los errores est en el 20% de los mdulos. Hay que identificar esos mdulos y probarlos muy bien
Empezar por lo pequeo y progresar hacia lo grande. No son posibles las pruebas exhaustivas. Son ms eficientes las pruebas dirigidas por un equipo
independiente.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
6
Caso de prueba
Es un conjunto de entradas de prueba, condiciones de ejecucin y resultados esperados
Tiene un objetivo concreto (probar algo)
Ejemplo: CASO de PRUEBA CP1 para CASO de USO Entrada Sistema
ENTRADA: usuario hacker password kaixo
CONDICIONES DE EJECUCIN: no existe en la tabla CUENTA(usuario,pass,intentos) la tupla pero s una tupla
RESULTADO ESPERADO: no deja entrar y cambia la tupla a
Objetivo del caso de prueba: comprobar que no deja entrar a un usuario existente con un password equivocado.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
7
Procedimiento de prueba
Pasos que hay que llevar a cabo para probar uno (o varios) casos de prueba: cmo probar el caso de prueba y verificar si ha tenido xito?
Ejemplo: Procedimiento de prueba para CP1
- Ejecutar la clase Presentacion
- Comprobar que en la BD passwords.mdbexiste la tupla
- Escribir hackeren la interfaz grfica (en el campo de texto etiquetado Escribe nombre usuario
- Escribir kaixoen la interfaz grfica (en el campo de texto Escribe password)
- Pulsar botn Acceder al sistema
- Comprobar que no deja entrar al sistema y que en la BD la tupla ha cambiado a
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
8
Componente de prueba
Programa que automatiza la ejecucin de uno (o varios) casos de prueba Una vez escrito, se puede probar muchas veces (cada vez que haya un
cambio en el cdigo de una clase que pueda afectarle)
public class ComponentePruebaEntrSistema {InterfaceLogicaNegocio ln; InterfaceOperacionesParaPruebas lp;public static void main(String[] args) {lp.aniadirUsuario(hacker,hola,3); // Crea usuario con pass y numInt.boolean b = ln.hacerLogin(hacker,kaixo);if (b) System.out.println(Error CP1: Permite entrada);else { int j = lp.comprobarUsuario(hacker,hola); // Dev. N intentos
if (j!=4) System.out.println(Error CP1: No incr.);else System.out.println(CP1 correcto);} // Fin caso prueba CP1
NOTA: se necesitarn otros mtodos como comprobarUsuario,aniadirUsuarioque pueden pertenecer a la lgica del negocio o no (en este caso se considera que no)
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
9
Cmo escribir componentes de prueba?
Se puede escribir ad hoc Por cada caso de prueba, se escribe el
cdigo correspondiente en el componente (cambiara el cdigo)
Se escribe el cdigo del componente de tal manera que recorra en una BD los casos de prueba y los ejecute.
Cada vez que se aada un caso de prueba, simplemente se aade en la BD, pero el cdigo del componente no cambiara
Se pueden usar entornos de trabajo disponibles para pruebas Ejemplo: JUnit para Java
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
10
Diseo de casos de prueba.
Definir los casos de prueba que tengan la mayor
probabilidad de encontrar el mayor nmero de errores
con la mnima cantidad de esfuerzo y tiempo.
Pruebas de caja blanca
Encontrar casos de prueba viendo el cdigo
interno
Pruebas de caja negra
Encontrar casos de prueba viendo los
requisitos funcionales
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
11
Pruebas de Caja Blanca: viendo el cdigo interno
Aseguran que la operacin interna del programa se ajusta a las especificaciones y que todos los componentes internos se han probado adecuadamente. Usa la estructura de control para obtener los casos de prueba.
Intentan garantizar que todos los caminos de ejecucin del programa quedan probados.
Pruebas de estructura de control:
Del camino bsico: Disear un caso de prueba por cada camino indpte
De condicin: Disear casos de prueba para que todas las condiciones
del programa se evalen a cierto/falso
De bucles: Disear casos de prueba para que se intente ejecutar un
bucle 0,1,,n-1,n y n+1 veces (siendo n el nmero mximo)
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
12
Ejemplo: EsPrimo
El mtodo Esprimo.esPrimopuede ser llamado
con un array de Strings
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
13
Ejemplo: casos de prueba de caja blanca para EsPrimo
ENTRADAOBJETIVO A PROBAR
-Probar todos los caminos
-Probar todas las condiciones
-Probar bucles
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
14
Ejemplo: Componente de prueba para EsPrimo
public class ComponentePruebaEsPrimo {public static void main(String[] args) {
String[] s1 = new String[0];try {boolean b1 = Esprimo.esPrimo(s1);
System.out.println(CP1 incorrecto);}catch (ErrorFaltaParametro e)
{System.out.println(CP1 correcto);}catch (Exception e) {System.out.println(CP1 incorrecto);}String[] s2 = new String[2]; s2[0]=xx; s2[1]=yy;try {boolean b1 = Esprimo.esPrimo(s2);
System.out.println(CP2 incorrecto);}catch (ErrorSolo1Parametro e)
{System.out.println(CP2 correcto);}catch (Exception e) {System.out.println(CP2 incorrecto);}...}
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
15
Ejemplo: Componente de prueba para EsPrimo (usando JUnit)
package PruebasConJUnit;public class ComponentePruebaEsPrimo {// Un mtodo por cada caso de pruebapublic void testPrimoSinPars() {
num = new String[0];try {result= Esprimo.esPrimo(num);
assertTrue(false);}catch (Exception e)
{assertTrue(e instanceof ErrorFaltaParametro);}}
// RESTO DE CASOS DE PRUEBA...}
java junit.swingui.TestRunner PruebasConJUnit.ComponentePruebaEsPrimo
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
16
Pruebas de Caja Negra
Se centra en los requisitos funcionales del software.
Permite obtener un conjunto de condiciones de entrada que ejerciten completamente los requisitos funcionales del programa.
No es una alternativa a la prueba de caja blanca. Complementan a las pruebas de caja blancaMejor disear los casos de prueba usando los dos tipos de tcnicas
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
17
Prueba de Caja Negra
Prueba de los valores lmite Los errores suelen situarse en los lmites. Si la entrada se encuentra en el rango a..b
entonces hay que probar con los valores a -1, a, a + 1, b - 1, b y b + 1
Si la entrada es un conjunto de valores entonces hay que probar con los valores max-1, max, max+1, min-1, min y min+1
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
18
Ejemplo: casos de prueba de caja negra para EsPrimo
ENTRADAOBJETIVO A PROBAR
-Valores lmite
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
19
Prueba de Caja Negra
Prueba de la particin equivalente Mtodo de prueba de caja negra que divide el dominio de
entrada de un programa en un conjunto de clases de datos de los que se pueden derivar casos de prueba
Si la entrada es un cdigo formado por 2 partes, la primera un prefijo opcional de 3 dgitos, que empiece por 9 y la contrasea que sea una cadena de hasta 6 caracteres que empiece necesariamente por una letra y que puede contener letras, dgitos y el smbolo $
Se pueden disear casos de prueba, cada uno de los cuales representa a un conjunto de casos de prueba
prefijo contrasea
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
20
Prueba de Caja Negra prefijo puede ser
representa a entrada en blanco 743 representa a nmero 999 8pW representa a cadena que contiene carcter no dgito
contrasea puede ser representa a entrada en blanco 4a2cd$ representa a cadena que empieza por dgito y que slo
contiene letras, dgitos y $ 4a;2c$ representa a cadena que empieza por dgito y que
contiene algn carcter no letra, dgito o $ $ab4$b representa a cadena que no empieza por dgito y
que slo contiene letras, dgitos y $ b$$;a5 representa a cadena que no empieza por dgito y que
contiene algn carcter no letra, dgito o $
prefijo contrasea
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
21
Ejemplo: casos de prueba de caja negra para EsPrimo
Los siguientes casos de prueba (que ya estaban) tambin salen aplicando el criterio particin equivalente
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
22
Pruebas en entornos y aplicaciones especializadas
Pruebas de interfaces grficas de usuario Pruebas sobre ventanas. Pruebas sobre mens y uso del
ratn. Pruebas de entrada de datos.
Pruebas de documentacin y de ayuda.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
23
Ejemplo: casos de prueba de negra para EsPrimo
-Al cerrar (minimizar,..) la ventana se cierra (minimiza,)
-Al pulsar el botn, aparece en el campo de texto el resultado
-Buscar ayuda de cmo utilizar la interfaz
Ejemplos de CASOS de PRUEBA
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
24
Disear un caso de prueba de caja blanca, un caso de prueba de caja negra basado en la particin equivalente, un caso de prueba de caja negra basado en los valores lmites y un caso de prueba de interfaz de usuario grfica para el caso de uso ENTRAR EN EL SISTEMA que se describe a continuacin.El flujo de eventos del caso de uso ENTRAR EN EL SISTEMA-El usuario escribe su nombre y el password-El sistema comprueba que existe una cuenta con ese nombre y password y, si es as, se le da permiso para entrar en el sistema.-Si existe el nombre de usuario pero el password es incorrecto permite reintroducir el password hasta un mximo de tres veces.Requisitos no funcionales del caso de uso ENTRAR EN EL SISTEMA-El password no debe ser visible-Los nombres de usuarios slo pueden contener letras y como mnimo 5 letras.
Ejercicio
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
25
Ejercicio: Escribir componente de prueba, que pruebe el siguiente CP
Caso de prueba CP2Entrada: usuario correcto password acertadoCondiciones de ejecucin: en la tabla existe ese usuario con ese password y con 1 intento fallido anterior (nmero inferior a 3)Resultado esperado: dar paso y el nmero de intentos en la tabla USUARIO(cuenta,passord,numIntentos) para correcto es 0
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
26
Pruebas en el proceso unificado
Objetivos: Planificar // Disear e implementar // Realizar las pruebas
Requisitos
Diseo
Implementacin
Prueba
Anlisis
ite r.# 1
ite r.# 2
ite r.# n
ite r.#n+ 1
ite r.# n+2
iter.#m
ite r.#m +1
Inicio Elaboracin Construccin Transicin
Iteraciones:
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
27
Modelo de pruebas
X X
Modelo de pruebas Sistema de pruebas
Caso de prueba Procedimientode prueba
Componentede prueba
1
* * *
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
28
Modelo de pruebas
Artefacto: caso de prueba Un caso de prueba especifica una forma de
probar el sistema, incluyendo la entrada y salida con la que se ha de probar y las condiciones bajo las que ha de probarse
Artefacto: procedimiento de prueba Un procedimiento de prueba especifica cmo
realizar uno o varios casos de prueba Artefacto: componente de prueba
Automatiza uno o varios procedimientos de prueba o partes de ellos.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
29
Actividad del flujo de trabajo de Implementacin
Actividad: realizar prueba de unidad Probar componentes implementados como
unidades individuales prueba de especificacin (de caja negra)
que verifica el comportamiento observable externamente
prueba de estructura (de caja blanca) que verifica la implementacin interna
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
30Actividades del flujo de trabajo de Prueba
Actividad: planificar prueba Describir una estrategia de prueba, estimar los
requisitos y planificar el esfuerzo de la prueba Actividad: disear prueba
identificar casos de prueba y procedimientos de prueba
disear casos de prueba de integracin (para verificar que los componentes interaccionan correctamente)
disear la prueba del sistema (para verificar que el sistema funciona correctamente como un todo)
disear los casos de prueba de regresin Al aadir un nuevo mdulo puede haber problemas con
mdulos que antes iban bien. Las pruebas de regresin son un conjunto de pruebas (ya realizadas antes) que aseguran que los cambios no han dado lugar a cambios colaterales.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
31
Actividades del FT de Prueba
Actividad: implementar prueba Automatizar los procedimientos de prueba, creando componentes
de prueba, si es posible.
Actividad: realizar pruebas de integracin Realizar las pruebas, comparar con los resultados esperados e
informar de los defectos
Actividad: realizar prueba de sistema Se comienzan despus de las de integracin y se realizan de
manera anloga (realizar, comparar e informar)
Actividad: evaluar prueba Se comparan los resultados de las pruebas con los objetivos
esbozados en el plan de prueba. Hay que preparar mtricas que permitan determinar el nivel de calidad del software y la cantidad de pruebas a realizar.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
32
Prueba de unidad de EsPrimo
Casos deprueba
Componente Pruebade Esprimo
EsPrimoRESULTADOCodPr NUM SalidaEsper SalReal ResPrueba1 0 no positivo2 1 primo3 2 primo4 3 primo5 4 no primo6 23 primo7 -4 no positivo8 78298234 no primo9 -123412341234123 no positivo10 patata no positivo11 782.98234 no primo
NUM
Tabla PRU_UNIDAD_ESPRIMO
El Componente Prueba de Esprimo recorre la tabla PRU_UNIDAD_ESPRIMO y llama al mdulo Esprimocon el valor de entrada NUM. El resultado obtenido lo escribe en SalReal y si es igual al valor de SalidaEsperdeja OK en ResPrueba, en caso contrario deja ERROR
no positivoprimo
no primo
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
33
Prueba de unidad de EsPrimoComponente Prueba
de EsPrimoAlgoritmo: ComponentePruebaEsPrimoResSQL := ejecutarBD(Select CodPr, NUM, SalidaEsper
from PRU_UNIDAD_ESPRIMO)mientras no fin (ResSQL) hacer
:= siguiente(ResSQL)ResEsPrimo := EsPrimo(N)si ResEsPrimo = SE entonces Prueba := OKsino Prueba := ERRORejecutarBD(Update PRU_UNIDAD_ESPRIMO
Set ResPrueba = %Prueba,SalReal = %ResEsPrimo
where CodPr= %CP)
CodPr NUM SalidaEsper SalReal ResPruebaTabla PRU_UNIDAD_ESPRIMO
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
34
EsPrimo
SiguientePrimoAlgoritmo: SiguientePrimoEntrada: num (entero)Salida: entero
si num
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
35
EsPrimo
SiguientePrimo
Prueba de integracin ascendente de SiguientePrimo y EsPrimo
ORDEN EN EL QUE SE HACEN LAS PRUEBAS:1 ) Prueba de Unidad de EsPrimo2 ) Prueba de Unidad de SiguientePrimo donde se supone que el mdulo EsPrimo ya no contiene errores(en este caso coincide con la prueba de integracin de ambos)
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
36
EsPrimo
SiguientePrimo
Prueba de integracin descendente de SiguientePrimo y EsPrimo(o cmo probar SiguientePrimo si EsPrimo no est disponible)
ORDEN EN EL QUE SE HACEN LAS PRUEBAS:1 ) Prueba de Unidad de SiguientePrimo usando un Resguardo de Esprimo2 ) Prueba de Unidad de EsPrimo3 ) Prueba de integracin de SiguientePrimo con EsPrimo
Resguardo deEsPrimo
SiguientePrimo
SE PRUEBA AS
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
37
Prueba de integracin descendente de SiguientePrimo y EsPrimo(o cmo probar SiguientePrimo si EsPrimo no est disponible)
Resguardo deEsPrimo
SiguientePrimoAlgoritmo: SiguientePrimoEntrada: num (entero)Salida: entero
si num
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
38
Prueba de unidad de SiguientePrimo
Resguardode EsPrimoAlgoritmo: ResguardoEsPrimo
Entrada: numEnt (entero)Salida: String (primo, no primo, no positivo)ResSQL := ejecutarBD(Select SalidaEsper
from PRU_UNIDAD_ESPRIMOwhere NUM = %numEnt)
si fin (ResSQL) entonces devolver no primosino := siguiente(ResSQL)
devolver SEfin si
CodPr NUM SalidaEsper SalReal ResPrueba1 0 no positivo2 1 primo3 2 primo4 3 primo.....................................................................
Tabla PRU_UNIDAD_ESPRIMO
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
39
Creacin de un resguardo
Resguardode EsPrimoAlgoritmo: ResguardoEsPrimo
Entrada: numEnt (entero)Salida: String (primo, no primo, no positivo)ResSQL := ejecutarBD(Select SalidaEsper
from PRU_UNIDAD_ESPRIMOwhere NUM = %numEnt)
si fin (ResSQL) entonces devolver no primosino := siguiente(ResSQL)
devolver SEfin si
CodPr NUM SalidaEsper SalReal ResPrueba1 0 no positivo2 1 primo3 2 primo4 3 primo.....................................................................
Tabla PRU_UNIDAD_ESPRIMO
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
40
Creacin de un resguardo
Resguardode EsPrimo
package resguardo;public class Esprimo {public static boolean esPrimo(String args[]) throw if (args[0].equals(0)) throw new ErrorNoNumeroPositivo();else if (args[0].equals(1)) return true;else if (args[0].equals(2)) return true;else if (args[0].equals(3)) return true;...return false; }}
CodPr NUM SalidaEsper SalReal ResPrueba1 0 no positivo2 1 primo3 2 primo4 3 primo.....................................................................
Tabla PRU_UNIDAD_ESPRIMO
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
41
Bibliografa
Ingeniera del Software. Un enfoqueprctico (5 edicin) Roger S. Pressman Editorial Mc. Graw Hill, 2001 Captulos 17 y 18
El proceso unificado de desarrollo de software Jacobson, Booch, Rumbaugh Editorial Addison Wesley, 1999 Captulo 11
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
42
Ejercicio: Escribir componente de prueba, que pruebe el siguiente CP
Caso de prueba CP2Entrada: usuario correcto password acertadoCondiciones de ejecucin: en la tabla existe ese usuario con ese password y con 1 intento fallido anterior (nmero inferior a 3)Resultado esperado: dar paso y el nmero de intentos en la tabla USUARIO(cuenta,passord,numIntentos) para correcto es 0
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
43
Solucin
public class ComponentePruebaEntrSistema {InterfaceLogicaNegocio ln; OperacionesParaPruebas lp;public static void main(String[] args) {// Obtener lgica negocio y operaciones para pruebas// CP2: usuario y passwords correctos, n intentos no superadolp.aniadirUsuario(correcto,acertado,1); boolean b = ln.hacerLogin(correcto,acertado);if (!b) System.out.println(Error CP2: No permite entrada);else {int j = lp.comprobarUsuario(correcto,acertado);
// Dev. N intentosif (j!=0) System.out.println(Error CP2: No puesto a 0.);else System.out.println(CP2 correcto);}
}
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
44
Caso de prueba CP3Entrada: usuario correcto password acertadoCondiciones de ejecucin: en la tabla existe ese usuario con ese password y con 4 intentos fallidos (nmero superior a 3)Resultado esperado: no dar paso y el nmero de intentos en la tabla USUARIO(cuenta,passord,numIntentos) para correcto es 5
Ejercicio: Escribir componente de prueba, que pruebe el siguiente CP
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
45
Solucin
public class ComponentePruebaEntrSistema {InterfaceLogicaNegocio ln; OperacionesParaPruebas lp;public static void main(String[] args) {// Obtener lgica negocio y operaciones para pruebas// CP3: usuario y passwords correctos, n intentos superadolp.aniadirUsuario(correcto,acertado,4); boolean b = ln.hacerLogin(correcto,acertado);if (b) System.out.println(Error CP3: Permite entrada);else {int j = lp.comprobarUsuario(correcto,acertado);
// Dev. N intentosif (j!=5) System.out.println(Error CP3: No incrementa.);else System.out.println(CP3 correcto);}
}
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
46
Disear un caso de prueba de caja blanca, un caso de prueba de caja negra basado en la particin equivalente, un caso de prueba de caja negra basado en los valores lmites y un caso de prueba de interfaz de usuario grfica para el caso de uso ENTRAR EN EL SISTEMA que se describe a continuacin.El flujo de eventos del caso de uso ENTRAR EN EL SISTEMA-El usuario escribe su nombre y el password-El sistema comprueba que existe una cuenta con ese nombre y password y, si es as, se le da permiso para entrar en el sistema.-Si existe el nombre de usuario pero el password es incorrecto permite reintroducir el password hasta un mximo de tres veces.Requisitos no funcionales del caso de uso ENTRAR EN EL SISTEMA-El password no debe ser visible-Los nombres de usuarios slo pueden contener letras y como mnimo 5 letras.
Ejercicio
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
47
Solucin al ejercicioCaso de prueba de caja blanca:No se puede ya que el cdigo fuente no est accesible.Caso de prueba de caja negra basado en la particin equivalente1) Entrada: usuario pepita password: e445dr Salida: dar paso (usuario y password vlidos; suponiendo que se encuentran en la BD)2) Entrada: usuario pepita2 password e445dr Salida: no dar paso (usuario no vlido por contener caracteres no letras y ms de 5)3) Entrada: usuario pepi password e445dr Salida: no dar paso (usuario no vlido por contener menos de 5 letras)4) Entrada: usuario pep3 password e445dr Salida: no dar paso (usuario no vlido por contener menos de 5 letras, y algunas no ser letras)5) Entrada: usuario password e445dr Salida: no dar paso (usuario en blanco)6) Entrada: usuario 3432432 password e445dr Salida: no dar paso (usuario no vlido por no contener ni una sola letra, aunque s ms de 5 caracteres)7) Entrada: usuario pepita password: Salida: no dar paso (usuario vlido pero password no, suponiendo que se encuentra en la BD)
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
48
Solucin al ejercicioCaso de prueba de caja negra basado en los valores lmite1) Entrada: usuario pepita password: malPassw Salida: no obtener paso
intentar otra vez: usuario pepita password: malPassw Salida: no obtener pasointentar otra vez: usuario pepita password: malPassw
Salida: no obtener paso y comprobar que se bloquea // Intenta 4 veces(suponiendo usuario vlido pero password incorrecto)
2) Entrada: usuario pepita password: malPassw Salida: no obtener pasointentar otra vez: usuario pepita password: malPassw Salida: no obtener pasointentar otra vez: usuario pepita password: e445dr
Salida: obtener paso // Intenta 3 veces(suponiendo usuario vlido pero password incorrecto)
3) Entrada: usuario pepito password: malPassw => no obtener pasointentar otra vez: usuario pepito password: malPassw => no obtener pasointentar otra vez: usuario pepito password: malPassw
Salida: no obtener paso pero comprobar que no se bloquea // Intenta 3 veces(suponiendo tanto usuario como password incorrectos)
4) Entrada: usuario pepita password: malPassw => no obtener pasointentar otra vez: usuario pepita password: e445dr
Salida: obtener paso // Intenta 2 veces(suponiendo usuario pepita vlido y password e445dr vlido)
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
49
Solucin al ejercicio
Caso de prueba de interfaz grfica de usuario:1) Entrada: usuario pepita password: malPassw Salida: comprobar passw. NO visible2) Entrada: pulsar botn acceder al sistemaSalida: comprobar que responde3) Entrada: pulsar icono minimizar ventanaSalida: comprobar que se minimiza
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
50
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
51
Solucin al ejercicioCaso de prueba de caja blanca:No se puede ya que el cdigo fuente no est accesible.Caso de prueba de caja negra basado en la particin equivalente1) Entrada: usuario pepita password: e445dr Salida: dar paso (usuario y password vlidos; suponiendo que se encuentran en la BD)2) Entrada: usuario pepita2 password e445dr Salida: no dar paso (usuario no vlido por contener caracteres no letras y ms de 5)3) Entrada: usuario pepi password e445dr Salida: no dar paso (usuario no vlido por contener menos de 5 letras)4) Entrada: usuario pep3 password e445dr Salida: no dar paso (usuario no vlido por contener menos de 5 letras, y algunas no ser letras)5) Entrada: usuario password e445dr Salida: no dar paso (usuario en blanco)6) Entrada: usuario 3432432 password e445dr Salida: no dar paso (usuario no vlido por no contener ni una sola letra, aunque s ms de 5 caracteres)7) Entrada: usuario pepita password: Salida: no dar paso (usuario vlido pero password no, suponiendo que se encuentra en la BD)Caso de prueba de caja negra basado en los valores lmite1) Entrada: usuario pepita password: malPassw Salida: no obtener paso
intentar otra vez: usuario pepita password: malPassw Salida: no obtener pasointentar otra vez: usuario pepita password: malPassw
Salida: no obtener paso y comprobar que se bloquea // Intenta 4 veces(suponiendo usuario vlido pero password incorrecto)
2) Entrada: usuario pepita password: malPassw Salida: no obtener pasointentar otra vez: usuario pepita password: malPassw Salida: no obtener pasointentar otra vez: usuario pepita password: e445dr
Salida: obtener paso // Intenta 3 veces(suponiendo usuario vlido pero password incorrecto)
3) Entrada: usuario pepito password: malPassw => no obtener pasointentar otra vez: usuario pepito password: malPassw => no obtener pasointentar otra vez: usuario pepito password: malPassw
Salida: no obtener paso pero comprobar que no se bloquea // Intenta 3 veces(suponiendo tanto usuario como password incorrectos)
4) Entrada: usuario pepita password: malPassw => no obtener pasointentar otra vez: usuario pepita password: e445dr
Salida: obtener paso // Intenta 2 veces(suponiendo usuario pepita vlido y password e445dr vlido)
Caso de prueba de interfaz grfica de usuario:1) Entrada: usuario pepita password: malPassw Salida: comprobar passw. NO visible2) Entrada: pulsar botn acceder al sistema Salida: comprobar que responde3) Entrada: pulsar icono minimizar ventana Salida: comprobar que se minimiza
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
52
Solucin al ejercicioCaso de prueba de caja blanca:No se puede ya que el cdigo fuente no est accesible.Caso de prueba de caja negra basado en la particin equivalente1) Entrada: usuario pepita password: e445dr Salida: dar paso (usuario y password vlidos; suponiendo que se encuentran en la BD)2) Entrada: usuario pepita2 password e445dr Salida: no dar paso (usuario no vlido por contener caracteres no letras y ms de 5)3) Entrada: usuario pepi password e445dr Salida: no dar paso (usuario no vlido por contener menos de 5 letras)4) Entrada: usuario pep3 password e445dr Salida: no dar paso (usuario no vlido por contener menos de 5 letras, y algunas no ser letras)5) Entrada: usuario password e445dr Salida: no dar paso (usuario en blanco)6) Entrada: usuario 3432432 password e445dr Salida: no dar paso (usuario no vlido por no contener ni una sola letra, aunque s ms de 5 caracteres)7) Entrada: usuario pepita password: Salida: no dar paso (usuario vlido pero password no, suponiendo que se encuentra en la BD)
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
53
Solucin al ejercicioCaso de prueba de caja negra basado en los valores lmite1) Entrada: usuario pepita password: malPassw Salida: no obtener paso
intentar otra vez: usuario pepita password: malPassw Salida: no obtener pasointentar otra vez: usuario pepita password: malPassw
Salida: no obtener paso y comprobar que se bloquea // Intenta 4 veces(suponiendo usuario vlido pero password incorrecto)
2) Entrada: usuario pepita password: malPassw Salida: no obtener pasointentar otra vez: usuario pepita password: malPassw Salida: no obtener pasointentar otra vez: usuario pepita password: e445dr
Salida: obtener paso // Intenta 3 veces(suponiendo usuario vlido pero password incorrecto)
3) Entrada: usuario pepito password: malPassw => no obtener pasointentar otra vez: usuario pepito password: malPassw => no obtener pasointentar otra vez: usuario pepito password: malPassw
Salida: no obtener paso pero comprobar que no se bloquea // Intenta 3 veces(suponiendo tanto usuario como password incorrectos)
4) Entrada: usuario pepita password: malPassw => no obtener pasointentar otra vez: usuario pepita password: e445dr
Salida: obtener paso // Intenta 2 veces(suponiendo usuario pepita vlido y password e445dr vlido)
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
54
Solucin al ejercicio
Caso de prueba de interfaz grfica de usuario:1) Entrada: usuario pepita password: malPassw Salida: comprobar passw. NO visible2) Entrada: pulsar botn acceder al sistemaSalida: comprobar que responde3) Entrada: pulsar icono minimizar ventanaSalida: comprobar que se minimiza
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
55
Ejercicio Esprimo (camino bsico)num
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
56
Algoritmo Esprimo CP 1) Entrada: 1 Salida: primo CP 2) Entrada: 2 Salida: primo CP 3) Entrada: 4 Salida no primo
es el primer no primo
CP 4) Entrada: 32342342342341234 Salida: no primo nmero muy grande (mayor que el mximo entero)
CP 5) Entrada: 0 Salida: no positivo CP 6) Entrada: -4Salida: no positivo CP 7:) Entrada: -123412341234123 Salida: no
positivo CP 8) Entrada: patata Salida: no positivo CP 9) Entrada: 782.98234 Salida: no primo
debe tomar 782 como el nmero de entrada
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
57Algoritmo Esprimo CP 1) Entrada: 0 Salida: no positivosi num
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
58
Prueba del camino bsico
Construcciones estructurales en forma de grafo de flujo:
Secuencia Condicin IF Bucle (While) Bucle (Hasta) Sentencia case
NODO: representa condicin o sentencia procedimentalARISTA: representa flujo de control
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
59
Prueba de bucles
Buclessimples
Buclesanidados
Bucles concatenados
Bucles noestructurados
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
60
Prueba de bucles
Prueba de bucles simples Disear casos de prueba para que se ejecute el bucle: 0, 1, 2,
m, n-1, n y n+1 veces (siendo n el n mximo de veces que se puede ejecutar el bucle y m
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
61
Prueba de bucles
Prueba de bucles concatenados En este caso puede ocurrir que el segundo bucle
se ejecute un nmero de veces que depende del primero.
Si son bucles independientes entonces se prueban como dos bucles simples, y si no lo son, entonces se prueban como bucles anidados
Prueba de bucles no estructurados En este caso, merece la pena transformar el
cdigo de entrada usando bucles estructurados y hacer las pruebas correspondientes
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
62
Prueba de bucles Por supuesto, no hay por qu considerar el
siguiente bucle como no estructurado:
Se puede probar para que se ejecute 0, 1, 2, m, n-1, n y n+1 combinando las 2 condiciones de salida (cond1 y cond2)
repetiraccin1si cond1 entonces saliraccin2
hasta cond2
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
63
Prueba de Caja Negra
Tipos de errores que se encuentran: Funciones incorrectas o ausentes. Errores de interfaz. Errores de estructuras de datos o en
accesos a bases de datos externas. Errores de rendimiento. Errores de inicializacin o de terminacin.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
64Ejemplo: Algoritmo EsprimoAlgoritmo: EsprimoEntrada: num (entero)Salida: String (no positivo, primo, no primo)
si num
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
65
Ejemplo: Algoritmo Esprimo
Esprimoenteroes primo
no primo
no positivo
DISEAR CASOS DE PRUEBA DE CAJA NEGRA
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
66
Ejemplo: Algoritmo Esprimo
DISEAR CASOS DE PRUEBA DE LA INTERFAZ
Y DE LA DOCUMENTACIN
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
67
Ejercicio: Tomar en Prstamo la Copia de un Libro
DISEAR LOS CASOS DE PRUEBA DE ESTE CASO DE USO
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
68
Introduccin
Las pruebas del software son un elemento crtico
para la garanta de calidad del software y representa
una revisin final de las especificaciones, del diseo
y de la codificacin.
Las pruebas de software son siempre necesarias.
En algunos casos ocupan hasta un 40% del tiempo
de un proyecto informtico.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
69
Estrategias de prueba de Software
CU
DR
S
I
VST
Prueba de unidad
Prueba de validacinPrueba del sistema
Ingeniera del sistema
RequisitosDiseoCodificacin
Prueba de integracin
Cmo integrar las tcnicas de diseo de casos de prueba enuna serie de pasos bien planificados que obtienen una construccin correcta del software?
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
70
Prueba de unidad
Centra el proceso en el mdulo.
Se prueban los caminos de control
importantes para descubrir errores dentro del
lmite del mdulo.
Est orientado a pruebas de caja blanca.
Puede realizarse paralelamente en varios
mdulos.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
71
Prueba de unidad
Casos deprueba
InterfazCondiciones lmiteCaminos independientesCaminos de manejo de errores
Mdulo
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
72
Prueba de unidad
Casos deprueba
InterfazCondiciones lmiteCaminos independientesCaminos de manejo de errores
Controlador
Mdulo que se va a probar
Resguardo Resguardo
RESULTADOS
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
73
Prueba de integracin
Integracin descendente
M1
M2
M7
M4
M6
M3
M8
M5
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
74
Prueba de integracin
Resguardo A Resguardo B Resguardo C Resguardo D
Mostrar unmensaje de traza
Mostrar elparmetropasado
Devolver unvalor de unatabla (o archivoexterno)
Hacer una bsqueda en una tabla de unparmetro de entrada y devolver elparmetro asociado
= Direccin del flujo de datos
Resguardos
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
75
Prueba de integracin
Integracin ascendente
Mc
Ma
D3D1 D2
Mb
Grupo 2
Grupo 3Grupo 1
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
76
Prueba de integracin
Controlador A Controlador B Controlador C Controlador D
Invocar al subordinado
Enviar elparmetrode una tabla(o archivoexterno)
Mostrarparmetro
Una combinacinde los controladoresB y C
= Direccin del flujo de datos
Controladores
Y AB
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
77
Prueba de integracin
Prueba de regresin: Al aadir un nuevo mdulo el software
cambia y se establecen nuevos caminos de flujo de datos, nueva E/S y nueva lgica de control.
Puede haber problemas con funciones que antes iban bien.
Se ejecutarn un conjunto de pruebas que se han realizado anteriormente para asegurarse que los cambios no han dado lugar cambios colaterales.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
78
Prueba de validacin
Se lleva a cabo cuando se ha terminado la prueba de Integracin: el software est ensamblado y se han eliminado todos los errores de interfaz.
La validacin se consigue cuando el software funciona segn las expectativas del usuario.
Generalmente son pruebas de caja negra.
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
79
Prueba del sistema
Realizado el software debe integrarse en el sistema. Estas pruebas sirven para verificar que se han integrado adecuadamente todos los elementos del sistema y que realizan las funciones apropiadas.
Tipos de pruebas: prueba de recuperacin prueba de seguridad prueba de resistencia prueba de rendimiento
A. Goi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
80
Depuracin de errores
Casos de prueba
Depuracin
Ejecucin de casos
Resultados
Causasidentificadas
Correcciones
Pruebas de regresin
Pruebasadicionales Causas
sospechadas
La depuracin es el proceso que elimina el error