jueves, 14 de abril de 2011

miércoles, 13 de abril de 2011

Pruebas Unitarias (CLASE)

Primero, ¿Qué son las Pruebas Unitarias?
Son pruebas dirigidas a probar clases java aisladamente y están relacionadas con el código y la
responsabilidad de cada clase y sus fragmentos de código más criticos.

¿Porqué realizar pruebas unitarias?
• Asegura calidad del código entregado. Es la mejor forma de detectar errores
tempranamente en el desarrollo. No obstante, esto no asegura detectar todos los errores, por tanto prueba de integración y aceptación siguen siendo necesarias.
• Ayuda a definir los requerimientos y responsabilidades de cada método en cada clase
probada.
• Constituye una buena forma de ejecutar pruebas de concepto. Cuando es necesario
hacer pruebas de conceptos sin integrar usar pruebas unitarias se convierte en un método
efectivo.
• Permite hacer refactoring tempranamente en el código. No es necesario todo un ciclo de
integración para hacer refactoring en la aplicación, basta con ver como se comporta un caso
de prueba para hacer refactoring unitario sobre la clase que estamos probando en cuestión.
• Permite incluso hacer pruebas de estress tempranamente en el código. Por ejemplo un
método que realize una consulta SQL que exceda los tiempos de aceptación es posible
optimizarla antes de integrar con la aplicacíón.
• Permite encontrar errores o bugs tempranamente en el desarrollo. Y está demostrado
que mientras más temprano se corrigan los errores, menos costará corregirlos.

En la imágen anterior se cuenta la secuencia que se sigue en un programa para realizar éstas pruebas, primero, tenemos la clase bajo prueba (Class Under Test) esta sera la prueba funcional o prueba de "caja negra" .
El proceso de una prueba de caja negra es simple, ejecutamos la unidad de prueba con datos y se observa la salida, la comparamos con el resulado esperado. En caso de que la prueba se supere, es decir, el resultado obtenido y el esperado son iguales, lo llamamos “oráculo”.
Conforme vamos pasando las pruebas de caja negra podemos determinar que “cantidad” de código hemos cubierto, es decir, cuanto procentaje de código hemos ejecutado. Esto son las pruebas de caja blanca.
Con las pruebas de caja blanca lo que buscamos es encontrar fragmentos del programa que no son ejecutados por los casos de pruebas.
Si encontramos que el resultado de estas pruebas es menor al 100%, debemos ejecutar otros casos para intentar llegar al 100%. Si aun así no conseguimos ese 100%, deberíamos preguntarnos si sirve de algo ese trozo de código.

Para realizar pruebas unitarias en Java por lo regular se utiliza la herramienta JUnit.

Aquí el link de junit: http://www.junit.org/
Para descargar JUnit https://github.com/KentBeck/junit/downloadshttps://github.com/KentBeck/junit/downloads recomiendo descarguen el primero que viene ahí junit4.9b2.zip Sample ya que ese contiene ejemplos con los que podemos realizar las pruebas.

Al descargar, nos posecionamos en la terminal en la dirección dónde está contenido el junit4.9b2.zip lo descomprimimos y configuramos el path entrando a .bashrc y al final ponemos la dirección en la que se encuentra el junit-4.9b2-src.


Aquí adjunto 2 capturas de pantalla en dónde accedemos al .bashrc, configuramos el path, y ejecutamos las pruebas de uno de los ejemplos.

 

Links de Referencia:
http://www.informatizando.es/?p=24
http://blog.continuum.cl/wp-content/uploads/2008/08/pruebas-unitarias.pdf

jueves, 7 de abril de 2011

Eventos, Excepciones y Errores (TALLER)

Que tal, ahora les presentaré los eventos, excepciones que detallé en la entrada anterior aplicados a mi proyecto.

Excepciones.
System.out.println ("\tIngrese el ID del Producto-> ");
  try {
  ID = lectura.nextInt();
  listid.add(ID);
  } catch (InputMismatchException e) {
  System.err.println("ERROR! EL ID INGRESADO NO CONCUERDA CON UN NUMERO ENTERO");
  } 

Al correr el programa lanza la excepción y también un error que finaliza la ejecución del programa.
 

El evento lo he pospuesto hasta que tenga mi interfaz gráfica, intente otros que corrieran sin la interfaz pero no me salieron, así que, lo del evento queda pendiente.
Saludos.

miércoles, 6 de abril de 2011

Eventos, Excepciones y Errores (CLASE)

Buenas Tardes, en esta entrada hablaré a cerca de en qué consisten los eventos, excepsiones o errores de programación y cuáles se pueden producir en el sistema que estoy desarrollando.


Eventos.
"Los eventos son el medio como interactúa una clase con otras o con el propio usuario, se encargan de avisar que algo ha ocurrido y de manejarlo de una forma o de otra. El modo de manejar los eventos en P.O.O. se conoce como emisor/receptor, también llamado despachador/escuchador o simplemente dispatcher/listener.
En esta dupla, la primera parte (el emisor) se encargará de lanzar el evento, mientras la segunda se encargará de recibirlo y gestionarlo como sea necesario. La primera parte será responsabilidad nuestra (los programadores de la clase) y la segunda es responsabilidad de quien utiliza la clase (en principio, también nosotros)."



Un evento aplicable a mi proyecto considero puede ser un escuchador en la clase Producto para que cuando el usuario agregue el precio del producto de un mensaje que el producto se ha agregado con éxito.


Excepciones.
"Una excepción es un objeto que se genera automáticamente cuando se produce un acontecimiento circunstancial que impide el normal funcionamiento del programa:
-          Dividir por cero
-          No encontrar un determinado fichero
-          Utilizar un puntero nulo en lugar de una referencia a un objeto
El objeto generado “excepción” contiene información sobre el acontecimiento ocurrido y transmite esta información al método desde el que se ha generado la excepción. La ocurrencia de estas situaciones excepcionales provocará la terminación no controlada del programa o aplicación."



Una excepción en mi programa puede ser pedir los datos del producto dentro de un try/catch y sí el tipo de dato ingresado por el usuario no concuerda con el establecido (un char en vez de int, un int en vez de float) mandar un mensaje que diga que el tipo de dato especificado no fue correcto.

Errores.
"En computación, un error fatal es un error que causa que un programa aborte (se cierre). Generalmente cuando esto sucede, los datos que el programa estaba procesando se pierden.
Un error fatal suele ocurrir generalmente en los siguientes casos:
* Se ha intentado realizar una instrucción ilegal.
* Se ha accedido a códigos o datos inválidos.
* El nivel de privilegio de una operación es inválido.
* Un programa intenta dividir por cero (en algunos sistemas que siguen el estándar de punto flotante de la IEEE, esta división produce una infinidad y no un error fatal).



También existen otro tipo de errores, los errores fatales del sistema, tal como la pantalla azul de la muerte de Windows.




Fuentes Bibliográficas y algunos tutoriales con ejemplos.
http://www.alegsa.com.ar/Dic/error%20fatal.php
http://www.slideshare.net/sgvargas/manejo-de-eventos-en-java-presentation
http://vcalpena.wordpress.com/4-excepciones/
http://heinsohn.wikidot.com/articulos:lineamientos-excepciones
http://www.javadabbadoo.org/cursos/infosintesis.net/javase/paqawt/selectorcolores/paso03javaObserver.html