Pruebas y Validaciòn

download Pruebas y Validaciòn

of 80

Transcript of Pruebas y Validaciòn

  • 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