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.
En la seccion Test Details elegimos type cucumber y escribimos los pasos (steps) del escenario que contemplará ese test en lenguaje Gherkin :
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:
y los pasos del escenario de logout:
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:
En la seccion Test Execution Details elegimos las 2 Issues relacionadas con los Test de Login y Logout:
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.
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
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:
y obtenemos el reporte en la carpeta que indicamos en la ejecucion
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
Adjuntamos el reporte de cucumber.json:
Y comprobamos que la Tarea JIRA marca la Test Execution como pasadas correctamente:
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:
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"