Modelo y Metodo de Prueba

Embed Size (px)

Citation preview

  • 8/3/2019 Modelo y Metodo de Prueba

    1/26

    1

    INTRODUCCION

    El presente trabajo est basado en los principales mtodos de prueba de

    software. Describe los objetivos que se persiguen al realizar la prueba y

    los principios de la prueba.

    Un producto puede probarse de acuerdo al conocimiento de la funcin especfica

    para la que fue diseado el producto (caja negra). Con la aplicacin de esta

    tcnica se adquieren pruebas que disminuyen el numero de casos de prueba.

    La prueba del mtodo de la caja de cristal frecuentemente es ms eficaz para

    descubrir errores debido a que los programas sutiles ocurren en la interfaz de sub-

    programas.

    Estrategias de prueba del software

    Una estrategia de prueba del software integra los mtodos de diseo de caso de

    pruebas del software en una serie bien planeada de pasos que desembocara en

    la eficaz construccin de software.

    La estrategia proporciona un mapa que describe los pasos que se darn como

    parte de la prueba indica cuando se planean y cuando se dan estos pasos,adems de cuanto esfuerzo, tiempo y recursos consumiran. Por tanto, cualquier

    estrategia de prueba debe incorporar la planeacin de pruebas, el diseo de caso

    de pruebas, la ejecucin de pruebas y la recoleccin y evolucin de los datos

    resultantes.

    Una estrategia de prueba del software debe ser lo suficionetemente flexible como

    para promover un enfoque perzonalizado al mismo tiempo debe ser lo

    adecuadamente rigido como para promover una planeacin razonable y un

    seguimiento administrativo del avanze del proyecto.

    Qu es?

    El software se prueba para descrubrir errores cometidos sin darse cuenta al

    realizar su diseo y construccin.

    pero como se realizan las pruebas? Debe desarrollarse un plan formal para las

    pruebas? debe probase el programa como un lodo o solo deben aplicarse

    pruebas a una parte pequena? deben volver a realizarse las pruebas ejecutadas

    a medida que se agregan nuevos componentes a un sitemas de gran tamano?

  • 8/3/2019 Modelo y Metodo de Prueba

    2/26

    2

    Cundo debe pedirse la participacin del cliente? Estas y muchas otras

    preguntas se respondern cuando desarrolle una estrategia de prueba del

    software.

    Quin lo hace?

    El jefe de proyecto, los ingenieros del software o los especialistas en pruebas son

    quienes desarrollan la estrategia para la prueba del software

    Por qu es importante?

    Con frecuencia, la prueba requiere una mayor cantidad del esfuerzo dedicado al

    proyecto que cualquier otra actividad de ingeniera del software.

    Si se realiza sin un plan, se desperdicia tiempo se dedica un esfuerzo innecesarioy, aun peor, es posible que aun no se detecten errores. Por tanto la razonable

    seria establecer una estrategia sistemtica para probar el software

    Cules son los pasos?

    La prueba empieza por lo pequeo y avanza hacia lo grande esto significa que en

    las primeras etapas la prueba se concentra en un solo componente o un grupo

    pequeo de componentes relacionados y se aplica para descubrir errores en la

    lgica de datos y de procesamiento que se a encapsulado en el componente una

    ves probados los componentes deben integrarse hasta que todo el sistema se

    haya construido. En este punto se ejecuta una serie de pruebas de alto nivel para

    descubrir errores en la satisfaccin de los requisitos dl cliente a medida que se

    descubren, lo errores deben diagnosticarse y corregirse empleando un proceso

    llamado depuracin.

    Cul es producto obtenido?

    Una especificacin de la prueba documenta el enfoque que aplico el equipo de

    software a la prueba al definir un plan que detalla una estrategia general y un

    procedimiento que describe los pasos especficos y se darn en las pruebas que

    abran de realizarse.

    Cmo puedo estar seguro de que lo he hecho correctamente?

    Al revisar la especificacin de la prueba antes de realizarla se evalua si estn

    completos los casos y las tareas de prueba. Un plan y un procedimiento de

  • 8/3/2019 Modelo y Metodo de Prueba

    3/26

    3

    prueba efectivos llevaran a la construccin ordenada del software y al

    descubrimiento de errores en cada etapa de proceso de costruccion.

    Una estrategia global

  • 8/3/2019 Modelo y Metodo de Prueba

    4/26

    4

    Prueba de Unidad

    El proceso de verificacin se centra en la menor unidad de diseo del software.

    Se aplica sobre la descripcin del diseo procedimental.

    Usa tcnica de prueba de caja blanca.

    Se puede realizar en paralelo para diferentes mdulos.

    mbito de Prueba

    La interfaz del mdulo.

    El impacto de los datos globales sobre el mdulo.

    Las estructuras de datos locales.

    Las condiciones lmite.

    Los caminos de ejecucin de la estructura de control.

    Los caminos de manejo de errores.

    Procedimiento de Prueba

    Para cada prueba, se debe desarrollar un software que controle y/o

    resguarde.

    Un controlador es un programa principal que acepta los datos del caso de

    prueba, pasa los datos al mdulo e imprime los resultados.

    Un resguardo es un subprograma que reemplaza a los mdulos

    subordinados, realiza alguna manipulacin de datos, imprime una

    verificacin de entrada y devuelve el control.

  • 8/3/2019 Modelo y Metodo de Prueba

    5/26

    5

    La prueba de Integracin

    Es una tcnica sistemtica para construir la estructura del programa y detectar

    errores asociados con la interaccin.

    La integracin no incremental no es recomendable.

    La integracin incremental puede ser descendente o ascendente.

    Se necesitan pruebas de regresin.

    Integracin descendente

  • 8/3/2019 Modelo y Metodo de Prueba

    6/26

    6

    Los mdulos subordinados al mdulo de control principal se van incorporando a

    la estructura primero-en-profundidad, o primero en anchura.

    Se usa el mdulo de control principal como controlador de la prueba,

    disponiendo de resguardos para todos los mdulos directamente

    subordinados.

    Se sustituyen los resguardos subordinados uno a uno por los mdulos.

    Se llevan a cabo pruebas cada vez que se integra un mdulo.

    Tras terminar las pruebas se reemplaza otro resguardo con el mdulo real

  • 8/3/2019 Modelo y Metodo de Prueba

    7/26

    7

    Integracin Ascendente

    Empieza la construccin y la prueba con los mdulos atmicos eliminando la

    necesidad de resguardos.

    Se combinan los mdulos de bajo nivel en grupos que realicen una sub

    funcin especfica.

    Se escribe un controlador para coordinar la entrada y la salida de los

    casos de prueba.

    Se prueba el grupo.

    Se eliminan los controladores y combinan los grupos movindose hacia

    arriba por la estructura del programa.

    Enfoque combinado

    La Prueba de validacin

  • 8/3/2019 Modelo y Metodo de Prueba

    8/26

    8

    Comprueba que el software, una vez ensamblado, funciona de acuerdo con las

    expectativas razonables del cliente.

    Se satisfacen los requerimientos funcionales.

    Se alcanzan los requisitos de rendimiento.

    La documentacin es correcta e inteligible.

    Se alcanzan otros requerimientos (compatibilidad, recuperacin de

    errores...)

    Usa tcnicas de caja negra

    Revisin de la configuracin

    Comprobar, para todos los elementos de la configuracin del software que:

    se han desarrollado apropiadamente,

    se han catalogado, y

    estn suficientemente detallados para soportar la fase de mantenimiento.

    Pruebas alfa y Beta

    Son pruebas de aceptacin que permiten que el cliente valide los requisitos.

    Las pruebas alfa se llevan a cabo en un entorno controlado.

    Las pruebas beta se llevan a cabo en el lugar de trabajo del cliente.

    Pueden durar semanas o meses

    La Prueba del Sistema

    El objetivo es verificar que se han integrado adecuadamente todos los elementos

    del sistema y que realizan las funciones apropiadas.

    La responsabilidad es de todos los creadores de cada uno de los elementos del

    sistema.

    Medidas Preventivas

    Disear caminos de manejo de errores que prueben toda la informacin

    procedente de otros elementos del sistema.

    Realizar pruebas que simulen datos en mal estado u otros problemas de la

    interfaz del software.

  • 8/3/2019 Modelo y Metodo de Prueba

    9/26

    9

    Registrar los resultados de las pruebas.

    Participar en la planificacin y el diseo de casos de prueba

    Tipos de Prueba

    Prueba de Recuperacin

    Fuerza el fallo del software de varias formas y verifica que la recuperacin se

    produce adecuadamente.

    Si la recuperacin es automtica hay que evaluar la correccin de la

    inicializacin, de los mecanismos de recuperacin del estado del sistema,

    de la recuperacin de los datos y del proceso de rearranque.

  • 8/3/2019 Modelo y Metodo de Prueba

    10/26

    10

    Si la recuperacin no es automtica, hay que evaluar los tiempos medios

    de reparacin para determinar si estn dentro de unos lmites aceptables

    Un sistema tolerante a fallos evita que cese el funcionamiento de todo el sistema

    cuando se produce un fallo del proceso.

    Prueba de Seguridad

    Verifica que los mecanismos de proteccin incorporados protegern al sistema.

    Intenta conseguir las claves de acceso de cualquier forma.

    Ataca con software a medida.

    Bloquea el sistema.

    Provoca errores del sistema entrando durante su recuperacin.

    Un sistema que maneje informacin que pueda afectar de forma inapropiada a las

    personas es un posible objetivo para entradas ilegales.

    Prueba de resistencia

    Enfrenta al programa con situaciones atpicas, esto es, ejecuta el sistema de

    forma que demande recursos en cantidad, frecuencia o volmenes anormales.

    Incrementa las frecuencias de datos de entrada.

    Ejecuta casos que requieran el mximo de memoria.

    Buscar demasiados datos que residan en disco.

    Realiza pruebas de sensibilidad intentando descubrir combinaciones de

    datos dentro de una clase de entrada vlida que pueda producir

    inestabilidad o un proceso incorrecto

    Prueba de Rendimiento

    Prueban el rendimiento del software en tiempo de ejecucin dentro del

    contexto de un sistema integrado.

    Requiere de instrumentacin tanto software como hardware para los

    procesos de monitorizacin y medicin.

    Se lleva a cabo durante todos los pasos de prueba.

    Los sistemas de tiempo real y los sistemas empotrados se tienen que ajustar a

    los requisitos de rendimiento.

  • 8/3/2019 Modelo y Metodo de Prueba

    11/26

    11

    Tcnicas de prueba

    El desarrollo de Sistemas de software implica la realizacin de una serie de

    actividades predispuestas a incorporar errores (en la etapa de definicin de

    requerimientos, de diseo, de desarrollo, ...).

    Debido a que estos errores se deben a nuestra habilidad innata de provocar

    errores, tenemos que incorporar una actividad que garantice la calidad del

    software.

    En este captulo estudiaremos:

    Fundamentos de la prueba del software, que definen los objetivos

    fundamentales de la fase de prueba.

    Diseo de casos de prueba, que se centra en un conjunto de tcnicas

    para que satisfagan los objetivos globales de la prueba.

    1. FUNDAMENTOS DE LA PRUEBA DEL SOFTWARE

    En la etapa de prueba del software se crean una serie de casos de prueba que

    intentan "destruir" el software desarrollado.

    La prueba requiere que se descarten ideas preconcebidas sobre la "calidad o

    correccin" del software desarrollado.

    1.1. Objetivos de la prueba

    La prueba es un proceso de ejecucin de un programa con la intencin de

    descubrir un error

    Un buen caso de prueba es aquel que tiene una alta probabilidad de

    mostrar un error no descubierto hasta entonces

    Una prueba tiene xito si descubre un error no detectado hasta entonces

    El objetivo es disear casos de prueba que, sistemticamente, saquen a la luz

    diferentes clases de errores, hacindolo con la menor cantidad de tiempo y de

  • 8/3/2019 Modelo y Metodo de Prueba

    12/26

    12

    esfuerzo.

    La prueba no puede asegurar la ausencia de errores; slo puede demostrar

    que existen defectos en el software.

    1.2. Proceso de prueba

  • 8/3/2019 Modelo y Metodo de Prueba

    13/26

    13

    El proceso de prueba tiene dos entradas:

    Configuracin del software: Incluye la especificacin de requisitos del

    software, la especificacin del diseo y el cdigo fuente

    Configuracin de prueba: Incluye un plan y un procedimiento de

    prueba

    Si el funcionamiento del software parece ser correcto y los errores encontrados

    son fciles de corregir, podemos concluir con que:

    La calidad y la fiabilidad del software son aceptables, o que

    Las pruebas son inadecuadas para descubrir errores serios

    1.3. Diseo de casos de prueba

    Se trata de disear pruebas que tengan la mayor probabilidad de encontrar el

    mayor nmero de errores con la mnima cantidad de esfuerzo y de tiempo.

    Cualquier producto de ingeniera se puede probar de dos formas:

    Pruebas de caja negra: Realizar pruebas de forma que se

    compruebe que cada funcin es operativa.

    Pruebas de caja blanca: Desarrollar pruebas de forma que se

    asegure que la operacin interna se ajusta a las especificaciones, y

    que todos los componentes internos se han probado de forma

    adecuada.

    En la prueba de la caja negra, los casos de prueba pretenden demostrar que

    las funciones del software son operativas, que la entrada se acepta de forma

    adecuada y que se produce una salida correcta.

    En la prueba de caja blanca se realiza un examen minucioso de los detalles

    procedimentales, comprobando los caminos lgicos del programa,comprobando los bucles y condiciones, y examinado el estado del programa en

    varios puntos.

  • 8/3/2019 Modelo y Metodo de Prueba

    14/26

    14

    A primera vista, la prueba de caja blanca profunda nos llevara a tener

    "programas 100 por cien correctos", es decir:

    Definir todos los caminos lgicos

    Desarrollar casos de prueba para todos los caminos lgicos

    Evaluar los resultados

    Pero esto supone un estudio demasiado exhaustivo, que prolongara

    excesivamente los planes de desarrollo del software, por lo que se har un

    estudio de los caminos lgicos importantes.

    2. PRUEBA DE LA CAJA BLANCA

    La prueba de la caja blanca es un mtodo de diseo de casos de prueba que

    usa la estructura de control del diseo procedimental para derivar los casos de

    prueba.

  • 8/3/2019 Modelo y Metodo de Prueba

    15/26

    15

    Las pruebas de caja blanca intentan garantizar que:

    Se ejecutan al menos una vez todos los caminos independientes de

    cada mdulo

    Se utilizan las decisiones en su parte verdadera y en su parte falsa

    Se ejecuten todos los bucles en sus lmites

    Se utilizan todas las estructuras de datos internas

    2.1. Prueba del camino bsico

    El mtodo del camino bsico (propuesto por McCabe) permite obtener una

    medida de la complejidad de un diseo procedimental, y utilizar esta medida

    como gua para la definicin de una serie de caminos bsicos de ejecucin,

    diseando casos de prueba que garanticen que cada camino se ejecuta al

    menos una vez.

    2.1.1. Notacin del grafo de flujo o grafo del programa

    Representa el flujo de control lgico con la siguiente notacin:

  • 8/3/2019 Modelo y Metodo de Prueba

    16/26

    16

    A continuacin se muestra un ejemplo basado en un diagrama de flujo que

    representa la estructura de control del programa.

  • 8/3/2019 Modelo y Metodo de Prueba

    17/26

    17

    En el grafo de flujo

    Cada nodo representa una o ms sentencias procedimentales

    Un solo nodo puede corresponder a una secuencia de pasos del

    proceso y a una decisin

    Las flechas (aristas) representan el flujo de control

    Cualquier representacin del diseo procedimental se puede traducir a un grafo

    de flujo.

    Si en el diseo procedimental se utilizan condiciones compuestas, la

    generacin del grafo de flujo tiene que descomponer las condiciones

    compuestas en condiciones sencillas, tal y como muestra la figura siguiente.

  • 8/3/2019 Modelo y Metodo de Prueba

    18/26

    18

    2.1.2. Complejidad ciclomtica

    Es una medida que proporciona una idea de la complejidad lgica de un

    programa.

    La complejidad ciclomtica coincide con el nmero de regiones del grafo de

    flujo

    La complejidad ciclomtica, V(G), de un grafo de flujo G, se define como

    V(G) = Aristas - Nodos + 2

    La complejidad ciclomtica, V(G), de un grafo de flujo G, tambin se define

    como

    V(G) = Nodos de predicado + 1

    A partir del grafo de flujo de la figura 4, la complejidad ciclomtica sera:

    Como el grafo tiene cuatro regiones, V(G) = 4

    Como el grafo tiene 11 aristas y 9 nodos, V(G) = 11 - 9 - 2 = 4

    Como el grafo tiene 3 nodos predicado, V(G) = 3 + 1 = 4

    A partir del valor de la complejidad ciclomtica obtenemos el nmero de

    caminos independientes, que nos dan un valor lmite para el nmero de

    pruebas que tenemos que disear.

    En el ejemplo, el nmero de caminos independientes es 4, y los caminos

    independientes son:

    1-11

    1-2-3-4-5-10-1-11

    1-2-3-6-7-9-10-1-11

    1-2-3-6-8-9-10-1-11

    2.1.3. Pasos del diseo de pruebas mediante el camino bsico

    Obtener el grafo de flujo, a partir del diseo o del cdigo del mdulo

    Obtener la complejidad ciclomtica del grafo de flujo

    Definir el conjunto bsico de caminos independientes

    Determinar los casos de prueba que permitan la ejecucin de cada uno delos caminos anteriores

    Ejecutar cada caso de prueba y comprobar que los resultados son los

  • 8/3/2019 Modelo y Metodo de Prueba

    19/26

    19

    esperados

    2.2. Prueba de bucles

    Los bucles son la piedra angular de la inmensa mayora de los algoritmos

    implementados en software, por lo que tenemos que prestarles una atencin

    especial a la hora de realizar la prueba del software.

    La prueba de bucles es una tcnica de prueba de caja blanca que se centra en

    la validez de las construcciones de los bucles.

    Se pueden definir cuatro tipos de bucles diferentes:

    Bucles simples

    Bucles concatenados

    Bucles anidados

    Bucles no estructurados

  • 8/3/2019 Modelo y Metodo de Prueba

    20/26

    20

    2.2.1. Bucles simples

    A los bucles simples (de n iteraciones) se les tiene que aplicar el conjunto de

    pruebas siguientes:

    Saltar el bucle

    Pasar slo una vez por el bucle

    Pasar dos veces por el bucle

    Hacer mpasos del bucle con m < n

    Hacer n-1, ny n+1 pasos por el bucle

    2.2.2. Bucles anidados

    Si extendisemos el conjunto de pruebas de los bucles simples a los bucles

    anidados, el nmero de pruebas crecera geomtricamente, por lo que Beizer

    sugiere el siguiente conjunto de pruebas para bucles anidados:

    Comenzar con el bucle ms interno, estableciendo los dems bucles

    a los valores mnimos

    Llevar a cabo las pruebas de bucles simples para el bucle ms

    interno, conservando los valores de iteracin de los bucles ms

    externos a los valores mnimos Progresar hacia fuera en el siguiente bucle ms externo, y

    manteniendo los bucles ms externos a sus valores mnimos

  • 8/3/2019 Modelo y Metodo de Prueba

    21/26

    21

    Continuar hasta que se hayan probado todos los bucles

    2.2.3. Bucles concatenados

    Probar los bucles concatenados mediante las tcnicas de prueba para bucles

    simples, considerndolos como bucles independientes.

    2.2.4. Bucles no estructurados

    Redisear estos bucles para que se ajusten a las construcciones de la

    programacin estructurada.

    Ejemplo

    Construir el Grafo de Flujo correspondiente a la siguiente especificacin del

    software en LDP.

  • 8/3/2019 Modelo y Metodo de Prueba

    22/26

    22

    Solucin

  • 8/3/2019 Modelo y Metodo de Prueba

    23/26

    23

    Ejemplo

    Construir el Grafo de Flujo correspondiente al siguiente cdigo de un programa

    Solucin

  • 8/3/2019 Modelo y Metodo de Prueba

    24/26

    24

    3. PRUEBA DE LA CAJA NEGRA

    Las pruebas de caja negra se llevan a cabo sobre la interfaz del software,

    obviando el comportamiento interno y la estructura del programa.

    Los casos de prueba de la caja negra pretenden demostrar que:

    Las funciones del software son operativas

    La entrada se acepta de forma correcta

    Se produce una salida correcta

    La integridad de la informacin externa se mantiene

    A continuacin se derivan conjuntos de condiciones de entrada que utilicen

    todos los requisitos funcionales de un programa.

    Las pruebas de caja negra pretenden encontrar estos tipos de errores:

    Funciones incorrectas o ausentes

    Errores en la interfaz

    Errores en estructuras de datos o en accesos a bases de datos

    externas

    Errores de rendimento

    Errores de inicializacin y de terminacin

    Los tipos de prueba de cana negra que vamos a estudiar son:

    Prueba de particin equivalente

    Prueba de anlisis de valores lmites

    3.1. Prueba de particin equivalente

    Este mtodo de prueba de caja negra divide el dominio de entrada de un

    programa en clases de datos, a partir de las cuales deriva los casos de prueba.

    Cada una de estas clases de equivalencia representa a un conjunto de estadosvlidos o invlidos para las condiciones de entrada.

  • 8/3/2019 Modelo y Metodo de Prueba

    25/26

    25

    3.1.1. Identificacin de las clases de equivalencia

    Se identifican clases de equivalencia vlidas e invlidas con la siguiente tabla

    Condiciones externasClases de equivalencia

    vlidas

    Clases de equivalencia

    invlidas

  • 8/3/2019 Modelo y Metodo de Prueba

    26/26

    A continuacin se siguen estas directrices:

    Si una condicin de entrada especifica un rango de valores

    (p.e, entre 1 y 999), se define una CEV (1