¡Compártelo!
Compartir en facebook
Compartir en twitter
Compartir en linkedin

Qué es Gherkin: cómo usarlo y cuáles son sus elementos

En este post explicamos qué es Gherkin, un lenguaje DSL (lenguaje de dominio específico) muy cercano al lenguaje natural. Repasamos cómo usarlo y cuáles son sus elementos.

Comprendiendo el marco dónde se aplica Gherkin: del TDD al BDD

Igual que una planta crece hacia el Sol… ¿Qué guía tu desarrollo? ¿Los tests unitarios o el comportamiento de la aplicación?

En desarrollo de software, hay una gran cantidad de buenas prácticas que pueden ayudarnos a hacer un código mucho más limpio, optimizado y mantenible. Una de estas prácticas es el Test Driven Development (TDD) o Desarrollo Dirigido por Pruebas, es decir, hacer primero las pruebas (y que estas fallen) y posteriormente desarrollar el código que permite que la prueba pase. No obstante, el desarrollador de software Dan North encontraba al TDD ciertas limitaciones y, debido a ello, propuso un nuevo enfoque para el desarrollo de software: Behavior Driven Development (BDD) o Desarrollo Dirigido por Comportamiento.

¿Y qué es el BDD? En BDD también escribiremos nuestros tests antes que el código que pasa dichas pruebas (a diferencia de la forma tradicional de desarrollo de software en que el testing se acaba dejando para lo último, perdiendo una gran oportunidad de optimizar nuestro trabajo como programadores), pero la diferencia es que nuestros tests no son como en TDD tests unitarios, sino pruebas que validarán que nuestro código cumple requisitos funcionales de negocio.

Por tanto, BDD es un enfoque muy potente para implementar proyectos de software, ya que permite cruzar el puente existente entre los perfiles de negocio (sin conocimientos técnicos pero con amplio conocimiento del producto que se está desarrollando así como de aspectos más económicos del mismo, como puede ser el retorno de la inversión) y los perfiles técnicos (que somos todos aquellos encargados del desarrollo del proyecto pero que tenemos poco conocimiento del área de negocio del proyecto que estamos desarrollando). Los perfiles técnicos y de negocio son complementarios y cuanto mejor sea su compenetración, mejores resultados obtendremos con el proyecto que se está llevando a cabo.

¿Qué es Gherkin?

Tras leer este artículo, no volverás a preguntarte nunca qué es Gherkin (fuera del ámbito culinario)…

Tras esta breve pero necesaria introducción, llegó el momento de contarte qué es Gherkin. Gherkin es un Lenguaje Específico de Dominio (DSL), que son lenguajes diseñados en concreto para resolver un problema muy específico. Y, en este caso, el problema que quiere solucionar Gherkin es un problema de comunicación entre los perfiles de negocio y los perfiles técnicos a la hora de trabajar bajo un enfoque BDD. También se podría trabajar Gherkin con otros enfoques de desarrollo de software, pero lo ideal y lo natural es hacerlo con BDD, al ser mejor práctica y para el enfoque de programación para el que se desarrolló Gherkin. 

Gherkin está compuesto por varios elementos que permiten esta comunicación entre perfiles de negocio y técnicos de forma sencilla. Gherkin tiene elementos de tipo características, de tipo comportamientos, de tipo acciones… Pero todo en lenguaje natural, que un perfil de negocio entienda y un técnico pueda trasladar a código.

Ejemplo de uso de Gherkin

Vamos a verlo con un ejemplo. Pongamos que estamos desarrollando una tienda online o ecommerce. Partamos de historias de usuario, de dónde obtendremos las funcionalidades, siguiendo el clásico modelo de “Yo como usuario quiero poder hacer x para poder obtener y”. En este caso de desarrollo de una tienda online, podríamos estar ante la siguiente funcionalidad: “Yo como usuario quiero poder iniciar sesión para poder comprar productos”.

Ahora traduzcamos esto a Gherkin y expliquemos qué es cada elemento del lenguaje (puedes consultar las definiciones en el siguiente apartado):

  • Feature: inicio de sesión en la tienda online.
  • Scenario: inicio de sesión mediante usuario y contraseña.
  • Given: el usuario ha de introducir de forma correcta su usuario y su contraseña, que ha registrado previamente. 
  • When: el usuario clica sobre el botón de iniciar sesión.
  • Then: el usuario puede iniciar sesión de forma correcta.

Sus elementos más utilizados

  • Feature: básicamente es la descripción de la funcionalidad a desarrollar. Se trata de un elemento de tipo característica en Gherkin, es decir, los elementos que son de más alto nivel.
  • Scenario: una feature tiene uno o varios scenarios, que no son otra cosa que distintas características (que pueden estar relacionadas o no) que se tienen que desarrollar para poder conseguir la feature que nos hemos comprometido a entregar a cliente. Los scenarios son elementos de tipo comportamiento (hay muchos otros elementos de este tipo, pero sólo explicaremos este por simplificar y ser el más común, ya que este no es un curso de Gherkin sino una breve introducción a qué es Gherkin).
  • Given: son las precondiciones para que se puedan ejecutar x acciones. Es un elemento de tipo acción.
  • When: se trata de las condiciones de las acciones que se van a ejecutar y es un elemento de tipo acción. Then: se trata del resultado esperado de las acciones ejecutadas, también es un elemento de tipo acción.

¿Cómo usar Gherkin?

qué es Gherkin

La mejor forma de usar Gherkin es con Cucumber… Sigue leyendo y sabrás por qué.

Como comentamos anteriormente, lo ideal es utilizar Gherkin con una aproximación al desarrollo de software basada en el enfoque BDD y es muy recomendable el uso de Gherkin con Cucumber. ¿Por qué? Porque Cucumber es un framework de testing con soporte para BDD, dónde las especificaciones BDD están escritas de acuerdo al patrón “Given-When-Then”. Es decir, ¡están escritas en Gherkin!

Por tanto, Cucumber, a partir de estas instrucciones escritas en Gherkin puede generarnos los casos de prueba de la aplicación y, por tanto, darnos una mayor velocidad en el desarrollo del software. Por supuesto, hay muchísimas otras tecnologías que nos permiten trabajar con Gherkin, pero Cucumber es la más popular.

Espero que este artículo te haya resultado clarificador y ahora comprendas perfectamente qué es Gherkin. Y, para no perderte ningún artículo sobre tecnología, no te olvides de seguirnos en Twitter y en nuestras redes sociales. ¡A disfrutar de Gherkin y el BDD en tus próximos proyectos!

Artículos relacionados

Oh My ZSH

Vitamina tu terminal con Oh My ZSH

Para todos los que nos dedicamos al mundo del desarrollo software, una gran parte del tiempo de nuestro trabajo pasa al lado de nuestra querida terminal. En este post hablaremos de Oh My ZSH, un paquete de utilidades, plugins y plantillas para el shell ZSH que

sdkman

SDKMAN!: ¿qué es, cómo instalarlo y utilizarlo?

En este artículo vamos a hablar un poco sobre qué es SDKMAN!, cómo se instala y qué nos ofrece. Veremos también un ejemplo real de cómo instalar varias versiones de Java utilizando esta herramienta. ¡Sigue leyendo! ¿Qué es SDKMAN!? SDKMAN! es una herramienta que nos

DevToys

DevToys, o cómo facilitar el día a día de un desarrollador software

Microsoft nos presenta, de la mano de Etienne Baudoux, DevToys, una pequeña suite de utilidades de código abierto enfocada a facilitar el día a día de los desarrolladores de software. Su creador la define como una “navaja suiza para desarrolladores” y, desde hace pocos meses,