Softtek Softtek
  • Our experience
  • Overview
  • Insights
  • Blog
  • Newsroom
  • Careers
  • Contact us
softtek Language Selector
ENGLISH
EUROPE / EN
ESPAÑOL
EUROPA / ES
PORTUGUÊS
中文(简体)
Search button
AI
APPROACH
INDUSTRIES
SERVICES & SOLUTIONS
TRANSCEND
Softtek GenAI
FRIDA AI for Software Engineering
Service Transformation
Portfolio Transformation
Digital Acceleration
Our Work
Agribusiness
Airlines
Automotive
Banking & Financial Services
Consumer Packaged Goods
Energy & Utilities
Fitness & Wellness
Gaming
Government & Public Sector
Higher Education
Healthcare
Industrial
Insurance
Media & Entertainment
Oil & Gas
Pharma & Beauty
Professional Sports
Restaurant & Hospitality
Retail
Technology
Telecommunications
Transportation & Logistics
Digital Solutions
Digital Optimization
Digital Sales
Data Masking Solution
IT Cost Optimization
Fan Engagement Ecosystem
Softtek Digital Enablers
DIEGO
blauLabs
Business OnDemand
Click2Sync Omnichannel
Automotive Digital Assistant
Guest Engagement
Socializer
Collaborative Commuting
Workplace Management
Application Services
Software Development
Quality Engineering
Application Management
Application Services
Cloud & DevOps
Cloud Services
IT Infrastructure
Digital Security
DevOps
Data & Automation
Data and AI
Intelligent Automation
Services Transformation
Core Modernization
Next-Gen IT Operations
Platform Services
AWS
SAP
Microsoft
Salesforce
ServiceNow
Atlassian
BlueYonder
Sustainability by Softtek
Softtek
Language selector
search button
AI
Softtek GenAI
FRIDA AI for Software Engineering
APPROACH
Service Transformation
Portfolio Transformation
Digital Acceleration
Our Work
INDUSTRIES
Agribusiness
Airlines
Automotive
Banking & Financial Services
Consumer Packaged Goods
Energy & Utilities
Fitness & Wellness
Gaming
Government & Public Sector
Higher Education
Healthcare
Industrial
Insurance
Media & Entertainment
Oil & Gas
Pharma & Beauty
Professional Sports
Restaurant & Hospitality
Retail
Technology
Telecommunications
Transportation & Logistics
SERVICES & SOLUTIONS
Digital Solutions
Digital Optimization
Digital Sales
Data Masking Solution
IT Cost Optimization
Fan Engagement Ecosystem
Softtek Digital Enablers
DIEGO
blauLabs
Business OnDemand
Click2Sync Omnichannel
Automotive Digital Assistant
Guest Engagement
Socializer
Collaborative Commuting
Workplace Management
Application Services
Software Development
Quality Engineering
Application Management
Application Services
Cloud & DevOps
Cloud Services
IT Infrastructure
Digital Security
DevOps
Data & Automation
Data and AI
Intelligent Automation
Services Transformation
Core Modernization
Next-Gen IT Operations
Platform Services
AWS
SAP
Microsoft
Salesforce
ServiceNow
Atlassian
BlueYonder
TRANSCEND
Sustainability by Softtek
Our experience
Overview
Insights
Blog
Newsroom
Careers
Contact us
Presencia Global
ENGLISH
EUROPE / EN
ESPAÑOL
EUROPA / ES
PORTUGUÊS
中文(简体)
Softtek Blog

Implementando BDD con Cucumber

Autor
Author Rubén Cano Montero
Publicado el:
sep 12, 2017
Tiempo de lectura:
sep 2017
|
SHARE
Share on LinkedIn
Share on X
Share on Facebook
SHARE
Share on LinkedIn
Share on X
Share on Facebook

cucumberlogo.png

Introducción: TDD vs BDD

El desarrollo dirigido por pruebas (TDD, del inglés Test Driven Development) es una metodología de desarrolo de software basado en dos prácticas: 

  1. Escribir las pruebas primero (Test First Development)
  2. Refactorización

En primer lugar, se escribe una prueba que evidentemente fallará, pues el código aún no está implementado. A continuación, se implementa el código para que la prueba pase satisfactoriamente y seguidamente, se refactoriza nuestro código. 

Por su parte, el desarrollo dirigido por comportamiento (BDD, del inglés Behaviour Driver Development) es una evolución de TDD. Al igual que en éste, escribiremos las pruebas antes de escribir el código pero en este caso, en vez de escribir pruebas unitarias, escribiermos pruebas que verifiquen el comportamiento del código y su correcto funcionamiento desde el punto de vista del equipo de negocio.

 

¿Qué es Cucumber?

