Jun 09 2008

Tests que no deben faltar

Tag: Software QAManuel Jesús Recena Soto @ 13:00

Después de 8 años vinculado al desarrollo de software tengo que reconocer que cualquier instalación de una nueva versión de un software supone un reto y no está exento de sorpresas.

El diseño e implementación de tests son actividades muy importantes y necesarias en el ciclo de vida de un proyecto software. Estas actividades forman parte de una disciplina denominada aseguramiento de calidad del software. Recientemente he llegado a la conclusión de que son esos pequeños detalles, que normalmente se dejan pasar por alto, los que más tiempo nos hacen perder a la hora de realizar un paso a producción. Realizar un paso a producción tiene sus connotaciones, y una de ellas es que normalmente o se realizan en las instalaciones del cliente o las realiza el propio cliente. Podríamos considerar en lugar del cliente, al usuario final para así dejar a un lado la parte empresarial de la profesión.

Con intención de recoger esos tests que nos adviertan de esos pequeños detalles, he preparado el siguiente listado de tests que incluiré por regla general en mi plan de tests para proyectos Java:

  1. Comprobar que la JVM que hay configurada en el sistema operativo es válida según el catálogo de requisitos no funcionales. Eso no evitará que si nuestra aplicación se despliega sobre un contenedor o servidor de aplicaciones, éste esté configurado con una JVM distinta a la del S.O., pero esta situación es menos frecuente.
  2. Si nuestra aplicación necesita una base de datos, comprobar que la configuración es correcta y que la versión y base de datos están recogidas en el catálogo de requisitos no funcionales.
  3. Realizar una comprobación como la anterior para servicios como directorio activo, correo electrónico, etc. De esta forma, podremos descartar problemas de integración con sistemas externos a nuestro software.
  4. Si nuestro software necesita escribir en el sistema de ficheros, comprobar que disponemos de los permisos correspondientes.
  5. Si nuestro software necesita acceder a internet o fuera de una red de área local, realizar la correspondiente comprobación.

Estos tests son muy simples pero nos ayudarán a detectar posibles problemas de integración con el entorno donde nuestro software se tiene que instalar. ¿Alguna sugerencia para añadir a estas pruebas de carácter muy básico?


Apr 20 2008

Transparencias sobre JUnit 4

Tag: Software QAManuel Jesús Recena Soto @ 11:00

Hace algunas semanas conocí el blog de John Ferguson Smart. Llegué a él de casualidad, como otras muchas veces mientras navegamos por la red en busca de información. Me sorprendió gratamente al ver que era el autor del libro Java Power Tools. Cuando vi el índice del libro me gustó mucho porque en él se habla de todas esas herramientas, buenas prácticas, metodologías y procesos que forman parte de mi trabajo.

John tiene una empresa llamada Wakaleo Consulting en la que ofrece servicios profesionales sobre:

  • Software Development Environment
  • Enterprise Java Kickstart
  • Training, Mentoring and Coaching

Hace algún tiempo comentaba algo sobre aquellas empresas que ofrecen servicios muy especializados sobre procesos de construcción de software, metodologías, buenas prácticas, herramientas como Maven, PMD, etc. Pues Wakaleo parece ser otra de ellas. Me sigo preguntando si estas empresas tienen cabida en el mercado español…

John ha publicado las transparencias que ha usado en una de sus últimas ponencias en las que habla sobre JUnit.

La verdad es que en la nueva versión de Opina comenzamos a usar JUnit 4 pero ahora estamos evaluando TestNG y el cambio me ha gustado mucho. Personalmente no fui el promotor del cambio, sino mi compañero José María. Todo vino a raíz de necesitar hacer una provisión de datos en la que hemos usando XStream y poder configurar el orden en el  que se ejecutan las pruebas. Con independencia de que también hemos organizado las pruebas en grupos para darle forma a las operaciones CRUD que usamos en nuestras pruebas unitarias.


Mar 19 2008

