Construir una Aplicacion Web utilizando HttpUnit y la Metodología Diriga al Test

JUnit realiza testeo autom�tico de aplicaciones Java que o se ejecutan desde la l�nea de comandos o se sirven como componentes. Sin embargo, si desarrollas aplicaciones distribuidas o de gran escala, estar�s trabajando con aplicaciones Web Java. Como las aplicaciones Web se comunican mediante HTTP en vez de con llamadas a m�todos Java, JUnit est� pobremente equipado para testear aplicaciones Web. HttpUnit viene al rescate. Esta herramienta gratuita proporciona funcionalidades de testeo Web que complementan a JUnit.

Puedes trabajar con HttpUnit de forma aislada, o puedes mezclar HttpUnit con JUnit, lo que te permitir� utilizar las caracter�sticas de reporte y regresi�n de JUnit. Aunque comparte un nombre similar a JUnit, la librer�a HttpUnit es de prop�sito m�s general que la media de tus marcos de trabajo. Contiene c�digo para simular un navegador, incluyendo un soporte parcial de JavaScript. HttpUnit esencialmente es un cliente Web programable.

El API cliente de HttpUnit te permite escribir tests que simulen a un usuario accediendo a una aplicaci�n basada en Web mediante un navegador. Tiene muchas de las funciones que esperas en un navegador: control de cookies por sesiones, analisis de contenido HTML, env�o de formularios meditante los m�todos GET y POST, autentificaci�n, y otras caracter�sticas. Puedes chequear si hay cierto contenido en la p�gina, enlace por enlacex y formulario por formulario, lo que te permite verificar que la aplicaci�n devuelve los resultados apropiados.

.�Macros Grabadas vs, API Program�tico

Los dos m�todos principales para realizar testeos autom�ticos de aplicaciones Web son: [1] mediante macros grabadas que puedan reproducirse y [2] mediante un API program�tico que analice las respuestas HTTP. Las macros grabadas requieren revisiones frecuentes y tienden a ser fragiles. Un API program�tico requiere recoger a parte de los ficheros HTML recibidos desde el servidor Web y construir �rboles de objetos rellenos con elementos HTML y contenido de texto. Esta aproximaci�n m�s flexible minimiza el mantenimiento de los tests en la mayor�a de los casos comunes y permite testear funciones complicadas de las aplicaciones Web que devuelven como respuesta p�ginas HTML altamente variables o complejas. Esta es la aproximaci�n que toma HttpUnit.

El lado negativo del testeo autom�tizado basado en API con respecto a las macros grabadas es que la aproximaci�n dirigida al API tarda un poco m�s en configurarse. La r�pida configuraci�n que se consigue apuntando y pulsando es dificil de batir. A pesar de todo, las aplicaciones tienen a evolucionar significativamente, por eso el tiempo empleado en mantener los tests tiende a pesar m�s que el tiempo empleado en configurarlos. Adem�s, la aproximaci�n de las macros grabadas sufre de la seria limitaci�n de que tenemos que haber escrito el c�digo de la aplicaci�n antes de poder construir un test para ella. Si te adhieres a la metodolog�a tests-primero, como recomienda la programaci�n extrema, no has tenido suerte porque debes tener una aplicaci�n funcionando para interact�ar conella antes de poder grabar una macro y reproducirla.

Este tutorial se enfoca en una aplicaci�n de list�n telef�nico rudimentario que permite al usuario crear, editar y borrar contactos y obtener una lista de contactos. Por simplicidad, evita construir la persistencia en la base de datos para enfocarse en el proceso de desarrollo en vez de en el proceso de configuraci�n y de instalaci�n. Sin embargo, entra en una codificaci�n que permite f�cilmente la adicci�n de la persistencia en la base de datos.

Requerimientos:
Deber�as tener al menos un conocimiento b�sico de qu� es el J2SE 1.4 SDK y de c�mo utilizar Ant. Tambi�n deber�as saber como configurar una distribuci�n de Tomcat. Tambi�n utilizaremos Struts, pero no tendr�s que saber nada sobre �l, excepto saber como descargar su distribuci�n y descomprimirla.

.�Configurar el Entorno de Desarrollo

Para empezar con HttpUnit, descarga la distribuci�n desde www.httpunit.org. La �ltima versi�n en el momento de escribir esto era la 1.5.4, liberada en Agosto de 2003. La distribuci�n de HttpUnit incluye los ficheros fuente en un subdirectorio llamado src y los ficheros compilados en un fichero JAR bajo el directorio Lib.

Como ejercicio inicial, y como usuario novato de HttpUnit, teclea ant run-example en una ventana de consola abierta en el directorio principal de la distribuci�n de HttpUnit. Esto ejecutar� un test de ejemplo escrito para HttpUnit. El c�digo de ejemplo est� en el fichero examples/Example.java bajo la ra�z.

Primero, configura el entorno de desarrollo. En el c�digo de ejemplo encontrar�s ficheros llamados phonelist.tgz y phonelist-example-files.tgz. Tambi�n hay versiones de estos ficheros disponibles en formatos de otras herramientas de compresi�n. Selecciona el fichero adecuado b�sandote en tu plataforma. En todo el tutorial utilizaremos el formato de ".tgz" por ser el formato m�s prevalente en Linux. El archivo phonelist.tgz contiene la aplicaci�n totalmente funcional. El archivo phone-example-files.tgz contiene los ficheros que utilizar�s a lo largo del tutorial.

Descarga o copia el fichero phonelist.tgz a tu directorio home. Desempaqueta el fichero con los siguientes comandos:

mkdir ~/projects
cd ~/projects
tar xzf ~/phonelist.tgz
cd phonelist

El comando mkdir ~/projects dar� un error si ya existe el directorio projects. Para ejecutar la aplicaci�n, primero asegurate de que Tomcat se est� ejecutando y que los valores de tomcat.install.dir y struts.install.dir son correctos para tu entorno. Luego teclea ant deploy. Esto deber�a construir la aplicaci�n y desplegarla en Tomcat, donde puedes acceder mediante la URL: http://hostname:8080/phonelist. Deber�as reemplazar hostname con el nombre real del ordenador que ejecuta Tomcat. La aplicaci�n deber�a ser auto-explicativa, Podr�as querer mirar el fichero build.xml que hay en ~/projects/phonelist, porque pronto te ver�s en el proceso de crear una aplicaci�n de software.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO