Ir al contenido principal

Testing con Cucumber: Cómo afianzar la fiabilidad en los desarrollos

WSO2 tiene una gran suite de herramientas que nos pueden ayudar a desarrollar nuestras integraciones con gran facilidad y robustez. Pero entre sus herramientas, no existe ninguna destinada al Testing. En este post, veremos como hemos planteado esta perspectiva desde el punto de vista de Chakray y como podemos afianzar la fiabilidad de nuestros desarrollos con Cucumber.

Cómo realizar pruebas funcionales en el desarrollo de integraciones

Debemos tener en cuenta, que el Testing (Pruebas funcionales) es una fase muy importante del desarrollo de integraciones. Y que no hay mejor forma de demostrar el correcto funcionamiento de nuestra integración que un detallado informe de pruebas. Donde nuestro cliente pueda verificar que los requisitos planteados se han llevado a cabo y funcionan perfectamente.

Dentro del mundo del Testing de aplicaciones hay infinidad de softwares que nos pueden ayudar a ello. Pero no todos generan un informe o indican de forma precisa cuales han sido las pruebas elaboradas. Por ello desde Chakray nos hemos decantado por Cucumber.

Qué es Cucumber

Cucumber es un software de testing BDD (Behavior Driven Development) que nos permitirá elaborar pruebas unitarias a partir de criterios de aceptación, fácilmente entendibles por todos los intervinientes del proceso. A través de Cucumber, el analista podrá definir un conjunto de casos de uso que permitan validar el desarrollo realizado. Estos casos de uso tendrán su correlación con scenarios de Cucumber, los cuales estarán implementados posteriormente en un lenguaje de programación dominado por el ingeniero de calidad o testing.

Además no debemos olvidar que BDD emerge de TDD ( test-driven development). Por lo que con este enfoque podemos paralelizar, al menos en parte, el desarrollo de la integración con el de las pruebas. Otro punto fuerte a tener en cuenta.

Ejemplo de cómo definir un caso de uso

Para verlo en más detalle, usaremos un ejemplo de cómo un analista define un caso de uso en base a un requisito del cliente, y el ingeniero de calidad elabora y ejecuta la prueba asociada. Empecemos con el analista y su caso de uso de ejemplo:

ID Caso de Test CU01-DEV-001
Funcionalidad Crear objeto BOOK a través de API
ID Requisito REQ-CU01-001
Descripción Llamamos el método de creación del objeto BOOK
Precondiciones
  • La BBDD está disponible
  • El objeto a insertar no existe previamente
  • El cuerpo del mensaje cumple el esquema del objeto BOOK
Acción Resultado Esperado
Invocamos con POST /library/bbdd/book El servicio devuelve 202 y un payload vacío

En la tabla BOOK hay un registro

Ejemplo de elaboración  y ejecución de pruebas

El primer paso será crear un fichero .feature donde añadiremos todos los test cases de nuestro caso de uso. Por cada test case, crearemos un scenario dentro de este fichero feature. Este scenario será la implementación del test case del analista.

En el test case realizaremos los siguientes pasos:

  • Configuraremos la petición a la API que hemos desarrollado y que queremos testear.
  • Indicaremos como realizar esta llamada: las cabeceras, payloads, etc.
  • Realizaremos la llamada
  • Chequearemos el resultado de la misma: el código y payload de respuesta o elementos asociados (como puede ser comprobar si en la BBDD se ha creado un registro).

Aquí podemos ver su traducción al lenguaje Gherkin.

lenguaje Gherkin

Estos ficheros, deberán ser almacenados en un proyecto Java. Este nos permitirá la ejecución de las pruebas y el almacenaje de todos los ficheros de pruebas necesarios, como pueden ser los feature o los ficheros anexos que nos permitan realizar dichas pruebas (como pueden ser los payloads de llamada).

Con este proyecto podremos ejecutar las pruebas  a través de un simple comando de mavenmvn test. Y esto es así porque podemos ejecutar estas pruebas a través de JUnit.

JUnit

Ahora podremos comprobar otro de los aspectos positivos, y es que su ejecución tiene un aspecto visualmente muy afable. El cual nos ayudan a ver a simple vista si todo ha funcionado correctamente o no. Esta sería una salida de ejemplo:

Informes en Cucumber

Y por último no olvidemos el informe, que será el detalle de la ejecución de todas las pruebas que hemos realizado y el resultado de las mismas. Este también lo podemos obtener fácilmente con Cucumber. En dicho informe veremos:

  • Las pruebas que hemos realizado
  • Visualización de todos los features, scenarios y steps asociados a las pruebas.
  • Conocer información relativa a la ejecución de las mismas: cuál ha sido el resultado de su ejecución, el tiempo necesario para su ejecución, etc.
  • Visualización de resultados mediante gráficos.

Aquí un ejemplo:

Como veis Cucumber es una herramienta muy atractiva que nos dará un plus más a la hora de realizar nuestros desarrollos. Y nos permitirá llevar a nuestros desarrollos al siguiente nivel.