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?


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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.