Blog de Antonio Manuel Muñiz

Desarrollo, Ingeniería y Calidad del Software

Archivos mensuales: mayo 2008

Una iniciativa: Testing Experience

Hace unos dos meses buscando algún tipo de publicación sobre calidad del software y testing encontré una (mas o menos bienal) sobre el el tema. Se trata de una revista (disponible en formato electrónico y en papel) llamada Testing Experience. La publicación es totalmente gratuita, una gran noticia teniendo en cuenta que cualquier libro sobre la materia no baja de los 60 Euros.

La verdad es que es bastante interesante, algunos de los temas tratados son más técnicos y otros no tanto, pero en general esta muy bien. Sobre todo hay que valorar la iniciativa de este grupo de personas al sacar a la luz una revista sobre un tema en plena efervescencia en la actualidad del mundo del software.

Me gustaría destacar en el número de este mes el artículo titulado “Turning software testing into the backbone of your quality assurance system”. El artículo expone la importancia de las pruebas en el aseguramiento de la calidad, pero indica que no lo son todo, y basar la calidad del software solo en las pruebas es un error, por supuesto comparto esta idea, hay otros muchos aspectos que componen la calidad, como aspectos relacionados con analisis estático del código fuente, la calidad de la documentación, el proceso de construcción, la automatización del despliegue, etc

Por último solo decir que aunque la revista es alemana, me ha sorprendido que su director es español, José Manuel Díaz Delgado.

Construcción y Testing de Web Services con Axis y Maven

Hace tiempo estuve desarrollando un stack de servicios web que dieran acceso a una serie de
procedimientos almacenados en una base de datos Oracle. Uno de los objetivos fue automatizar
totalmente el proceso de construcción de los web services con Maven.
La solución se basó en el framework WS de Apache, Axis2 1.3, que en principio ofrece un conjunto
de herramientas en línea de comandos para la generación del código tanto del servicio como de
los clientes. Para la generación del código del servicio se ejecuta:

wsdl2java -uri InterfazWS.wsdl -p interfaz.ws -o target_directory -d xmlbeans -s -ss -sd

Esto genera todos los artefactos necesarios para gestionar las peticiones al web service, solo
tenemos que implementar la lógica de la clase Skeleton.

Este proceso es algo tedioso cuando se esta desarrollando, y además necesitamos tener instalado wsdl2java para generar el código, vamos a automatizarlo con maven, de forma que solo tenemos que ejecutar el comando anterior una sola vez, la primera, para que nos genere la clase Skeleton, esta clase es la que pondremos como fuente de nuestro proyecto (en src/main/java). Desde luego, en el momento del despliegue del servicio no tendremos que ejecutar wsdl2java en la línea de comandos.

La estructura del proyecto será la siguiente:

- -+ src
- - - -+ main
- - - - - - - -+ java
- - - - - - - - - - -+ InterfazWSSkeleton.java
- - - - - - - -+ resources
- - - - - - - - - - - - -+ META-INF
- - - - - - - - - - - - - - - - -+ InterfazWS.wsdl
- -+ interfaz-ws-soapui-project.xml
- -+ pom.xml

Utilizaremos el plugin axis2-wsdl2code-maven-plugin para la generación del servicio
a partir del WSDL (e la fase generate-sources).

Pero este plugin genera todo el código en el directorio que le indiquemos, en nuestro caso target/generated-by-axis2, ahora tenemos que moverlo a src/main/java. ¿Por que no haberlo generado directamente en src/main/java?, por que entonces se sobreescibiría la clase Skeleton y no queremos que pase esto, es en ella donde dotaremos de lógica al servicio y hay que mantenerla, de hecho, será la única clase que tendremos en src/main/java, el resto se generará. Para mover los fuentes y el resto de recursos utilizaremos maven-antrun-plugin.

El segundo objetivo es automatizar las pruebas, lo haremos con maven-soapui-plugin. Este plugin
necesita un fichero xml generado con la herramienta SoapUI. Por tanto debemos definir nuestros
tests con SoapUI y utilizar el fichero xml en el que la herramienta almacena la información de
los tests definidos. A este plugin solo hay que indicarle donde encontrar el fichero xml de SoapUI
y la URL del servidor en el que se encuentra el servicio (el path al wsdl ya lo contiene el xml de SoapUI).
Por último también tenemos que configurar el plugin maven-clean-plugin para que elimine lo que nos
interesa.

Una vez configurado todo, podemos generar y testear el servicio web automaticamente con maven.
El proceso completo consta de los siguientes pasos:

mvn package

- Genera un jar que podemos desplegar en el Axis Manager (WAR) (o en nuestra aplicación web, en
caso de que la hayamos adaptado para desplegar servicios Axis2)

mvn eviware:maven-soapui-plugin:test

- Ejecución de tests funcionales

mvn eviware:maven-soapui-plugin:loadtest

- Ejecucuión de tests de carga

Aún no lo he probado con la versión 1.4 de Axis, en cuanto lo pruebe comento como ha ido.

Este es el fichero pom.xml completo

Sonar: Medidas de la calidad del software

La calidad del software es un concepto en ocasiones algo abstracto. Qué mejor forma de concretar
un idea que con números. Seguramente todos hemos escuchado la famosa frase de Tom DeMarco: “no
podemos controlar lo que no podemos medir
“, pues bien, Sonar nos da una herramienta de medición bastante completa, y por tanto, control.

Llaman la atención especialmente medidas como la mantenibilidad o la eficiencia del código.

Por otro lado su utilización es bastante sencilla, basta con deplegar nuestro proyecto modelado con
Maven ejecutando:

mvn org.codehaus.sonar:sonar-maven-plugin:1.2:sonar

Este aspecto ofrece la posibilidad de integrar Sonar con nuestro sistema de integración contínua, solo hay que definir este “build” además de los que tuviéramos definidos previamente y periódicamente se realizará un analisis estático del código del que obtendremos métricas muy interesantes.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.