Jenkins - Come scoprire quali test hanno fallito ripetutamente?


13

Sono nuovo di CI e Jenkins. Ho un progetto Java che esegue test automatici basati su Testng su un servizio web. I test di automazione vengono eseguiti regolarmente come lavoro in Jenkins. A volte, il lavoro fallisce ripetutamente per molto tempo. Ma, in ogni corsa, il numero di fallimenti del test è diverso. Voglio vedere in quali test è fallito ripetutamente, diciamo le ultime 5 prove. Con ciò, posso ridurre il numero di fallimenti di test che devo indagare. Gli errori che non si ripetono tutti nelle ultime 5 corse potrebbero essere ignorati o analizzati in seguito.

Qualcuno può suggerire come posso scoprire quali test hanno fallito ripetutamente negli ultimi N run?


in qualche modo è necessario salvare i risultati dei test preferibilmente in un modo semplice per vedere i fallimenti. Potrebbe essere solo nella forma "XEXX" dove E sta per errore e l'intera riga per tutti i test. In questo modo potresti salvarlo in un file di testo senza molto spazio.
David

per ogni esecuzione di tutti i test si crea una nuova riga, quindi è facile vedere o analizzare tramite script.
David

Hai il plug-in test-ng disponibile e puoi pubblicare i risultati ogni volta ... quindi puoi confrontare ogni build che ti dirà quale test è fallito
rohit thomas

@rohitthomas - Stai suggerendo di confrontare manualmente le build? Voglio evitarlo.
Erran Morad,

Cosa consideri "fallito ripetutamente"? Intendi tutti i casi di test falliti nelle ultime 5 esecuzioni, per esempio o solo tutti i casi di test falliti in 3 esecuzioni su 5?
Michael Kemmerzell,

Risposte:


7

Puoi prendere il numero di volte in cui un test ha avuto esito negativo dall'oggetto build in una pipeline: puoi creare un piccolo report e allegarlo alla build in questo modo:

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

Chiama saveRepeatedlyFailingTestsReportdopo aver raccolto i risultati del test e vedrai il rapporto nel tuo ultimo link agli artefatti di build.


1
Che lingua è questa ? Potresti per favore aggiungere maggiori dettagli? Aggiungerò una taglia per sperare che valga la pena. Grazie.
Erran Morad,

1
@BoratSagdiyev questo è il DSL Groovy utilizzato all'interno della pipeline Jenkins. Se hai solo bisogno di un aiuto visivo, vorrei rispondere alla risposta di Sooraj, poiché non richiede conoscenze sulla pipeline. Per costruire una pipeline completa dovrò conoscere il tuo lavoro freestyle, ma questo è fuori dalla portata della domanda.
asciugamano

2

È possibile utilizzare il plug-in Analizzatore dei risultati del test di Jenkins per analizzare le tendenze dei test.

Plug-in Analizzatore dei risultati del test

Tutorial video da youtube

Installazione :

  1. Nella dashboard di Jenkins, fai clic su Gestisci Jenkins
  2. Dal menu selezionare Gestisci plug-in
  3. Fare clic sulla scheda Disponibile e inserire l' analizzatore nella casella di ricerca Filtro
  4. Fare clic sulla casella di controllo a sinistra di risultati dei test Analyzer e fare clic sul installare senza riavviare pulsante

Utilizzo :

  1. Vai al progetto e fai clic su Configura
  2. Vai alla sezione Azioni post-build e seleziona Pubblica rapporto risultati test JUnit dal menu a discesa Aggiungi azione post-build
  3. Nel campo XML dei rapporti di prova fornire il percorso del file XML TestNg / JUnit nel progetto. Ad esempio - **/target/test-results/*.xmlnel mio caso
  4. Salva la configurazione
  5. Quindi, dopo una compilazione riuscita, vai al tuo progetto e fai clic su Analizzatore risultati test nel menu a sinistra

Grazie per il link Ma le sole risposte non aiutano molto. Potresti per favore aggiungere una breve descrizione di come potrei usare il plugin per ottenere ciò di cui ho bisogno?
Erran Morad,

Installa il plug-in e configura il plug -in sulle azioni post-build del progetto desiderato . Quindi, dopo una compilazione riuscita, puoi vedere i risultati facendo clic su Analizzatore dei risultati del test nel menu a sinistra del tuo progetto
Sooraj,

@Borat Sagdiyev, ho aggiornato la risposta con passaggi dettagliati e un video per configurare il plug-in Analizzatore risultati test . Spero che questo aiuti;)
Sooraj
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.