Uso de Anotaciones en Allure para Java - Guía de Integración

Requisitos Previos

  • Primero, descarga el paquete zip de Allure y descomprímelo, luego configura las variables de entorno (en Windows). La dirección de descarga de Allure en GitHub es:
  • Después, ejecuta testng.xml o el método runCase en las pruebas unitarias, eligiendo uno de ellos. Una vez completada la ejecución de los casos de prueba, se generará una carpeta allure-results en el directorio del proyecto.
  • Finalmente, a través de cmd o la función Terminal de IDEA, ejecuta el siguiente comando en el directorio actual del proyecto:
allure serve allure-results

Esto abrirá automáticamente la página web con el informe.

Detallando el uso de anotaciones de Allure en Java

Allure es una herramienta de informes de pruebas flexible y ligera que muestra de manera clara lo que se ha probado y permite a todos los participantes del proceso de desarrollo extraer la máxima información útil de las ejecuciones diarias.

Tecnologías utilizadas en esta demostración

  • Framework Spring Boot
  • Framework TestNG
  • Framework de informes Allure
  • Biblioteca webdrivermanager para la gestión de controladores de Selenium WebDriver
  • Logging con Log4j2

Dependencias del proyecto (pom.xml)

<?xml version="1.0" encoding="UTF-8"??>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelversion>4.0.0</modelversion>

   <groupid>org.example</groupid>
   <artifactid>demoAllureJava</artifactid>
   <version>1.0-SNAPSHOT</version>
   <parent>
       <groupid>org.springframework.boot</groupid>
       <artifactid>spring-boot-starter-parent</artifactid>
       <version>2.2.6.RELEASE</version>
   </parent>
   
   <dependencies>
       <dependency>
           <groupid>org.springframework.boot</groupid>
           <artifactid>spring-boot-starter</artifactid>
           <exclusions>
               <exclusion>
                   <groupid>org.springframework.boot</groupid>
                   <artifactid>spring-boot-starter-logging</artifactid>
               </exclusion>
           </exclusions>
       </dependency>
       
       <dependency>
           <groupid>org.springframework.boot</groupid>
           <artifactid>spring-boot-starter-log4j2</artifactid>
       </dependency>
       
       <dependency>
           <groupid>org.springframework.boot</groupid>
           <artifactid>spring-boot-starter-web</artifactid>
       </dependency>
       
       <dependency>
           <groupid>org.springframework.boot</groupid>
           <artifactid>spring-boot-starter-test</artifactid>
           <scope>test</scope>
       </dependency>
       
       <dependency>
           <groupid>io.qameta.allure</groupid>
           <artifactid>allure-testng</artifactid>
           <version>2.10.0</version>
       </dependency>
       
       <dependency>
           <groupid>org.testng</groupid>
           <artifactid>testng</artifactid>
           <version>6.14.3</version>
       </dependency>
       
       <dependency>
           <groupid>io.github.bonigarcia</groupid>
           <artifactid>webdrivermanager</artifactid>
           <version>3.0.0</version>
       </dependency>
   </dependencies>

   <build>
       <plugins>
           <plugin>
               <groupid>org.springframework.boot</groupid>
               <artifactid>spring-boot-maven-plugin</artifactid>
           </plugin>
       </plugins>
   </build>
</project>

Clasificación de Anotaciones de Allure

  • @Epic - Los Epics pueden servir como contenedores para requisitos extensos de su producto o proyecto. Los Epics se dividen en historias de usuario más pequeñas cuando es apropiado.
  • @Features - Es una anotación de información que permite agrupar anotaciones similares bajo el mismo módulo para su filtrado.
  • @Stories/@Story - Permite organizar pruebas en historias específicas.
  • @Severity - Anota el nivel de severidad de un defecto de prueba, como BLOCKER, CRITICAL, NORMAL, MINOR, TRIVIAL.
  • @Description - Proporciona una descripción del método de prueba.
  • @Step - Anota cualquier método (público, privado, protegido) para desglosar la prueba en pasos visibles en el informe.
  • @Attachment - Método anotado que devuelve String o byte[] para agregar al informe. Puede usarse para capturas de pantalla en caso de fallos.
  • @Links - Permite vincular pruebas a recursos como sistemas de gestión de pruebas (TMS) o trackers de errores.

Ejemplos de Uso de Anotaciones y Visualización en Informes

Anotación @Description

Esta anotación proporciona descripciones detalladas para los métodos de prueba.

@Description("Verificación de la página principal - Test 2")
@Test
public void pruebaBase2() throws InterruptedException {
    Assert.assertTrue(true, "Ejemplo de prueba");
}

Anotaciones @Stories/@Story

Estas anotaciones ayudan a agrupar pruebas relacionadas bajo la misma historia o módulo.

@Description("Verificación de la página principal - Test 1")
@Story("Pruebas básicas")
@Test
public void pruebaBase1() {
    System.out.println("Ejecutando prueba 1");
}