¿Qué “distribuibles” preparas para tus proyectos?

Tag: Herramientas, Software QAManuel Jesús Recena Soto @ 22:46

Antes de comenzar me gustaría comentar que la palabra distribuible está entre comillas porque la RAE parece que no la reconoce, sin embargo, creo que mucha gente la usamos. Este pequeño post lo he clasificado dentro de las categorías Herramientas y Software QA que tengo definidas en mi blog. Lo que justifica este hecho es que hablaré de Apache Maven y sobre cómo mejorar ciertos procesos típicos en la vida de un proyecto software. Para ello hablaré de los “distribuibles”, empaquetados, ensamblados o como se quieran llamar a esas estructuras (comprimidas o no) de directorios y archivos que se usan dentro del marco tecnológico JAVA como son los JAR, WAR, AAR, EAR, etc.

En esas estructuras de directorios normalmente encontramos ficheros compilados (p.e, .class), archivos de propiedades (p.e, .properties), archivos de configuración (p.e, .xml), recursos gráficos (p.e, .png), metainformación (p.e, manifest.mf) y algunos otros más. Personalmente me gustaría destacar todos aquellos archivos que formen parte de la configuración de una aplicación. Las configuraciones más comunes son las referentes a la conexión de base de datos, sistema de correo, sistemas LDAP, etc.

Una muy buena aproximación para mejorar la facilidad de mantenimiento, automatización y personalización de estos “distribuibles” es usar Maven y sacarle partido a los distintos plugins que existen (packaging types / tools) y la gestión de perfiles. Con esto podremos conseguir generar el WAR de nuestra aplicación web configurado para el entorno de producción de nuestro cliente. Bastará con realizar un proceso como el siguiente:

  1. Realizar un export del sistema de control de versiones correspondiente a la versión que se desee, que entiendo que estará etiquetada en directorio tags de nuestro repositorio.
  2. Dar de alta un perfil con la configuración del entorno que nuestro cliente nos ha facilitado.
  3. Ejecutar algo similar a: mvn package -P oracle -Denv=client-dev
  4. Desplegar, manual o automáticamente, nuestro WAR (artefacto) donde corresponda.

Doy por supuesto que los miembros del equipo de desarrollo estarán muy familiarizados con la generación de estos distribuibles, sin embargo, son otros perfiles los que, durante el desarrollo del proyecto y/o tras su finalización, tendrán que continuar con su soporte, mantenimiento y evolución. Un ejemplo con el que muchos se pueden sentir identificados es el típico proyecto de llave en mano para un cliente que nos encarga algo a medida. En ese contexto, si el cliente nos demanda que le enviemos un SNAPSHOT para que su personal vaya haciendo pruebas, ¿Qué “distribuible” preparamos?

Es muy frecuente que si se trata de un proyecto software, haya sido un departamento, área o división de desarrollo quien nos haya realizado el encargo. Con esto quiero decir, que el perfil que va a recibir nuestro “distribuible” es probable que con unas simples instrucciones sea capaz de generar el “distribuible” apropiado a partir de un export del repositorio. Ahora bien, no basta con hacer un export, comprimirlo y enviarlo al cliente con las instrucciones, entre otras porque en el repositorio es muy probable que haya información sobre nuestros entornos de desarrollo, múltiples perfiles configurados o simplemente, información que no es útil para el cliente y que únicamente provoca ruido. Con lo cual, parece razonable pensar que vamos a necesitar un “distribuible” con las fuentes de nuestro proyecto que, acompañadas de una guía de instalación y configuración, permitan que el propio cliente pueda ir asumiendo estas tareas que tarde o temprano serán de su plena responsabilidad.

La opción planteada me parece lógica. El cliente nos demanda las fuentes del proyecto, nosotros se las entregamos con los archivos justos y precisos que necesitan para la configuración, pruebas unitarias/integración y la posterior generación del WAR, JAR, AAR o el que corresponda, que se desplegará en el entorno correspondiente.