Cucumber es una herramienta que permite la ejecución de descripciones funcionales en texto plano como test automáticos de aceptación, que se aprovecha de las ventajas del enfoque BDD para acercar la capa de negocio a la capa de tecnología de una empresa. Este proceso trata de combinar los aspectos puramente técnicos y los de negocio, de manera que tengamos un marco de trabajo y un marco de pruebas en el que los requisitos de negocio formen parte del proceso de desarrollo. 

 

 bdd.png

Aplicando este modelo de ejecución de pruebas integradas, buscamos que la definición de cada funcionalidad del sistema sea escrita de manera conjunta por el equipo de negocio y el equipo de desarrollo. De esta forma, pasaremos de tener una lista de requisitos priorizados que el “product owner” presenta al equipo de desarrollo, a una lista de pruebas de comportamiento que pasan como tareas al Sprint Backlog.

 

Partiremos de historias de usuario y describiremos lo que tiene que hacer esa nueva funcionalidad, haciendo uso de un lenguaje específico para BDD llamado Gherkin, que nos va a permitir describir todas nuestras funcionalidades de una misma forma.

Este lenguaje es lo que llaman en DDD (Domain Driven Design) un lenguaje obicuo, es decir, un lenguaje semiformal que es compartido por todos los miembros de un equipo de desarrollo de software, tanto desarrolladores como personal no técnico; facilitando así la comunicación entre todos los miembros implicados en el proyecto.

Una de las principales características que tiene Gherkin, es que para empezar a aplicar BDD a nuestro proyecto solo necesitaremos conocer 5 palabras a partir de las cuales vamos a construir las sentencias con las que vamos a describir las funcionalidades:

  • Feature: Nombre de la funcionalidad que se va a probar, es decir, historia de usuario que queremos abarcar. A partir de aquí empezaremos a construir nuestros escenarios de prueba.
  • Scenario: Describe cada caso de prueba que vamos a probar.
  • Given: Provee contexto para el escenario en que se va a ejecutar el test. Incluye los pasos necesarios para poner al sistema en el estado que se desea probar.
  • When: Especifica el conjunto de acciones que lanzan el test. La interacción del usuario que acciona la funcionalidad que deseamos testear.
  • Then: Especifica el resultado esperado en el test. Observamos los cambios en el sistema y vemos si son los deseados.

featureCucumber.png

Entre muchas de las ventajas que tiene el uso de esta herramienta, hay que destacar la facilidad de integración con los distintos IDEs de desarrollo con los que trabajamos. En el caso en el que nos atañe a nosotros, la ejecución de pruebas automatizadas con Eclipse es muy sencilla, tan sólo necesitamos incluir las dependencias en el pom.xml, y definir un controlador encargado de escanear las “features”  y las distintas sentencias que hayamos implementando para la definición funcional de cada uno de los requisitos.

Una vez ejecutado los test cucumber, Eclipse nos mostrará el resultado de los mismo tal y como aparecen en la siguiente imagen:

testing.png

En el ejemplo podemos ver cómo se hace un chequeo global, desde el nivel de sentencia hasta el nivel de “feature”. Del mismo modo, si alguna de las sentencias ha sido fallida, Eclipse nos lo indicará junto con un pequeño reporte de por qué ha sido ocasionado dicho error.

Como podemos ver sobre este ejemplo, el lenguaje utilizado es un lenguaje común y sencillo, que es entendible por cualquiera de las partes que conforman el proyecto, por lo que la comunicación y los acuerdos entre la parte de negocio y la parte de desarrollo irán siempre en paralelo y evitaremos los típicos errores de concepto/alcance en el DoD de la tareas.

Como conclusión, destacar la potencia que nos aporta este tipo de herramientas a la hora de la automatización de pruebas; ya no solo por la rapidez con la que podemos verificar modificaciones del código (pruebas de regresión); si no por la cantidad de información en forma de gráficas y estadísticas que nos aporta para mejorar la eficiencia de nuestro código, que al fin y al cabo, como desarrolladores que somos, es en lo que tenemos que basar nuestro trabajo.

Más articulos sobre automatización de pruebas, aquí.

 

Related posts

springNewLogo_long.png
mar 22, 2017
Spring 5 is coming!
sep 26, 2017
Programación funcional con Javascript (I)
woman-text-messaging-with-laptop-on-wooden-table
feb 28, 2018
Así serán las apps que se vienen

Let’s stay in touch!

Get Insights from our experts delivered right to your inbox!

Follow us:
Softtek LinkedIn
Softtek Twitter
Softtek Facebook
Softtek Instagram
Softtek Instagram
Follow us:
Softtek LinkedIn
Softtek Twitter
Softtek Facebook
Softtek Instagram
Softtek Instagram

© Valores Corporativos Softtek S.A. de C.V. 2025.
privacy notice
legal disclaimer
code of ethics
our policies
webmaster@softtek.com