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

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
SIGUIENTE ARTÍCULO

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.