Jenkins - Jak dowiedzieć się, które testy nie powiodły się wielokrotnie?

13

Jestem nowy w CI i Jenkins. Mam projekt Java, który uruchamia automatyczne testy oparte na Testng w serwisie internetowym. Testy automatyzacji są regularnie wykonywane jako zadanie w Jenkins. Czasami praca długo się nie udaje. Ale w każdym uruchomieniu liczba niepowodzeń testu jest inna. Chcę zobaczyć, które testy nie powiodły się, powiedzmy, ostatnie 5 uruchomień. Dzięki temu mogę zmniejszyć liczbę niepowodzenia testów, które muszę zbadać. Awarie, które nie powtarzają się w ciągu ostatnich 5 przebiegów, można zignorować lub zbadać później.

Czy ktoś może zasugerować, w jaki sposób mogę dowiedzieć się, które testy nie powiodły się wielokrotnie w poprzednich N testach?

Erran Morad
źródło
w jakiś sposób musisz zapisać wyniki testu, najlepiej w łatwy sposób, aby zobaczyć niepowodzenia. Może być w postaci „XEXX”, gdzie E oznacza błąd i całą linię dla wszystkich testów. W ten sposób możesz zapisać go w pliku tekstowym bez dużej ilości miejsca.
David
dla każdego uruchomienia wszystkich testów tworzysz nową linię, wtedy łatwo jest zobaczyć lub przeanalizować za pomocą skryptu.
David
Masz dostępną wtyczkę testową i możesz publikować wyniki za każdym razem ... następnie możesz porównać każdą kompilację, która powie ci, który test się nie powiódł
rohit thomas
@rohitthomas - Czy sugerujesz, aby ręcznie porównać kompilacje? Chcę tego uniknąć.
Erran Morad,
Co uważasz za „wielokrotnie powtarzane”? Czy masz na myśli wszystkie przypadki testowe, których nie udało się na przykład w ostatnich 5 uruchomieniach, czy tylko wszystkie przypadki testowe, które zakończyły się niepowodzeniem w 3 na 5 wykonaniach?
Michael Kemmerzell,

Odpowiedzi:

7

Możesz wziąć, ile razy test zakończony niepowodzeniem z obiektu kompilacji w potoku: możesz zrobić mały raport i dołączyć go do kompilacji w następujący sposób:

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

Zadzwoń saveRepeatedlyFailingTestsReportpo zebraniu wyników testu, a zobaczysz raport w najnowszym linku artefaktów kompilacji.

ręcznik
źródło
1
Jaki to język ? Czy możesz dodać więcej szczegółów? Dodam nagrodę, która, mam nadzieję, sprawi, że będzie to opłacalne. dzięki.
Erran Morad,
1
@BoratSagdiyev to Groovy DSL, który jest używany w potoku Jenkins. Jeśli potrzebujesz tylko pomocy wizualnej, wybrałbym odpowiedź Sooraja, ponieważ nie wymaga ona wiedzy na temat rurociągu. Aby zbudować kompletny potok, muszę znać twoją pracę freestyle, ale to nie wchodzi w zakres pytania.
ręcznik
2

Do analizy trendów testów można użyć wtyczki Test Result Analyzer firmy Jenkins.

Wtyczka analizatora wyników testu

Samouczek wideo z YouTube

Instalacja :

  1. W Jenkins Dashboard kliknij Zarządzaj Jenkins
  2. Z menu wybierz Zarządzaj wtyczkami
  3. Kliknij zakładkę Dostępne i analizator wejściowy w polu wyszukiwania Filtr
  4. Kliknij pole wyboru po lewej stronie od wyników testów Analyzer i kliknij Install bez restartu przycisk

Zastosowanie :

  1. Przejdź do projektu i kliknij Konfiguruj
  2. Przejdź do sekcji Działania po kompilacji i wybierz opcję Opublikuj raport wyników testu JUnit z listy rozwijanej Dodaj akcję po kompilacji
  3. W polu Pliki XML raportu z testu podaj ścieżkę pliku XML TestNg / JUnit w projekcie. Na przykład - **/target/test-results/*.xmlw moim przypadku
  4. Zapisz konfigurację
  5. Następnie po udanej kompilacji przejdź do projektu i kliknij Analizator wyników testu w menu po lewej stronie
Sooraj
źródło
Dzięki za link. Ale odpowiedzi tylko w linku niewiele pomagają. Czy możesz dodać krótki opis tego, w jaki sposób mogę użyć wtyczki, aby osiągnąć to, czego potrzebuję?
Erran Morad
Zainstaluj wtyczkę i skonfiguruj wtyczkę do działań po kompilacji żądanego projektu . Następnie po udanej kompilacji możesz zobaczyć wyniki, klikając Analizator wyników testu w menu po lewej stronie swojego projektu
Sooraj,
@ Borat Sagdijew, zaktualizowałem odpowiedź szczegółowymi krokami i filmem, aby skonfigurować wtyczkę Test Results Analyzer . Mam nadzieję, że to pomoże;)
Sooraj,