Saltar a contenido

Cucumber

1.Introduccion ¿Que és?

XRay es un Addon de Jira (o tambien se puede usar como servicio externo) para organizar test Plans y las ejecuciones de los mismos.

Referencias: https://www.youtube.com/watch?app=desktop&v=PbOGhtof4WY

2.Creando las Issuses en JIRA

Entramos en JIRA y pulsamos en Crear y creamos una issue de tipo Test.

Este test se va a referir unicamente al caso de uso de la pagina de login.

cucumber_xray_1.png

En la seccion Test Details elegimos type cucumber y escribimos los pasos (steps) del escenario que contemplará ese test en lenguaje Gherkin :

cucumber_xray_2.png

Ya tendriamos un Test (escenario/caso de uso) definido con id 107, pero vamos a crear otro test mas que seria hacer logout.

Repetimos los pasos:

cucumber_xray_3.png

y los pasos del escenario de logout:

cucumber_xray_4.png

Ya tendriamos creada la tarea 108.

3.Creando una ejecucion de Test

Una vez que hemos definido los casos de uso con su escenario, podemos crear ejecuciones de Test (Test Execution).

Un Test Execution puede contemplar varios escenarios, en este caso vamos a crear una ejecucion de test que debe cubrir el login y el logout.

Pulsamos en Crear y elegimos Test Execution:

cucumber_xray_5.png

En la seccion Test Execution Details elegimos las 2 Issues relacionadas con los Test de Login y Logout:

cucumber_xray_6.png

Ya tenemos creado el Test Execution con id 109.

4.Preparando la ejecucion de Test

Navegamos a la issue de Test Execution y vemos que tiene 2 test asociados (107 y 108) y que el status esta en TODO ya que todavia no se han ejecutado.

cucumber_xray_7.png

Vamos a generar el fichero .feature que usaremos en cucumber. Al generarlo desde este Test Execution, obtendremos un fichero .feature que contendra los 2 escenarios de los 2 test asocidados.

Pulsamos en el boton Test… y al final encontramos la opcion Exportar a cucumber

cucumber_xray_8.png

Descargamos el fichero y si lo abrimos podemos ver las features, los scenarios y los tags de ejecucion de cucumber asociados:

#language: es
@ 109
Característica: Default


    @ 107
    Escenario: Verificar que un usuario puede hacer login
        Dado Un usuario ya registrado
        Cuando Introduzco las credenciales y pulso Acceder
        Entonces Navego a la pagina de inicio   


    @ 108
    Escenario: Verificar que un usuario puede hacer logout
        Dado Un usuario ya logueado en la pagina de inicio
        Cuando Pulso Logout
        Entonces Navego a la pagina de login

Importar el .feature a traves del API

Podemos usar el API de Xray en nuestro servidor Jira para usarlo en herramientas de automatizacion y obtener el .feature generado.

Esta es la documentacion de esa accion de API https://docs.getxray.app/space/XRAY/301667739/Exporting+Cucumber+Tests+-+REST

Este es un ejemplo de como nos quedaría:

curl -v GET 'https://jira.mycompany.com/rest/raven/1.0/export/test?keys= 109' \
-H 'Authorization: Bearer MzEyNzI0MjkwNzg4Oq18MToGqZhHdDcFJcFr4f2dI5Zs' >  109.feature

Ahora solo falta implementa en nuestro proyecto Cucumber el codigo asociado a los steps de esos escenarios.

Este sería un ejemplo muy dummy de como implementarlos:

import io.cucumber.java.es.Cuando;
import io.cucumber.java.es.Dado;
import io.cucumber.java.es.Entonces;

public class LoginLogoutStepDefinitions {

    String userName;
    String userPass;
    String sendCredentials;

    @Dado("Un usuario ya registrado")
    public void getAValidUser() {
        userName = "Daniel";
        userName = "s3cr3t";
    }

    @Cuando("Introduzco las credenciales y pulso Acceder")
    public void setCredentials() {
        sendCredentials = userName + userPass;
        System.out.println("Sended login credentials");
    }

    @Entonces("Navego a la pagina de inicio")
    public void checkWeAreInDashBoardPage() {
        assertNotNull(sendCredentials); 
        System.out.println("The user is at dashboard page");
    }

    @Dado("Un usuario ya logueado en la pagina de inicio")
    public void getAUserLogged() {
        getAValidUser(); //Manual preparation
        setCredentials();
        assertNotNull(sendCredentials); 
        System.out.println("The user is ALREADY at dashboard page");
    }

    @Cuando("Pulso Logout")
    public void logoutAction() {
        sendCredentials = null;
        userName = null;
        userPass = null;
        System.out.println("Click on logout");
    }

    @Entonces("Navego a la pagina de login")
    public void checkWeAreInLoginPage() {
        assertNull(userName); 
        assertNull(userPass); 
        assertNull(sendCredentials); 
        System.out.println("The user is at dashboard page");
    }
}

Y ahora lo ejecutamos en nuestro motor de cucumber y vemos que pasan los test:

cucumber_xray_9.png

y obtenemos el reporte en la carpeta que indicamos en la ejecucion

cucumber_xray_10.png

5.Publicacion de resultados en la tarea JIRA

5.1 Publicacion Manual de Resultados:

Vamos a la Test Execution en nuestro servidor JIRA y pulsamos en la opcion Importar Resultados de la Ejecucion

cucumber_xray_11.png

Adjuntamos el reporte de cucumber.json:

cucumber_xray_12.png

Y comprobamos que la Tarea JIRA marca la Test Execution como pasadas correctamente:

cucumber_xray_13.png

Podemos entrar en el detalle de cada uno de los Test que se incluyeron en la Test Execution y vemos el detalle de la ejecucion:

cucumber_xray_14.png

5.2 Publicacion Resultados a traves de API:

Xray expone dos versiones de un API para automatizaciones:

Existen 2 apis disponibles a la vez V1 y V2: - V1 https://docs.getxray.app/space/XRAY/301697335/v1.0 - V2 https://docs.getxray.app/space/XRAY/301405521/v2.0

Para la importacion de resultados este seria un ejemplo usando el api V1:

https://docs.getxray.app/space/XRAY/301667997/Import+Execution+Results+-+REST#Cucumber-JSON-results

Este seria el ejemplo de curl POST incluyendo el file del reporter:

curl -v POST 'https://jira.mycompany.com/rest/raven/2.0/import/execution/cucumber?projectKey=FWCNP' \
-H 'Authorization: Bearer MzEyNzI0MjkwNzg4Oq18MToGqZhHdDcFJcFr4f2dI5Zs' \
-H "Content-Type: application/json" \
--data-binary "@/home/dpena/development/workspaces/mycompany/gitlab/mycompany-adhoc/back/testing/IntegrationDemoTests/target/report/json/cucumber.json"