Con la intención de dar un pasito más y pensando en los perfiles del departamento, área o división de infraestructuras, creo que agradecerán si les ahoramos hacer un export, tener instalado maven, tener instalado el JDK correspondiente y otros pequeños detalles que pueden hacer que algo fácil y mecánico, se retrase durante días. En prácticamente todas empresas e instituciones que conozco es el personal de sistemas o infraestructuras quien verdaderamente realizara los despliegues en los entorno de producción, por lo tanto, nos interesa facilitar al máximo las cosas.

Entiendo que para un administrador de sistemas le resultará más cómodo descomprimir un archivo comprimido (zip, tar.gz, etc.), editar el archivo de configuración que estará documentado en la correspondiente guía de la que antes hablaba y colocar la estructura de directorios y archivos en el lugar correspondiente para su despliegue. Este nuevo caso nos encontramos con que necesitamos preparar un “distribuible” con los binarios de nuestro proyecto.

Son muchas las circunstancias que puede hacer que el administrador del servidor de aplicaciones del cliente necesite volver a desplegar una aplicación determinada, como por ejemplo, cambios en la configuración de red, DNS, modificaciones en las credenciales (usuarios/contraseñas), migraciones, etc, ¿En todas esas situaciones es necesario que haya un desarrollador presente? Si las cosas se hacen bien, podemos ahorrarnos mucho trabajo. Tengo que reconocer que la realidad es otra, pero lo bueno es saber que existen otras formas de hacer las cosas.

Para concluir me gustaría añadir que aparte de lo que podamos generar en nuestra fase de empaquetado (package) y que además lo tenemos automáticamente con Maven, es muy recomendable preparar al menos otros dos “distribuibles” adicionales, uno con los fuentes y otro con los binarios. Para ello es de gran utilidad el plugin de Maven Assembly. Como me he extendido demasiado, aprovecharé otro post para poner algún ejemplo con este plugin. En Opina lo usamos para generar opina-bin-1.0.8.zip, que es el binario de la versión 1.0.8 de Opina que está listo para ser descargado, descomprimido, configurado y desplegado.


Dec 05 2007

Nueva lista de correo sobre ecosistemas software

Tag: Herramientas, Ingeniería del software, Software QAManuel Jesús Recena Soto @ 00:32

En esta ocasión escribo para comunicar que se ha creado una nueva lista de correo para tratar temas relacionados con ecosistemas software basados en herramientas con licencias de código abierto. La lista de correo acaba de ser creada y esperamos que sea bien aceptada por la comunidad de desarrolladores. Para más información sobre la lista de correo:

http://groups.google.com/group/ecosistemas-software

Particularmente mi aportación estará centrata en las herramientas con la que tengo experiencia, sin embargo, tengo mucho interés por conocer otras configuraciones de ecosistemas software. Esas herramientas son Maven, Archiva y Continuum, todas ellas de Apache Foundation.

Logotipo de Apache Foundation


Nov 03 2007

Expo:QA - Jornadas Profesionales de Calidad y Testing de software

Tag: Software QAManuel Jesús Recena Soto @ 11:16

ExpoQA son unas jornadas anuales que comenzaron a celebrarse en el año 2004. En su cuarta edición, el programa de conferencias resulta atractivo. Estas jornadas están compuestas no sólo por conferencias sino que a los días 29 y 30 de noviembre, les preceden 3 días de cursos.

Viendo la información publicada sobre las ediciones anteriores -creo- que este año es el primero en el que hacen un hueco a la accesibilidad y usabilidad. Hablar del aseguramiento de la calidad del software sin hablar de accesibilidad y usabilidad me parece un error.

Si la agenda lo permite y me autorizan, me gustaría mucho asistir.

Logotipo de ExpoQA


May 10 2007

Software QA: ¿vaporware?

Tag: Software QAManuel Jesús Recena Soto @ 09:55

