Buscar este blog

lunes, 2 de abril de 2012

Concordion

     Para estrenar este blog con algo más profesional que los agradecimientos, me gustaría hablar de Concordion (http://www.concordion.org).
     Concordion es una gran herramienta para la automatización de especificaciones activas, de gran utilidad en desarrollos ágiles como Scrum, TDD o BDD. Es más, puede ser realmente útil a la hora de unificar estas tres tecnologías (que ya de por sí se llevan bastante bien, pero una ayudita extra siempre es buena).
     A grandes rasgos, a través de Concordion escribimos en formato html qué es lo que tiene que realizar nuestra aplicación y, con ayuda de tests JUnit (es decir, podemos incluir tanto test unitarios como tests Selenium), comprobamos si estas especificaciones se cumplen, dándonos como resultado un archivo de salida en html en el que se muestran en rojo las especificaciones que no han pasado el test y en verde las que si han pasado (para una explicación más clara del uso de Concordion podemos recurrir a su tutorial, en español, sencillo y realmente claro).
    ¿Qué es lo que más me gusta de Concordion, y lo que me ha llevado a escribir esta entrada? Pues los siguientes puntos:

  • Facilidad de uso en general, y de implantación en sistemas que ya tienen implementados los tests. La forma de definir las especificaciones es realmente sencilla e intuitiva, y el comenzar a usar las herramientas propias de Concordion no tiene por qué llevar más de 10 minutos.
  • Facilidad de integración con Spring. Tengo que admitir que cuando hice la primera prueba me quedé pensando "si, vale, muy sencillo, pero ahora cuando quiera utilizar la inyección de Spring, y correr los test con el JUnit de Spring, vendrá lo simpático". ¡Nada más lejos de la realidad! Cambiar un test hecho completamente con Spring para que use Concordion puede tardar... ¿5 minutos sin estresarse? Simplemente cambias el test original para que reciba los parámetros de Concordion y devuelva el dato que quieres que devuelva, y haces un test que procese el test de Concordion, y ¡ya está! Es así de sencillo (un ejemplo de la implementación se puede encontrar aquí, y sí, el test de procesamiento con Concordion son sólo tres líneas).
  • Facilidad de uso con Scrum, TDD y BDD. Por lo menos para mi imaginarme el ciclo de vida de una funcionalidad con estas metodologías usando Concordion me resulta simplemente evidente, y una forma de facilitar a los analistas / consultores el definir la funcionalidad de forma que cuando llegue al desarrollador sea entendible y que, cuando el desarrollador entregue la implementación, el consultor pueda ver fácilmente si se cumplen sus especificaciones. Tal como lo veo:
  1. El consultor definiría las historias de usuario indicando qué condiciones de entrada se tienen que cumplir y qué salidas se esperan, siguiendo las recomendaciones de Concordion, por ejemplo, "Si el usuario no es de rol X, no podrá obtener la lista de productor". Si tiene conocimientos suficientes como para especificarlo directamente en un documento html, mejor que mejor.
  2. El desarrollador definirá el fichero html que comprueba esta prueba en Concordion (bien creándolo desde 0 si no se lo entrega el consultor, o modificándolo para usar los tags específicos).
  3. Se crean los tests que comprueban si se cumplen las especificaciones que ha indicado el consultor.
  4. Se implementan los métodos necesarios para que se pasen los test y se refactoriza.
  5. Una vez probada la implementación, se lanzan los test Concordion, generando el reporte html que se pasará al consultor donde se indica que las especificaciones que ha solicitado se cumplen en la aplicación.
          No sólo se facilita la comunicación entre consultor y desarrollador, sino que se obtiene un documento que especifica que se obtienen los resultados esperados, todo dentro de metodologías ágiles que no sólo no nos harán perder el tiempo en pesada documentación, sino que facilitará ver como se va incrementando la funcionalidad de las aplicaciones.

No hay comentarios:

Publicar un comentario