¡Compártelo!

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

jdk 21

Jdk 21: mejoras en la última versión LTS de Java

Cada 6 meses Java lanza una nueva versión de nuestro lenguaje favorito. Da igual si la estábamos esperando con ganas o si nos pilla por sorpresa, es algo que celebrar dentro de la comunidad. Esta vez la versión 21 incluye diferentes características estables, otras en

openAPI

Explorando OpenApi: estructura, rutas y seguridad

En este artículo, nos adentraremos en la utilización de OpenApi para crear los diferentes endpoints de nuestra aplicación, con sus diferentes objetos de request y response que necesitemos. ¡Vamos allá! ¿Qué es una API? Las API (Interfaz de Programación de Aplicaciones) son piezas de código

Cómo hacer una Regresión Lineal Simple en Machine Learning

Cómo hacer una Regresión Lineal Simple en Machine Learning

En la actualidad, el aprendizaje automático se ha convertido en una de las bases para resolver problemas y como ayuda a la toma de decisiones. En este artículo nos centraremos en el análisis y aplicación práctica de uno de los modelos predictivos más sencillos, el