Jenkins - Comment savoir quels tests ont échoué à plusieurs reprises?

13

Je suis nouveau à CI et Jenkins. J'ai un projet Java qui exécute des tests automatisés basés sur Testng sur un service Web. Les tests d'automatisation s'exécutent régulièrement en tant que travail dans Jenkins. Parfois, le travail échoue à plusieurs reprises pendant une longue période. Mais, à chaque exécution, le nombre d'échecs de test est différent. Je veux voir quels tests ont échoué à plusieurs reprises, par exemple les 5 dernières exécutions. Avec cela, je peux réduire le nombre d'échecs de test que je dois enquêter. Les échecs qui ne se répètent pas tous au cours des 5 dernières exécutions pourraient être ignorés ou examinés plus tard.

Quelqu'un peut-il s'il vous plaît suggérer comment je peux savoir quels tests ont échoué à plusieurs reprises au cours des N dernières exécutions?

Erran Morad
la source
en quelque sorte, vous devez enregistrer les résultats des tests de préférence dans un type facile pour voir les échecs. Pourrait être simplement sous la forme «XEXX» où E représente l'erreur et la ligne entière pour tous les tests. De cette façon, vous pouvez l'enregistrer dans un fichier texte sans beaucoup d'espace.
David
pour chaque exécution de tous les tests, vous créez une nouvelle ligne, il est alors facile de voir ou d'analyser par script.
David
Vous avez le plugin test-ng disponible et vous pouvez publier les résultats à chaque fois ... alors vous pouvez comparer chaque build qui vous dira quel test a échoué
rohit thomas
@rohitthomas - Proposez-vous de comparer manuellement les versions? Je veux éviter ça.
Erran Morad
Que considérez-vous comme «échoué à plusieurs reprises»? Par exemple, voulez-vous dire tous les tests qui ont échoué au cours des 5 dernières exécutions ou seulement tous les tests qui ont échoué dans 3 des 5 exécutions?
Michael Kemmerzell

Réponses:

7

Vous pouvez prendre le nombre de fois qu'un test a échoué à partir de l'objet de construction dans un pipeline: vous pouvez faire un petit rapport et le joindre à votre génération comme suit:

@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
}

Appelez saveRepeatedlyFailingTestsReportaprès avoir rassemblé vos résultats de test et vous verrez le rapport dans votre dernier lien d'artefacts de construction.

serviette
la source
1
Quelle langue est-ce ? Pourriez-vous ajouter plus de détails? J'ajouterai une prime pour, espérons-le, en valoir la peine. Merci.
Erran Morad
1
@BoratSagdiyev c'est le Groovy DSL qui est utilisé dans le pipeline Jenkins. Si vous avez seulement besoin d'une aide visuelle, j'irais avec la réponse de Sooraj, car elle ne nécessite pas de connaissances sur le pipeline. Pour construire un pipeline complet, je devrai connaître votre travail de freestyle, mais cela est hors de portée de la question.
serviette
2

Vous pouvez utiliser le plug-in Test Result Analyzer de Jenkins pour analyser les tendances des tests.

Plugin Test Result Analyzer

Tutoriel vidéo de YouTube

Installation :

  1. Dans Jenkins Dashboard, cliquez sur Gérer Jenkins
  2. Dans le menu, sélectionnez Gérer les plugins
  3. Cliquez sur l' onglet Disponible et analyseur d' entrée dans la zone de recherche Filtre
  4. Cliquez sur la case à cocher à gauche des résultats de test Analyzer et cliquez sur l' installation sans redémarrer le bouton

Utilisation :

  1. Accédez au projet et cliquez sur Configurer
  2. Passez à la section Actions post-génération et sélectionnez Publier le rapport des résultats du test JUnit dans la liste déroulante Ajouter une action post-génération
  3. Dans le champ XML du rapport de test, indiquez le chemin du fichier XML TestNg / JUnit dans le projet. Par exemple - **/target/test-results/*.xmldans mon cas
  4. Sauvegardez la configuration
  5. Ensuite, après une construction réussie, accédez à votre projet et cliquez sur l' analyseur de résultats de test dans le menu de gauche
Sooraj
la source
Merci pour le lien. Mais, seules les réponses Link ne sont pas très utiles. Pourriez-vous s'il vous plaît ajouter une brève description de la façon dont je pourrais utiliser le plugin pour atteindre ce dont j'ai besoin?
Erran Morad
Installez le plug-in et configurez-le sur les actions de post-construction du projet souhaité . Ensuite, après une construction réussie, vous pouvez voir les résultats en cliquant sur l' analyseur de résultats de test dans le menu de gauche de votre projet
Sooraj
@Borat Sagdiyev, j'ai mis à jour la réponse avec des étapes détaillées et une vidéo pour configurer le plugin Test Results Analyzer . J'espère que cela vous aidera;)
Sooraj