Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Drivers y stubs para el testing, Diapositivas de Programación Java

Como testear programas para ver que vayan bien

Tipo: Diapositivas

2018/2019

Subido el 03/12/2019

david-santos-bsh
david-santos-bsh 🇪🇸

9 documentos

1 / 27

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Projecte de Programació
Projecte de Programació
Prueba de Programas
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b

Vista previa parcial del texto

¡Descarga Drivers y stubs para el testing y más Diapositivas en PDF de Programación Java solo en Docsity!

Projecte de Programació

Prueba de Programas

Prueba de Programas

La prueba de programas es el proceso de ejecución y evaluación, manual y/o automática, de un sistema informático con los siguientes objetivos:

  • Eliminación de los errores de especificación, diseño e implementación
  • Verificación de los requerimientos funcionales:
    • Qué funcionalidades faltan?
    • Es esto lo que el usuario quería?
  • Verificación de los requerimientos no funcionales

Prueba de Programas

Detección de errores

  • La EXPERIENCIA es FUNDAMENTAL
  • Hay dos técnicas fundamentales:
    • Verificación formal ( program proving)
    • Verificación experimental ( program testing)

Prueba de Programas

Verificación formal

  • Demostración formal de que el programa satisface la especificación
  • Problemas:
    • Requiere conocimientos muy específicos, es difícil y caro
    • No garantiza la ausencia de errores de especificación
      • No siempre disponemos de la especificación formal de todos los componentes del sistema (librerías, etc.)
  • Suele usarse típicamente en fragmentos críticos del sistema o en sistemas muy críticos

Estrategias de prueba

Juegos de Prueba : Subconjunto “representativo” con el que probar Un buen juego de pruebas es aquel que tiene una alta probabilidad de encontrar un error -> para escogerlo, se pueden seguir diversas estrategias Lo más usado son los métodos de “caja”: el software es

visto como una caja con entradas y salidas

Tres estrategias básicas:

  • Caja blanca
  • Caja negra
  • Caja gris

Prueba de Programas: Program Testing

Prueba de Programas: Program Testing

Caja blanca Quien hace las pruebas (programador/analista) conoce la estructura interna del código:

  • Puede forzar la ejecución al menos una vez de todas las instrucciones: condicionales, casos límite en los bucles, etc.
  • Puede definir cadenas estilo “variable-instrucciones donde

aparece” ( dataflow) -> hay que ir a buscar los casos

límite , asegurándose de que los casos representativos funcionan

  • Normalmente se usa sólo a nivel de pruebas de componentes específicos

Caja gris Mezcla de los dos estrategias anteriores. Quien hace las pruebas conoce la estructura interna del código:

  • Las pruebas se hacen en modo caja negra: se generan las entradas y se comprueba que las salidas son las que corresponden
  • Las entradas y salidas pueden ser más precisas, pues pueden obligar al código a pasar por donde interese
  • Se pueden focalizar las entradas en los puntos críticos

Prueba de Programas: Program Testing

En OOP tendremos varios niveles de pruebas:

  • Pruebas de componentes: pruebas de (los métodos de) las clases aisladamente
  • Pruebas de integración: pruebas de les interacciones entre componentes. Probamos conjuntos de clases, posiblemente agrupados por casos de uso o funcionalidad
  • Pruebas del sistema: pruebas del programa como un todo
  • Pruebas de integración del sistema: el programa puede no estar solo, sino formar parte de un sistema más grande, en el que haya otros programas

Prueba de Programas: Program Testing

Pruebas de componentes: Drivers y Stubs

Prueba de Programas: Program Testing

Pruebas de componentes: Drivers y Stubs

  • Para cada clase a probar tenemos que tener un driver. Los

stubs sólo han de estar si se necesitan

  • En teoría: aunque tengamos la clase B probada, si estamos

probando una clase A que usa la clase B, hay que usar un

stub para probar la clase A (si no, no podremos asegurar

completamente que el error esté en la clase A).

  • En el caso de la prueba de clases abstractas, hay que

implementar una subclase stub con la implementación de los

métodos abstractos. Eso permite crear instancias del stub y

poder probar los métodos de la clase abstracta que sí están

implementados (vía un driver y eventualmente otros stubs)

Prueba de Programas: Program Testing

Pruebas de componentes: Drivers y Stubs

El driver tendría la siguiente especificación: public class DriverClaseA { public void testConstructor(); public void testGetAtrib1(); public void testGetAtrib2(); public void testGetCalculoAtrib2(); public static void main (String [] args); }

Es decir, un testMétodo por cada Método, que nos permita

probar que el método hace lo que se espera de él -> recordar estrategias de prueba…

Prueba de Programas: Program Testing

Pruebas de componentes: Drivers y Stubs

Para acabar nos haría falta un stub para la clase B, con la

siguiente especificación: public class ClaseB { public int calculoComplejo(); } Es decir, se define un método por cada método de ClaseB que se usa en ClaseA. La implementación ha de ser trivial:

  • retornar un valor fijo o random del tipo de retorno return 42;
  • escribir un mensaje de paso por el método System.out.println(“llamada método X con parám Y”);

Prueba de Programas: Program Testing

Pruebas de integración: Enfoques

  • Bottom-Up
    • Las clases de nivel más bajo son las primeras que se prueban
    • El programa no se prueba hasta el final
  • Top-Down
    • Las clases de nivel más bajo son las últimas que se prueban
    • Necesitamos tener el programa completo desde el principio
  • Híbridos ( Sandwich Testing)

Prueba de Programas: Program Testing

Pruebas de integración: Enfoque Híbrido

  • Híbridos ( Sandwich Testing)
    • Mezcla de top-down y bottom-up
    • Permite empezar a probar por las clases más críticas
    • Permite desarrollar el programa de forma más flexible

Es el más adecuado para las pruebas de integración de PROP

Prueba de Programas: Program Testing