Aprovecho esta entrada en el blog para inaugurar una nueva categoría de contenidos, Software QA. Es un campo en el que siempre me he sentido muy cómodo e interesado quizás debido a lo detallista, cuidadoso y organizado que me gusta ser con las cosas que hago. Aunque bueno, no siempre se pueden hacer las cosas como uno quiere.

Es para mi un placer informaros sobre un evento de Software QA totalmente gratuito. Algunos datos importantes sobre el evento:

FECHA:

29 de mayo de 2007

LUGAR:

HOTEL MELIA COLÓN
CANALEJAS, 1 SEVILLA
ESPAÑA - 41001

A continuación tenéis la información del díptico con el que se está publicitando el evento:

El aseguramiento de la calidad del software (Software QA o SQA) ha sido típicamente un paradigma en torno al cual los consumidores de eSolutions han volcado sus expectativas, recibiendo generalmente productos cerrados dentro de los cuales es imposible vislumbrar
marcos de referencia, metodologías, procedimientos, etc, con los que asegurar la calidad del software.

En GMV entendemos que SQA debe ser concebido como un requisito intrínseco a cualquier desarrollo que se afronte y no como un elemento de valor añadido, motivo por el cual constituye por sí mismo una de nuestras líneas de trabajo fundamentales.

Utilizando como base tanto la experiencia acumulada en el desarrollo de productos software propios o soluciones a medida según las exigencias del cliente, como las labores de I+D que se realizan a nivel interno, hemos definido una infraestructura sólida sobre la que afrontar nuevos retos de forma más eficiente. Convencidos de los beneficios que se están obteniendo creemos que es el momento de compartir nuestras experiencias y reflexiones al respecto.

En este seminario, GMV le invita a conocer su visión acerca de la importancia de SQA para minimizar riesgos y maximizar la calidad y la ransparencia de los productos resultantes. Adicionalmente, se expondrán una serie de buenas prácticas, metodologías y herramientas concretas que nos están permitiendo incrementar nuestra eficiencia y mejorar la satisfacción de nuestros clientes.

Dado que el número de plazas es limitado, le rogamos nos envíe su solicitud a la dirección o teléfono que abajo le indicamos.

RESERVAS: marketing-sgi@gmv.com / +34 954 088 060

GMV SOLUCIONES GLOBALES
INTERNET, S.A.
OFICINAS SEVILLA
Avda. Américo Vespucio
Edif. Cartuja. Bloque E -1ª Pta
41092 - Sevilla
Tel: +34 9954 088 060
Fax: +34 954 081 233
infosgi@gmv.com
www.gmv-sgi.com

En el díptico también se ha publicado la agenda del evento:

9:30h - 10:00h: Recepción, entrega de documentación y café

10:00h - 10:15h: Introducción a GMV

Ponente: Miguel Hormigo, Director de la Delegación de Andalucía, GMV-SGI

10:15h - 11:00h: Aseguramiento de la calidad: una aproximación cualitativa

Ponente: José M. Palacio, Responsable de SQA de la Delegación de Andalucía, GMV-SGI

11:00h - 12:00h: ¿Y ahora qué? El día a día

Ponente: Manuel Gómez, Responsable de desarrollo de la Delegación de Andalucía, GMV-SGI

12:00h - 12:30h: Pausa - Café

12:30h - 13:30h: Modelando la calidad con software libre

Ponente: Manuel J. Recena Soto, Responsable de Innovación de la Delegación de Andalucía, GMV-SGI

13:30h - 14:00h: Demostración práctica

Ponente: Manuel J. Recena Soto, Responsable de Innovación de la Delegación de Andalucía, GMV-SGI

14:00h: Cóctel

Sin intención de desvelar los secretos de las ponencias simplemente daros algunas palabras clave: metodología, procedimientos, buenas prácticas, sistemas de control de versiones, seguimiento de incidencias y errores, procesos de construcción, pruebas unitarias, pruebas funcionales, pruebas de sistemas, integración continua, etc… el resto se desvelará durante el evento.