Jenkins - Como descobrir quais testes falharam repetidamente?

13

Eu sou novo na CI e Jenkins. Eu tenho um projeto Java que executa testes automatizados baseados em Testng em um serviço da web. Os testes de automação são executados regularmente como um trabalho em Jenkins. Às vezes, o trabalho falha repetidamente por um longo tempo. Mas, em cada execução, o número de falhas de teste é diferente. Quero ver quais testes falharam repetidamente, digamos as últimas 5 execuções. Com isso, posso reduzir o número de falhas de teste que tenho que investigar. As falhas que não se repetem nas últimas 5 execuções podem ser ignoradas ou investigadas posteriormente.

Alguém pode sugerir como descobrir quais testes falharam repetidamente nas N corridas anteriores?

Erran Morad
fonte
de alguma forma, você precisa salvar os resultados do teste de maneira fácil para ver as falhas. Pode ser apenas no formato 'XEXX', onde E significa erro e a linha inteira para todos os testes. Dessa forma, você pode salvá-lo em um arquivo de texto sem muito espaço.
David
para cada execução de todos os testes que você cria em uma nova linha, é fácil ver ou analisar por script.
David David
Você tem o teste-ng plugins disponíveis e você pode publicar os resultados de cada vez ... então você pode comparar cada construção que irá dizer-lhe que teste falhou
Rohit thomas
@rohitthomas - Você está sugerindo comparar manualmente as compilações? Eu quero evitar isso.
Erran Morad 03/12/19
O que você considera 'falhou repetidamente'? Você quer dizer todos os casos de teste que falharam nas últimas 5 execuções, por exemplo, ou apenas todos os casos de teste que falharam em 3 de 5 execuções?
Michael Kemmerzell 5/12/19

Respostas:

7

Você pode tomar o número de vezes que um teste falhou no objeto da compilação em um pipeline: você pode fazer um pequeno relatório e anexá-lo à sua compilação da seguinte maneira:

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

Ligue saveRepeatedlyFailingTestsReportdepois de reunir os resultados do teste e você verá o relatório no link de artefatos de construção mais recente.

toalha
fonte
11
Que idioma é esse ? Você poderia adicionar mais detalhes? Vou acrescentar uma recompensa para espero que valha a pena. obrigado.
Erran Morad 03/12/19
11
@BoratSagdiyev, este é o DSL do Groovy usado no pipeline Jenkins. Se você precisar apenas de ajuda visual, eu usaria a resposta de Sooraj, pois ela não requer conhecimento de pipeline. Para construir um pipeline completo, precisarei conhecer seu trabalho no estilo livre, mas isso está fora do escopo da questão.
toalha
2

Você pode usar o plug-in Analisador de Resultados de Testes da Jenkins para analisar as tendências dos testes.

Plugin Analisador de Resultados de Teste

Tutorial em vídeo do youtube

Instalação :

  1. No Painel Jenkins, clique em Gerenciar Jenkins
  2. No menu, selecione Gerenciar plug-ins
  3. Clique na guia Disponível e analisador de entrada na caixa de pesquisa Filtro
  4. Clique na caixa de seleção à esquerda de Resultados do Teste Analyzer e clique no Instalar sem reiniciar botão

Uso :

  1. Vá para o projeto e clique em Configurar
  2. Vá para a seção Ações pós-compilação e selecione Publicar relatório de resultados do teste JUnit no menu suspenso Adicionar ação pós-compilação
  3. No campo XMLs do relatório de teste, forneça o caminho do xml TestNg / JUnit no projeto. Por exemplo - **/target/test-results/*.xmlno meu caso
  4. Salve a configuração
  5. Depois de uma compilação bem-sucedida, vá para o seu projeto e clique no Test Results Analyzer no menu à esquerda
Sooraj
fonte
Obrigado pelo link. Porém, as respostas apenas do link não ajudam muito. Você poderia, por favor, adicionar uma breve descrição de como eu poderia usar o plugin para alcançar o que preciso?
Erran Morad 03/12/19
Instale o plug-in e configure-o para as ações pós-compilação do projeto desejado . Depois de uma compilação bem-sucedida, você poderá ver os resultados clicando no Analisador de Resultados do Teste, no menu do lado esquerdo do seu projeto
Sooraj
@Borat Sagdiyev, atualizei a resposta com etapas detalhadas e um vídeo para configurar o plug-in Analisador de Resultados de Teste . Espero que isso ajude;)
Sooraj