Entendiendo qué es BDD (Behavior-Driven Development) (III). Cucumber y herramientas que entienden el lenguaje Gherkin

Post invitado, escrito por Natalia Carretero
Como algun@ recordareis, hace unos seis meses me propuse hacer una serie completa de post sobre BDD. De hecho, escribí los dos primeros. Los que me conocen y ven como últimamente no tengo un minuto libre, que a su vez son muchos de aquellos que no daban un duro porque realmente terminara esa serie de post de BDD… acertaron, maldita sea, acertaron. Pero a medias, je, sólo a medias has acertado.
A medias porque Natalia Carretero, que va camino de convertirse en la experta killer en BDD, ha dado un paso al frente para solucionar la injusticia de dejar la serie de BDD incompleta. Ha tomado el testigo y aquí nos deja la parte III de la serie sobre BDD (y confiamos en que haya una 4 o las que hagan falta) 

Como explicaba Javier en el primer post de esta serie Entendiendo qué es BDD (Behavior-Driven Development) (I), Gherkin es de gran ayuda para los stakeholders (negocio, comerciales, etc.), para product owners y testers, proporcionando una forma sencilla de escribir test para que puedan ser entendidos por cualquiera.
En el segundo post (aquí te dejo el link),  Javier terminaba diciendo que hay herramientas capaces de entender los escenarios escritos en Gherkin, y ahí retomamos la serie de post, en las herramientas.

Las herramientas que entienden Gherkin

Pues bien, sabiendo esto, en la siguiente tabla te muestro algunas de las herramientas disponibles que entienden Gherkin, son herramientas con las que podrás utilizar BDD. La más conocida es Cucumber pero hay muchas más y disponibles para diferentes lenguajes. Véamos las más destacadas y los lenguajes en los que se suelen utilizar (os señalo los más conocidos en negrita):

JavaJBehave , JDave , Instinct , beanSpec
CCSpec
C#NSpec, NBehave
.NETNSpec , NBehave, SpecFlow
PHPPHPSpec, Behat
RubyRSpecCucumber
JavaScriptJSSpec , jspec
PhythonFreshen

Gracias a estas herramientas se pueden ejecutar pruebas automatizadas escritas en texto plano utilizando las ideas de BDD. Estas pruebas interactúan directamente con el código de la aplicación y están escritas en un lenguaje que cualquier persona puede entender, es decir, Gherkin, que representa la forma en la que se escriben estas pruebas en texto plano.
Cucumber marcó un antes y un después en la difusión de BDD y fue justo en este contexto cuando se estandarizó la sintaxis de especificación en texto plano, conocida como Gherkin. Por ello nos fijaremos en Cucumber. Pero que la tabla no os confunda, Cucumber está escrito en Ruby y a menudo las pruebas se realicen en ese lenguaje, pero también se puede utilizar con aplicaciones escritas en otros lenguajes de programación, como Java o .Net.
Sea cual sea el lenguaje en el que se realicen las pruebas, Cucumber ejecuta las pruebas tal y como os enseño a continuación:

Cómo ejecuta Cucumber una prueba

Aunque en otros post veremos un ejemplo de cómo utilizar Cucumber, en este vamos a ver cómo ejecuta Cucumber una prueba, por ser la herramienta más popular. Podemos diferenciar dos partes en una prueba:
– El caso de prueba, está en los archivos .feature (que están en la carpeta features). Son el dado, cuando, entonces, pero e y. Como ya vimos, tienen esta pinta:
bdd cucumber 1
Y la definición de un caso de prueba (donde se implementa la prueba, se ubican dentro de la carpeta step_definitions).
bdd cucumber 2
Cada escenario en Gherkin contiene una serie de casos de prueba escritos en un lenguaje que entienden todos. Estos también forman la documentación del sistema y necesitan la definición de los caso de prueba para decir a Cucumber qué es lo que tiene que hacer.
Cuando Cucumber ejecuta un caso de prueba (Dado, Cuando, Entonces, Y, Pero), en un escenario, busca la definición correspondiente de dicho caso de prueba, es decir, la que coincida su texto, y la ejecuta el código que tenga en ella.
Para las imágenes de antes:
1 – Cucumber cogería primero el caso de prueba definido en una carpeta llamada features, un archivo con extensión .features que dice Dado un contexto inicial.
2 – A continuación, busca en una carpeta llamada step_definitions, la definición de caso de prueba que le corresponda. En este caso es:
bdd cucumber 3
3 – Ejecuta el código que tenga dentro
4 – Repite el mismo proceso para el resto de los casos de prueba
Y aquí termina este post. En el siguiente os diré como instalar Cucumber en diferentes sistemas operativos y un ejemplo de cómo utilizar Cucumber con Gherkin. Espero que os haya gustado mi primer post en este blog y ya sabéis, a comer mucho Pepino (Cucumber) y pepinillo (Gherkin) este verano 😉 ¡Nos vemos en el siguiente!

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

0 comentarios en “Entendiendo qué es BDD (Behavior-Driven Development) (III). Cucumber y herramientas que entienden el lenguaje Gherkin”

  1. Muy bien explicado, y gran aportación sobre todo en la parte de las herramientas, muchas gracias!
    Quisiera comentar que también hay bastantes plugins que facilitan el trabajo en la mayoría de los IDEs, os pongo un enlace a los de eclipse, con algunos he trabajado bastante y me han aportado, pero como no quiero discriminar, lo mejor que os puedo decir es «probarlos» 🙂

Dejar un comentario

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