Historial y reintentos
Sabemos que una de las razones por las que las pruebas regulares son importantes es porque ayudan a entender cómo la calidad de tu producto cambia con el tiempo. Si una prueba falla ahora, es útil saber si también falló ayer o incluso la semana pasada.
En Allure Report, puedes navegar entre múltiples ejecuciones de la misma prueba, tanto a través de diferentes informes mediante el Historial de pruebas como dentro de un solo informe mediante los Reintentos.
Historial de pruebas
Cada informe incluye los resultados de las pruebas recopilados durante un nuevo lanzamiento de prueba. Sin embargo, las pruebas en sí no son nuevas en absoluto: lo más probable es que uses el mismo código de prueba cada vez, actualizándolo ligeramente solo cuando sea necesario. Usando el identificador único de cada prueba, Allure Report puede vincular su último resultado con los resultados de la misma prueba de lanzamientos anteriores. Esta colección de enlaces se conoce como historial de pruebas.
En un informe con el historial de pruebas incluido, puedes:
- ver qué estados tuvo una prueba anteriormente,
- identificar pruebas inestables (ver Análisis de estabilidad de pruebas),
- encontrar pruebas que cambiaron su estado desde el último informe (ver Filtrar pruebas por marcas),
- ver cómo cambian varias métricas con el tiempo (ver Gráficos de tendencias).
Para la mayoría de los servidores CI que soportamos, un complemento correspondiente de Allure Report mantendrá automáticamente el historial y te permitirá navegar sin problemas hacia los informes de pruebas anteriores. Lo mismo se puede hacer al generar informes localmente, también, consulta Cómo habilitar el historial a continuación.
Cómo habilitar el historial
Cada vez que Allure genera un informe de prueba (consulta Cómo funciona), también genera datos en el subdirectorio history
. Los archivos JSON en este subdirectorio almacenan toda la información que Allure necesita para incluir los datos de este informe de prueba en el siguiente informe de prueba, consulta Archivos de historial.
Habilitar las características relacionadas con el historial consiste en copiar el subdirectorio history
en el directorio de resultados de prueba antes de generar el siguiente informe de prueba.
Aquí tienes un ejemplo de cómo hacerlo, asumiendo que tu proyecto está configurado para usar los directorios allure-results
y allure-report
:
Asegúrate de que el informe anterior se haya generado en el directorio
allure-report
.Elimina el directorio
allure-results
.Ejecuta las pruebas.
Copia el subdirectorio
allure-report/history
enallure-results/history
.Genera el nuevo informe.
Si sigues esta rutina regularmente, Allure mantendrá cada vez los datos de hasta 20 informes más recientes en allure-results/history
. Esto crea hasta 20 entradas de historial para cada prueba y hasta 20 columnas en cada gráfico.
Reintentos
Cuando ejecutas la misma prueba varias veces, Allure produce un archivo de resultado de prueba separado para cada ejecución. El informe de prueba luego incluye el estado y otra información del último archivo, mostrando las demás ejecuciones como reintentos.
Una razón común para reintentar una prueba es si falló por algunas razones específicas del entorno (mala conexión a internet, espacio en disco insuficiente, etc.) y necesitas ejecutarla nuevamente para obtener resultados más informativos. Algunos marcos de prueba incluso pueden reintentar las pruebas fallidas automáticamente. En estos casos, el número total de reintentos puede convertirse en una métrica útil por sí misma: puedes ver si crece o disminuye en uno de los Gráficos de tendencias.
Otro caso es cuando una o más pruebas son conocidas por ser inestables, pero aún así es importante diferenciar entre los estados de “fallar siempre” y “fallar algunas veces”. En Allure Report, puedes encontrar todas las pruebas que han cambiado su estado después de un reintento usando un filtro especial, consulta Filtrar pruebas por marcas.
Ten en cuenta que, a diferencia del último intento de cada prueba, los reintentos no se incluyen en el Historial de pruebas.
Cómo mantener los reintentos
Para asegurarte de que la información sobre los reintentos se agregue al informe de pruebas, solo evita eliminar tu directorio de resultados de prueba (que generalmente se llama allure-results
). Si el adaptador de Allure para el marco que usas tiene una opción para limpiar el directorio antes de cada ejecución, desactiva esa opción. Luego, al generar un informe, Allure Report incluirá todos los archivos presentes en el directorio, es decir, todas las ejecuciones de pruebas desde que limpiaste el directorio por última vez.
Sin embargo, ten en cuenta que mantener todos los reintentos puede sesgar los datos del gráfico de tendencias de Reintentos. Los complementos de Allure Report para servidores CI siempre ejecutan las pruebas con un directorio allure-results
vacío, para que el informe solo incluya los reintentos automáticos realizados por el marco de prueba.
Asegurarse de que las pruebas estén identificadas correctamente
Para que un resultado de prueba se vincule a su historial o se coloque en una colección de reintentos, debe asignársele correctamente un identificador interno llamado "ID de historial". Allure Report depende del adaptador de Allure para el marco específico para asignar dicho identificador a cada resultado de prueba. Con algunas limitaciones y excepciones, cada adaptador asigna el ID de historial en función de dos factores:
- el nombre completamente calificado de la prueba,
- los parámetros no excluidos de la prueba (ver más abajo).
Para garantizar que el informe de prueba maneje correctamente el historial y los reintentos, asegúrate de pasar a Allure todos los parámetros que distinguen las diferentes versiones de una prueba. La mayoría de los adaptadores de Allure se encargan de esto automáticamente, pero algunos pueden necesitar código adicional, como Allure::parameter()
para Allure PHPUnit o @TestInstanceParameter
para algunas configuraciones en Allure TestNG.
Error común: faltan pruebas de diferentes entornos en el informe
Supongamos que ejecutas una prueba en múltiples plataformas antes de recopilar todos los resultados en un solo directorio allure-results
y generar el informe. A menos que te asegures de que diferentes ejecuciones tengan conjuntos diferentes de parámetros, Allure Report mostrará solo un resultado de prueba por defecto, moviendo los demás a su lista de reintentos.
Recomendamos agregar uno o más parámetros especiales que constituyan una combinación diferente para cada entorno. Por ejemplo, puede que quieras agregar parámetros como "os_version", "browser_version", "java_version", etc., dependiendo de las tecnologías utilizadas por tu prueba.
Asegúrate de revisar la sección "Pruebas parametrizadas" de la documentación del adaptador de Allure para ver si tiene alguna limitación. Cuando un adaptador tiene múltiples formas de declarar parámetros de prueba, puede que no los soporte todos para los fines de identificación de la prueba. Por ejemplo, Allure JUnit 5 y algunos otros adaptadores no pueden distinguir las pruebas que solo difieren en los parámetros "dinámicos", es decir, los parámetros que se establecieron después de que comenzó la ejecución de la prueba.
Error común: los reintentos de una prueba se muestran como pruebas separadas
Normalmente, cuando ejecutas una prueba con un conjunto de parámetros diferente a los de las ejecuciones anteriores, Allure Report la trata como una prueba nueva. Esto significa que las ejecuciones se muestran en el informe de pruebas por separado en lugar de agruparse en una lista de reintentos de una única prueba. Además, Allure puede no encontrar enlaces a los resultados anteriores en el historial de la prueba.
Por ejemplo, si un parámetro deriva de la fecha y hora actuales o de un valor aleatorio, obtendrás resultados aparentemente duplicados cuando ejecutes la prueba más de una vez.
Si este no es el comportamiento deseado para tu prueba, considera eliminar dicho parámetro o marcarlo como excluido
. Consulta la referencia de tu adaptador para saber si permite marcar los parámetros como excluidos
y cómo hacerlo.
Reintentos de pruebas desde Allure
Una solicitud popular es la capacidad de volver a ejecutar las pruebas fallidas directamente desde Allure Report. Algunos escenarios en los que esto puede ser útil incluyen:
- comprobar si los resultados de la prueba son consistentes,
- reintentar pruebas inestables,
- seguir el proceso TDD con Allure.
Desafortunadamente, Allure Report no puede hacer esto. Como herramienta de visualización de resultados de pruebas, no puede controlar cómo se ejecutan tus pruebas.
Si lo único que deseas es volver a ejecutar las pruebas como parte de tu proceso de desarrollo, presta atención a las características de pruebas de tu IDE, como el explorador de pruebas de VSCode o la ventana de ejecución de IntelliJ IDEA. Pueden ser de gran ayuda.
Si necesitas más, considera usar Allure TestOps. Soporta la reejecución de un conjunto arbitrario de pruebas en una canalización CI o en modo manual.