Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta
>

Sexto Avance de Proyecto

Objetivo

Realizar las pruebas necesarias para garantizar que el programa funciona correctamente

Producto a Entregar

El formato de pruebas

Forma de Trabajo

Individual

Tiempo estimado

1 hora

Forma de Entrega

Por Blackboard

Recomendaciones

  • Sigue las instrucciones de la actividad y ejercita la lectura crítica.
  • "Un buen programador es aquel que mira hacia los dos lados antes de crusar una calle de un solo sentido" Doug Linder

 

Instrucciones

Paso 1:

Todos los programas necesitan ser probados porque algunas veces nosotros creemos que funcionan correctamente cuando en realidad no funcionan de la manera adecuada. Es por esta razón que una gran parte del desarrollo de software se enfoca a una cultura de calidad, de asegurarnos de crear software que no tenga defectos, de diseñar los detalles importantes para evitar que hayan malas interpretaciones y sobre todo de escuchar al cliente. Sin embargo, aunque la cultura de calidad es lo más importante, no es suficiente y es preciso realizar pruebas que garanticen que nuestros programas funcionan de la manera correcta.

NOTA: No hagas nada (escribir código, crear clases de pruebas) hasta que hayas terminado de leer *todas* las instrucciones.

En este avance de proyecto realizaremos pruebas de unidad, en los que se revisa que una unidad de código funcione correctamente; y pruebas de integración, en donde se revisa que todo el programa funcione correctamente en conjunto. Para realizar las pruebas de unidad debemos construir un gran número de casos diferentes para cada uno de los métodos y después debemos probar que todos funcionen de la manera que esperamos.

Para poder realizar pruebas de unidad vamos a utilizar un plug in con el que cuenta NetBeans llamado JUnit, desarrollado por Kent Bech y Erich Gamma. Para poderlo utilizar debes hacer click derecho sobre la clase Car (a la que queremos agregar las pruebas de unidad) y seleccionar Tools -> Create JUnit Test.

En la siguiente pantalla que aparezca deberás presionar OK con todas las opciones que aparecen en la imagen:

NOTA: En caso de que la ventana aparezca deshabilitada con un mensaje de error que dice que el proyecto no cuenta con un paquete de pruebas debes de crear una carpeta llamada test en el directorio principal de tu programa (junto con src, dist, build, etc.)

Una vez que se haya construido la clase de pruebas podrás observar que hay un método que inicia con test por cada uno de los métodos de la clase Car. Debido a restricciones de tiempo muchos autores sugieren no realizar pruebas a todos los métodos de una clase sino únicamente a los métodos críticos. En las palabras de Roger Pressman: "Hay situaciones en las que no se tendrán los recursos para hacer una prueba de unidad muy completa. Entonces deben seleccionarse módulos críticos y los que tengan una elevada complejidad en ciclos y sólo esos deben probarse."

Tomando esto en cuenta no vamos a crear métodos de prueba para los getters y setters que son métodos extremadamente sencillos, por lo que es necesario quitar los métodos que sirven para probar getters y setters (los que inician con testGet y testSet).

Una prueba tiene la siguiente estructura:

Como puedes ver, primero declaramos algunas variables que vamos a utilizar a lo largo de toda la prueba, después instanciamos las variables dependiendo de lo que nos deben de arrojar las pruebas, y por último utilizamos alguno de los métodos assert con los que cuenta JUnit para poder evaluar si pasa la prueba o no. Para ver todos los métodos con los que cuenta JUnit preciona Ctrl+Space para que aparezca la ventana de autocompletar y revisa los métodos que inician con assert. Además de esos métodos existe el método fail() que hace que una prueba falle automaticamente en caso de que se ejecute (para revisar un if, o un try-catch).

Para poder correr una prueba, una vez que se ha escrito el código de esta se debe presionar Alt+F6 o selecciona en el menú Run -> Test para ejecutar la prueba. En la ventana de output verás algo similar a lo siguiente:

Como puedes ver la primera prueba (la de calculateMonthlyPayment()) ha pasado todas las pruebas que se han programado hasta el momento, mientras que los demás han fallado. Seleccionando el botón de + junto a las pruebas fallidas podemos ver dónde fallaron y por qué.

Con las pruebas de unidad podemos probar extensivamente una clase de datos y algunas clases de interfaz, sin embargo las pruebas no están completas a menos que probemos que las clases de datos y la interfaz interactuen entre sí, por lo que también debemos hacer pruebas de integración. En estas pruebas vamos a seguir un formato que nos dice qué debemos ir haciendo para probar el sistema.

Ahora abre tu proyecto y cambia de lugar con alguno de tus compañeros y ejecuta el plan de pruebas en su programa:

 

Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta