Integrando BDD con Jenkins

Como ya sabéis, en 233 somos muy aficionados al Testing ágil (¿Cómo enfoco el testing de forma ágil?, ¿Qué haces testing ágil?…), y a todas las prácticas que conlleva. En mi caso, últimamente estoy muy metido en el tema de BDD (Entendiendo qué es BDD (Behaviour-Driven Development) 1/5), debido que estamos implantandolo en uno de nuestros proyectos, y porque francamente me parece una práctica MUY potente a la hora de aclarar malentendidos, desarrollar un lenguaje compartido entre negocio y el equipo de desarrollo y evitar bugs antes de que pueden acercarse a un kilómetro del código, gracias a que cucumber no es una herramienta de testing, sino un modelo de colaboración.
Uno de los motivos por los que BDD me gusta mucho, es que una vez definidas y automatizadas las pruebas de aceptación y desarrollado el código que las pasa, obtenemos un set de pruebas de regresión, que podemos ejecutar cada vez que queramos comprobar que todo sigue funcionando (al menos el comportamiento que hayamos registrado con estas pruebas de aceptación). Y para ello, podemos incluir este set de pruebas en nuestro proceso de integración continua con Jenkins. Aquí tenéis una mini guía para llevar a cabo esta integración:
Vamos a utilizar:
 -El sistema de control de versiones Git
 -El servidor de integración contínua Jenkins
 -Los plugins para Jenkins de Git y de Rake (instalados como administrador)
 -Un set de pruebas BDD (damos por hecho que ya se tiene instalado todo lo necesario para ejecutar este set de pruebas, incluyendo la gema de Rake)

Setup del proyecto BDD:

Lo primero de todo va a ser iniciar el repositorio Git en el directorio donde tengamos almacenadas las pruebas:
gitInit
Una vez iniciado el repositorio vamos a añadir un fichero llamado Rakefile en la carpeta, con el siguiente contenido:
rakefile
Los ficheros Rakefile son ficheros que se utilizan para configurar distintas tareas en Cucumber, de forma que no haga falta especificar todas las opciones que se requieren cada vez que se ejecute Cucumber, con solamente poner la tarea adecuada Rake ya se encarga de ejecutar estas opciones especificadas en el archivo Rakefile.
Para comprobar que todo funciona correctamente ejecutaremos:
rakeFeatures
Una vez funcione todo correctamente, añadiremos el contenido de la carpeta al repositorio que hemos creado:
commitInicial
Ahora instalaremos Jenkins en nuestra máquina, para ello tenemos dos opciones, utilizar la versión de navegador web sin instalar nada, o te puedes bajar el fichero .war y ejecutarlo desde la línea de comandos.
jenkinsWar
Para acceder a este Jenkins, sólo tenemos que utilizar un navegador web y introducir la siguiente dirección http://localhost:8080. En la última versión de Jenkins, al acceder por primera vez nos pedirá que creemos un usuario como medida de seguridad, y además nos ofrecerá la posibilidad de instalar una serie de plugins recomendados. Aseguraos de instalar el plugin de Git, el resto no serán necesarios para este tutorial.
Una vez iniciado Jenkins, instalar también el plugin de Rake, dado que no aparece en los plugins recomendados al iniciar hay que hacerlo posteriormente.

Compilaciones sincronizadas

Ahora crearemos una tarea de Jenkins para ejecutar las pruebas siempre que Jenkins detecte que ha habido un cambio en el repositorio. Para ellos vamos a clicar en Nueva Tarea, en el panel de la izquierda. Le daremos un nombre a la tarea y seleccionaremos el tipo “Crear un proyecto de estilo libre”.
crearProyecto
En la parte de “Configurar el origen del código fuente” seleccionaremos Git como URL del repositorio, escribiremos file:///ruta/de/pruebas, sustituyendo por la ruta del directorio donde tengamos las pruebas.
origenCodigo
En la sección de “Disparadores de ejecuciones” seleccionaremos “Consultar Repositorio (SCM)”. En el campo “Programador” introduciremos cinco asteriscos separados por espacios. Esto hará que se consulte el repositorio para comprobar si ha habido cambios todos los minutos de todas las horas de todos los días.
disparadoresEjecuciones
En la sección de “Ejecutar”, presionaremos “Añadir un nuevo paso”, y seleccionaremos “Invoke Rake” en el desplegable. En el campo de “Tasks”, escribiremos features, que es el nombre que le hemos dado a los tests de Cucumber en el fichero Rakefile.
ejecutar
Una vez esté todo correcto, guardamos el proyecto. Ahora tenemos una tarea de Jenkins que comprueba cada minuto si ha habido algún cambio en el repositorio donde tenemos las pruebas, por lo que para comprobar si realmente funciona, debemos de introducir algún cambio en el set de pruebas. Una vez introducido el cambio, añadid los cambios al repositorio con:
gitAddPrueba
Si todo va correctamente, Jenkins detectará los cambios y lanzará la tarea que hemos configurado.
salidaConsola
Y esto es todo por ahora. Espero que os haya gustado, y si tenéis alguna duda os animo a que comentéis en este post!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Share This
Ir arriba