Jenkins: ¿cómo averiguar qué pruebas fallaron repetidamente?

13

Soy nuevo en CI y Jenkins. Tengo un proyecto Java que ejecuta pruebas automatizadas basadas en Testng en un servicio web. Las pruebas de automatización se ejecutan regularmente como un trabajo en Jenkins. A veces, el trabajo falla repetidamente durante mucho tiempo. Pero, en cada ejecución, el número de fallas de prueba es diferente. Quiero ver qué pruebas fallaron repetidamente, por ejemplo, las últimas 5 ejecuciones. Con eso, puedo reducir el número de fallas de prueba que tengo que investigar. Las fallas que no se repiten en las últimas 5 ejecuciones podrían ignorarse o investigarse más adelante.

¿Alguien puede sugerirme cómo puedo averiguar qué pruebas fallaron repetidamente en las últimas ejecuciones de N?

Erran Morad
fuente
de alguna manera necesita guardar los resultados de la prueba preferibles de una manera fácil para ver los fallos. Podría ser solo en la forma 'XEXX' donde E representa error y la línea completa para todas las pruebas. De esta manera, podría guardarlo en un archivo de texto sin mucho espacio.
David
para cada ejecución de todas las pruebas, crea una nueva línea, entonces es fácil de ver o analizar por script.
David
Usted tiene la prueba-ng el plugin disponible y publicar los resultados cada vez ... entonces se puede comparar cada generación que se le dirá qué prueba ha fallado
Rohit Thomas
@rohitthomas: ¿sugieres comparar manualmente las compilaciones? Quiero evitar eso.
Erran Morad
¿Qué consideras "fallido repetidamente"? ¿Se refiere a todos los casos de prueba que fallaron en las últimas 5 ejecuciones, por ejemplo, o solo a todos los casos de prueba que fallaron en 3 de 5 ejecuciones?
Michael Kemmerzell

Respuestas:

7

Puede tomar el número de veces que una prueba falló del objeto de la compilación en una tubería: puede hacer un pequeño informe y adjuntarlo a su compilación de la siguiente manera:

@NonCPS
def getRepeatedlyFailingTests(int timesFailedAtLeast = 2) {
  currentBuild.rawBuild.getAction(hudson.tasks.junit.TestResultAction.class)
    .getFailedTests()
    // Keep only tests that failed at least twice
    .findAll { it.age >= timesFailedAtLeast }
    .collect { [ "${it.className}.${it.name}".trim(), it.age ] }
}

def saveRepeatedlyFailingTestsReport() {
  def header = [ "test", "times-failed" ]
  def records = getRepeatedlyFailingTests()
  def report = "repeatedly-failing-tests.csv"
  writeCSV file: report, records: [ header ] + records, format: CSVFormat.EXCEL
  archiveArtifacts report
}

Llame saveRepeatedlyFailingTestsReportdespués de reunir los resultados de su prueba y verá el informe en su último enlace de artefactos de construcción.

toalla
fuente
1
Que idioma es este ? ¿Podría por favor agregar más detalles? Agregaré una recompensa para que valga la pena. Gracias.
Erran Morad
1
@BoratSagdiyev este es el DSL Groovy que se usa dentro de la tubería de Jenkins. Si solo necesita ayuda visual, iría con la respuesta de Sooraj, ya que no requiere conocimiento de la tubería. Para construir una tubería completa, necesitaré conocer tu trabajo de estilo libre, pero eso está fuera del alcance de la pregunta.
toalla
2

Puede usar el complemento Test Result Analyzer de Jenkins para analizar las tendencias de las pruebas.

Complemento Test Result Analyzer

Video Tutorial de youtube

Instalación :

  1. En Jenkins Dashboard, haga clic en Administrar Jenkins
  2. En el menú, seleccione Administrar complementos
  3. Haga clic en la pestaña Disponible y analizador de entrada en el cuadro de búsqueda Filtro
  4. Haga clic en la casilla de verificación a la izquierda de prueba analizador de resultados y haga clic en el Instalar sin necesidad de reiniciar el botón

Uso :

  1. Vaya al proyecto y haga clic en Configurar
  2. Ir a la sección Acciones posteriores a la compilación y seleccionar Publicar informe de resultados de la prueba JUnit del menú desplegable Agregar acción posterior a la compilación
  3. En el campo XML de informe de prueba, proporcione la ruta del TestNg / JUnit xml en el proyecto. Por ejemplo, **/target/test-results/*.xmlen mi caso
  4. Guardar la configuración
  5. Luego, después de una compilación exitosa, vaya a su proyecto y haga clic en el Analizador de resultados de prueba en el menú del lado izquierdo
Sooraj
fuente
Gracias por el enlace. Pero, Link solo responde no ayuda mucho. ¿Podría agregar una breve descripción de cómo podría usar el complemento para lograr lo que necesito?
Erran Morad
Instale el complemento y configúrelo para las acciones posteriores a la compilación del proyecto deseado . Luego, después de una compilación exitosa, puede ver los resultados haciendo clic en el Analizador de resultados de prueba en el menú del lado izquierdo de su proyecto
Sooraj
@Borat Sagdiyev, he actualizado la respuesta con pasos detallados y un video para configurar el complemento Test Results Analyzer . Espero que esto ayude;)
Sooraj