OBJETOS CON BUEN COMPORTAMIENTO -...

14
OBJETOS CON BUEN COMPORTAMIENTO 1

Transcript of OBJETOS CON BUEN COMPORTAMIENTO -...

OBJETOS CON

BUEN

OBJETOS CON

BUEN

COMPORTAMIENTO

1

� La pruebapruebapruebaprueba es la actividad cuyo objetivo es determinar si una pieza de código (un método, una clase, un programa) produce el comportamiento pretendido.

� La depuracióndepuracióndepuracióndepuración es el intento de apuntar con precisión y corregir un error en el código. Este proceso se da tras las pruebas y servirá para corregir los errores detectados.

2

� En este capítulo se presentan las siguientes técnicas de prueba y depuración:� Pruebas de unidad en BlueJ.

� Pruebas automatizadas.

� Seguimiento manual.

� Sentencias de impresión.

� Depuradores.

3

� El termino de prueba de unidad se refiere a la prueba de partes individuales de una aplicación.

� Esa unidad puede ser un grupo de clases, una sola clase o incluso un solo método.

� Dado que BlueJ nos permite interactuar directamente � Dado que BlueJ nos permite interactuar directamente con los objetos podemos empezar a realizar estas pruebas desde los primeros momentos del desarrollo de nuestra aplicación.

� Gracias al banco de objetos de BlueJ se pueden llamar los distintos métodos del mismo y comprobar su efecto correcto en el inspector de objetosinspector de objetosinspector de objetosinspector de objetos.

4

� Una prueba positiva es la prueba de aquellos casos que esperamos que resulten exitosos.

� Una prueba negativa es la prueba es la prueba de aquellos casos que esperamos que fallen. Cuando probamos estos casos esperamos que el Cuando probamos estos casos esperamos que el programa sea capaz de manejar ese error de forma controlada y no termine en un fallo de ejecución.

� Durante el desarrollo de nuestras aplicaciones es necesario hacer pruebas de ambos tipos.

5

� Las pruebas de regresión consisten en ejecutar nuevamente las pruebas pasadas previamente para asegurarse que la nueva versión aún las pasa.

� Estas pruebas son mucho más realizables cuando se pueden automatizar de alguna manera.

� La forma más fácil de automatizar la tarea es escribir un programa que actúa como una batería de pruebas.

6

� La opción de crear un programa que realice una batería de pruebas es como hemos dicho una buena opción para automatizar las pruebas.

Como inconveniente. Todavía es necesario la � Como inconveniente. Todavía es necesario la comprobación “manual” de los resultados.

� Podemos por tanto mejorar este proceso si conseguimos además que la comprobación de resultados sea automática.

7

� JUnit es un framework para implementar en Java pruebas de unidad organizadas y pruebas de regresión.

� Esta disponible independientemente del entorno de desarrollo que se utilice.

� Para utilizarlo “grabaremos pruebasgrabaremos pruebasgrabaremos pruebasgrabaremos pruebas” y comprobaremos � Para utilizarlo “grabaremos pruebasgrabaremos pruebasgrabaremos pruebasgrabaremos pruebas” y comprobaremos sus resultados con una aserción.

� Una aserciónaserciónaserciónaserción es una expresión que establece una condición que esperamos que resulte verdadera. Si la aserción falla es que hay un error en nuestra aplicación.

� Definiremos un fixture de objetos de prueba con un estado definido que servirán de base para las pruebas de unidades.

8

� Cuando varios componentes (módulos) de un software colaboran para completar una misma tarea decimos que la interfazinterfazinterfazinterfaz entre ellos debe ser clara y bien definida.

� Por interfaz entendemos aquellas partes de una clase que se conocen y que se utilizan en otras Por interfaz entendemos aquellas partes de una clase que se conocen y que se utilizan en otras clases.

� Cuando dos módulos se desarrollen en paralelo, con frecuencia será necesario definir la interfaz antes de comenzar a trabajar sobre la implementación de cada uno.

9

� Es necesario prestar atención al estilo con el que escribimos nuestro código:

� Incluir anotaciones en la parte superior de la clase indicando su propósito general, así como el autor y versión.

� Comentar los métodos del a interfaz indicando su propósito, sus parámetros y su tipo de retorno.sus parámetros y su tipo de retorno.

� El esquema de las clases debe ser consistente, con cantidades adecuadas de espacios en blanco para la indentación que usa para distinguir los niveles de los bloques anidados y las estructuras de control.

� Las variables tendrán nombres significativos y los nombres de los métodos serán bien elegidos.

10

� Un seguimiento manual o prueba de escritorio es la actividad en la que trabajamos sobre un segmento de código línea por línea mientras se observan los cambios de estado y otros comportamientos de la aplicación.otros comportamientos de la aplicación.

� Es una simulación en papel y lápiz de lo que ocurre dentro de la computadora cuando se ejecuta el programa.

11

� Probablemente la técnica más usada para comprender y depurar un programa.

� Consiste en agregar en los métodos sentencias de impresión temporalmente.

� Estas sentencias puede proporcionar al desarrollador información sobre:

� Qué métodos se han invocado.� Los valores de los parámetros.� El orden en que se han invocado los métodos.� Los valores de las variables locales y de los campos en

lugares estratégicos.

12

� Es preferible hacer depender la aparición de estas sentencias de una variable booleana que indique si queremos activar el proceso de depuración.

if (depuracion) {

System.out.println(“Sentencia a imprimir”);

}

13

� El depurador es una herramienta software que proporciona apoyo para realizar seguimiento de un segmento de código.

� Fijaremos puntos de interrupción en las sentencias a partir de las cuales queremos detener la ejecución normal para pasar a la detener la ejecución normal para pasar a la ejecución controlada y comprobación de estado.

� El depurador nos da información sobre la secuencia de llamadas y el estado de los objetos.

14