@Description("Verificación de la página principal - Test 2")
@Story("Pruebas básicas")
@Test
public void pruebaBase2() {
    Assert.assertTrue(true, "Ejemplo de prueba");
}

Anotación @Severity

Define la gravedad de una prueba, permitiendo priorizar casos críticos.

@Severity(SeverityLevel.TRIVIAL)
@Description("Verificación de la página principal - Test 1")
@Story("Pruebas básicas")
@Test
public void pruebaBase1() {
    System.out.println("Ejecutando prueba 1");
}

@Severity(SeverityLevel.BLOCKER)
@Description("Verificación de la página principal - Test 2")
@Story("Pruebas básicas")
@Test
public void pruebaBase2() {
    Assert.assertTrue(true, "Ejemplo de prueba");
}

@Severity(SeverityLevel.CRITICAL)
@Description("Verificación de la página principal - Test 3")
@Story("Pruebas básicas")
@Test
public void pruebaBase3() {
    Assert.assertTrue(false, "Fallo esperado");
}

Anotación @Step

Desglosa los pasos de una prueba para mayor claridad en el informe.

@Step("Verificación de credenciales: usuario {0} y contraseña {1}")
public boolean verificarInicioSesion(String usuario, String contrasena) {
    introducirUsuario(usuario);
    introducirContrasena(contrasena);
    hacerClicEnIniciarSesion();
    return obtenerMensajeError().contains("Incorrecto");
}

@Step("Introducción de nombre de usuario: {0}")
public void introducirUsuario(String nombreUsuario) {
    WebElement campoEmail = driver.findElement(emailTextBox);
    if (campoEmail.isDisplayed())
        campoEmail.sendKeys(nombreUsuario);
}

// En la clase de prueba
@Severity(SeverityLevel.BLOCKER)
@Description("Verificación de funcionalidad de inicio de sesión")
@Story("Pruebas de autenticación")
@Test
public void verificarFuncionInicioSesion() {
    System.out.println("Detalles de la prueba de inicio de sesión...");
    paginaBase = new PaginaBase(driver);
    paginaInicioSesion = paginaBase.clicBotonIniciarSesion();
    Assert.assertTrue(paginaInicioSesion.verificarTituloPagina(), "El título de la página de inicio no coincide");
    Assert.assertTrue(paginaInicioSesion.verificarTextoPagina(), "El texto de la página no coincide");
    Assert.assertTrue(paginaInicioSesion.verificarInicioSesion("usuarioPrueba", "p123"), "Falló el inicio de sesión");
}

Anotación @Epic

Permite categorizar pruebas a alto nivel, similar a la metodología ágil.

@Epic("Ejemplo de Epic")
@Feature("Integración TestNG + Allure")
public class PruebaEpic {
    @Test
    @Story("Soporte básico de anotación de historia")
    @Story("Soporte avanzado de anotación de historia")
    public void ejecutarPrueba() throws Exception {
        System.out.println("Uso de la anotación Epic");
    }
}

Anotación @Links

Vincula pruebas con recursos externos como sistemas de gestión de defectos.

@Link("https://www.ejemplo.com")
@Severity(SeverityLevel.TRIVIAL)
@Description("Verificación de la página principal - Test 1")
@Story("Pruebas básicas")
@Test
public void pruebaBase1() {
    System.out.println("Ejecutando prueba 1");
}

Anotación @Attachment

Agrega archivos adjuntos al informe, como capturas de pantala en caso de fallos.

Primero, crea una clase de escucha para capturas de pantalla:

public void enFalloPrueba(ITestResult resultado) {
    System.out.println("*** La prueba " + resultado.getMethod().getMethodName() + " falló...");
    System.out.println(resultado.getMethod().getMethodName() + " ha fallado!");
    super.onTestFailure(resultado);
    BasePrueba pruebaBase = (BasePrueba) resultado.getInstance();
    WebDriver driver = pruebaBase.getDriver();
    guardarCapturaPantallaFallo(driver);
}

@Attachment(value = "Captura de pantalla del fallo:", type = "image/png")
public void guardarCapturaPantallaFallo(WebDriver driver) {
    byte[] captura = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES);
    Allure.addAttachment("Captura de pantalla del fallo", new ByteArrayInputStream(captura));
}

Luego, aplica la anotación @Listeners en tu clase de prueba:

@Listeners(EscuchaFalloPrueba.class)
@Epic("Ejemplo de Epic")
@Feature("Integración TestNG + Allure")
public class PruebaEpic {
    @Test
    @Story("Soporte básico de anotación de historia")
    @Story("Soporte avanzado de anotación de historia")
    public void ejecutarPrueba() throws Exception {
        System.out.println("Uso de la anotación Epic");
    }
}

Allure es una herramienta de informes de pruebas flexible y ligera que muestra de manera clara lo que se ha probado y permite a todos los participantes del proceso de desarrollo extraer la máxima información útil de las ejecuciones diarias. El uso detallado de anotaciones hará que sus informes de prueba sean más fáciles de leer e intuitivos.

Etiquetas: java testng allure maven Selenium

Publicado el 6-22 03:52