JUnit vs. Cucumber, herramientas de automatización de pruebas

3 min read
24 de septiembre de 2019

Hace poco empecé a investigar más sobre la automatización de pruebas (automation test), ya que es el campo en el que me desempeño actualmente, y me surgió una pregunta:  ¿cuál es la diferencia entre Cucumber y JUnit?

Me di cuenta de que es una pregunta muy común que genera confusión en gran parte de los testers que están iniciando su proceso de aprendizaje. 

El objetivo de este blog es resolver esa duda y dar un contexto general sobre estas dos herramientas útiles para el desarrollo de pruebas funcionales, pruebas de  integración, pruebas unitarias, entre otras. 

¿Qué es Cucumber?

Cucumber es una herramienta para implementar metodologías como el Behaviour Driven Development (BDD) o desarrollo basado en comportamiento, que permite ejecutar descripciones funcionales en texto plano como pruebas de software automatizadas.

Estas descripciones funcionales se escriben en un lenguaje específico de dominio, legible por el área de negocio, denominado Gherkin, que soporta más de 60 idiomas. Gherkin sirve simultáneamente como documentación de apoyo al desarrollo y a las pruebas automatizadas.

Aquí hay un ejemplo de historia de Cucumber:

Un ejemplo de historia de Cucumberun ejemplo de historia de Cucumber

¿Qué es JUnit?

JUnit se trata de un framework open source para la automatización de las pruebas (tanto unitarias como de integración) en los proyectos software. El framework le provee al usuario herramientas, clases y métodos que le facilitan la tarea de realizar pruebas en su sistema y así asegurar su consistencia y funcionalidad.  

JUnit también sirve como herramienta para realizar las pruebas de regresión, que se ejecutan cuando una parte del código ha sido modificada y sea necesario comprobar que se sigue cumpliendo con todos los requisitos.

Aquí hay un ejemplo de un script en Junit: 

Diferencias entre JUnit y Cucumber

Teniendo en cuenta lo anterior, sabemos que Cucumber es una herramienta basada en  el modelo BDD y la colaboración con personas no técnicas. Tiene una orientación hacía el negocio, y su finalidad es desarrollar pruebas funcionales y de integración. Por tanto, personas que no tengan conocimientos técnicos o de programación pueden comprenderlas, como un product owner (cliente o dueño del producto) o cualquier otro individuo que esté involucrado en el desarrollo de un proyecto.

Por otro lado, JUnit es una herramienta basada en el modelo TDD (Test Driven Development), la cual fue creada con el propósito de  desarrollar pruebas unitarias. Esto no quiere decir que JUnit no nos permita realizar pruebas funcionales; simplemente no es su objetivo principal. 

A continuación vamos a resolver 3 preguntas claves para entender mejor la diferencia entre JUnit y Cucumber, dos herramientas de automatización de pruebas:

1. ¿Hay algo que Cucumber no pueda hacer frente a JUnit?

La diferencia consiste en que, mientras JUnit apunta a las pruebas, Cucumber apunta a la colaboración con personas no técnicas. Las personas no técnicas no entenderán lo que hace una prueba unitaria; sin embargo, podrán comprender y validar un ejemplo escrito en Gherkin.

2. ¿Cuál es más fácil de usar?

Hay más gastos generales cuando usas Cucumber. Tendrás que implementar cada paso como un método y no solo un método de prueba, como se haría con JUnit. La legibilidad que obtienes al expresar ejemplos usando texto plano en Cucumber a veces es una ventaja frente a JUnit.

3. ¿Ambos trabajan con objetos de página?

Los objetos de página son una abstracción para la página web que se está verificando. Los objetos de página pueden ser utilizados tanto por JUnit como por Cucumber. De hecho, no hay diferencia entre estas dos herramientas de automatización de pruebas desde esa perspectiva.

En conclusión, ambas trabajan en niveles de abstracción completamente diferentes. 

JUnit es principalmente un marco de automatización. Tiene la capacidad de escribir rápidamente casos de prueba usando el lenguaje de programación Java. Además, proporciona anotaciones que facilitan declarar el método. Por tanto, fue pensado como marco para pruebas unitarias; pero muchas personas también lo usan para conducir pruebas de integración o función a gran escala.

Cucumber, por otro lado, funciona en un nivel mucho más alto de abstracción. Empiezas escribiendo "descripciones de prueba" en texto puro. Probablemente la diferencia clave está en que no es necesario conocer programación Java para escribir una prueba de Cucumber. Lo único que se necesita de un programador de Java es el código que le permite a Cucumber convertir su entrada de texto en un código ejecutable.

Suscríbete al
Blog Pragma

Recibirás cada mes nuestra selección de contenido en Transformación digital.

Imagen form