Jenkins - Wie kann man herausfinden, welche Tests wiederholt fehlgeschlagen sind?

13

Ich bin neu bei CI und Jenkins. Ich habe ein Java-Projekt, das Testng-basierte automatisierte Tests auf einem Webdienst ausführt. Die Automatisierungstests werden regelmäßig als Job in Jenkins ausgeführt. Manchmal schlägt der Job lange Zeit wiederholt fehl. In jedem Lauf ist die Anzahl der Testfehler jedoch unterschiedlich. Ich möchte sehen, in welchen Tests die letzten 5 Läufe wiederholt fehlgeschlagen sind. Auf diese Weise kann ich die Anzahl der Testfehler reduzieren, die ich untersuchen muss. Die Fehler, die sich in den letzten 5 Läufen nicht alle wiederholen, können ignoriert oder später untersucht werden.

Kann jemand bitte vorschlagen, wie ich herausfinden kann, welche Tests in den letzten N Läufen wiederholt fehlgeschlagen sind?

Erran Morad
quelle
Irgendwie müssen Sie die Testergebnisse auf einfache Weise speichern, um die Fehler zu erkennen. Könnte nur in der Form 'XEXX' sein, wobei E für Fehler und die gesamte Zeile für alle Tests steht. So können Sie es in einer Textdatei ohne viel Platz speichern.
David
Für jeden Lauf aller Tests erstellen Sie eine neue Zeile. Dann ist es einfach, sie per Skript zu sehen oder zu analysieren.
David
Sie haben das Test-ng-Plugin zur Verfügung und können die Ergebnisse jedes Mal veröffentlichen ... dann können Sie jeden Build vergleichen, der Ihnen sagt, welcher Test fehlgeschlagen ist
rohit thomas
@rohitthomas - Schlagen Sie vor, Builds manuell zu vergleichen? Das möchte ich vermeiden.
Erran Morad
Was halten Sie für "wiederholt fehlgeschlagen"? Meinen Sie zum Beispiel alle Testfälle, die in den letzten 5 Läufen fehlgeschlagen sind, oder nur jeden Testfall, der in 3 von 5 Ausführungen fehlgeschlagen ist?
Michael Kemmerzell

Antworten:

7

Sie können festlegen, wie oft ein Test aus dem Build-Objekt in einer Pipeline fehlgeschlagen ist: Sie können einen kleinen Bericht erstellen und ihn wie folgt an Ihren Build anhängen:

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

Rufen saveRepeatedlyFailingTestsReportSie an, nachdem Sie Ihre Testergebnisse gesammelt haben, und Sie sehen den Bericht in Ihrem Link zu den neuesten Build-Artefakten.

Handtuch
quelle
1
Welche Sprache ist das ? Könnten Sie bitte weitere Details hinzufügen? Ich werde ein Kopfgeld hinzufügen, damit es sich hoffentlich lohnt. Vielen Dank.
Erran Morad
1
@BoratSagdiyev Dies ist das Groovy DSL, das in der Jenkins-Pipeline verwendet wird. Wenn Sie nur visuelle Hilfe benötigen, würde ich Soorajs Antwort folgen, da hierfür keine Pipeline-Kenntnisse erforderlich sind. Um eine komplette Pipeline aufzubauen, muss ich Ihren Freestyle-Job kennen, aber das kommt nicht in Frage.
Handtuch
2

Sie können das Plugin Test Result Analyzer von Jenkins verwenden, um die Trends von Tests zu analysieren.

Testergebnisanalysator-Plugin

Video-Tutorial von youtube

Installation :

  1. Klicken Sie im Jenkins-Dashboard auf Jenkins verwalten
  2. Wählen Sie im Menü Plugins verwalten
  3. Klicken Sie im Suchfeld Filter auf die Registerkarte Verfügbar und geben Sie den Analysator ein
  4. Aktivieren Sie das Kontrollkästchen links neben Testergebnisanalysator und klicken Sie auf die Schaltfläche Ohne Neustart installieren

Verwendung :

  1. Gehen Sie zum Projekt und klicken Sie auf Konfigurieren
  2. Gehen Sie zum Abschnitt Aktionen nach dem Erstellen und wählen Sie in der Dropdown-Liste Aktion nach dem Erstellen hinzufügen die Option JUnit-Testergebnisbericht veröffentlichen aus
  3. Geben Sie im Feld XMLs für Testberichte den Pfad der XML-Datei TestNg / JUnit im Projekt an. Zum Beispiel - **/target/test-results/*.xmlin meinem Fall
  4. Speichern Sie die Konfiguration
  5. Gehen Sie nach einem erfolgreichen Build zu Ihrem Projekt und klicken Sie auf den Testergebnis-Analysator im Menü auf der linken Seite
Sooraj
quelle
Danke für den Link. Aber nur Link-Antworten helfen nicht viel. Könnten Sie bitte eine kurze Beschreibung hinzufügen, wie ich das Plugin verwenden könnte, um das zu erreichen, was ich brauche?
Erran Morad
Installieren Sie das Plugin und konfigurieren Sie das Plugin für die Post-Build-Aktionen des gewünschten Projekts . Nach einem erfolgreichen Build können Sie die Ergebnisse anzeigen, indem Sie auf den Testergebnisanalysator im Menü auf der linken Seite Ihres Projekts klicken
Sooraj
@ Borat Sagdiyev, ich habe die Antwort mit detaillierten Schritten und einem Video aktualisiert, um das Plugin für den Testergebnisanalysator zu konfigurieren . Hoffe das hilft;)
Sooraj