Дженкинс - Как узнать, какие тесты неоднократно проваливались?

13

Я новичок в CI и Дженкинс. У меня есть проект Java, который запускает автоматизированные тесты на основе Testng в веб-сервисе. Тесты автоматизации регулярно выполняются как работа в Дженкинс. Иногда работа не проходит много раз в течение длительного времени. Но при каждом запуске количество неудачных тестов разное. Я хочу увидеть, какие тесты неоднократно заканчивались, скажем, за последние 5 прогонов. С этим я могу уменьшить количество неудачных тестов, которые я должен расследовать. Сбои, которые не повторяют все в последних 5 прогонах, могут быть проигнорированы или исследованы позже.

Может кто-нибудь подсказать, пожалуйста, как я могу узнать, какие тесты неоднократно проваливались за последние N запусков?

Эрран Морад
источник
каким-то образом вам нужно сохранить результаты теста, предпочтительно, в удобном виде, чтобы увидеть ошибки. Может быть только в форме 'XEXX', где E обозначает ошибку и всю строку для всех тестов. Таким образом, вы можете сохранить его в текстовом файле без большого пространства.
Дэвид
для каждого запуска всех тестов вы создаете новую строку, тогда ее легко увидеть или проанализировать по сценарию.
Дэвид
У вас есть плагин test-ng, и вы можете публиковать результаты каждый раз ... затем вы можете сравнить каждую сборку, которая скажет вам, какой тест не
пройден
@rohitthomas - Вы предлагаете сравнить сборки вручную? Я хочу избежать этого.
Эрран Морад
Что вы считаете «неоднократно провалился»? Вы имеете в виду, например, все тесты, которые не были выполнены за последние 5 запусков, или только каждый тест, который не прошел в 3 из 5 запусков?
Майкл Кеммерцелль

Ответы:

7

Вы можете взять число раз, когда тест не прошел объект сборки в конвейере: вы можете сделать небольшой отчет и прикрепить его к вашей сборке, например, так:

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

Позвоните saveRepeatedlyFailingTestsReportпосле того, как соберете результаты теста, и вы увидите отчет в вашей последней ссылке на артефакты сборки.

полотенце
источник
1
Какой это язык ? Не могли бы вы добавить более подробную информацию? Я добавлю награду, чтобы, надеюсь, она того стоила. Спасибо.
Эрран Морад
1
@BoratSagdiyev это Groovy DSL, который используется в конвейере Jenkins. Если вам нужна только визуальная помощь, я бы согласился с ответом Сураджа, так как он не требует знания конвейера. Чтобы построить полный конвейер, мне нужно знать вашу работу по фристайлу, но это выходит за рамки вопроса.
полотенце
2

Вы можете использовать плагин Test Result Analyzer от Jenkins для анализа тенденций тестов.

Плагин Test Result Analyzer

Видеоурок с YouTube

Установка :

  1. В Jenkins Dashboard нажмите « Управление Jenkins».
  2. В меню выберите Управление плагинами.
  3. Нажмите на вкладку « Доступные » и анализатор ввода в окне поиска фильтра.
  4. Установите флажок слева от результатов тестирования Analyzer и нажмите Установить без перезагрузки кнопки

Использование :

  1. Зайдите в проект и нажмите Configure
  2. Перейдите в раздел Действия после сборки и выберите Опубликовать отчет с результатами теста JUnit из выпадающего списка Добавить действие после сборки.
  3. В поле XML отчета о тестировании укажите путь к TestNg / JUnit xml в проекте. Например - **/target/test-results/*.xmlв моем случае
  4. Сохранить конфигурацию
  5. Затем, после успешной сборки, перейдите к своему проекту и нажмите на Анализатор результатов теста в меню слева.
Sooraj
источник
Спасибо за ссылку. Но ответы только Link не очень помогают. Не могли бы вы добавить краткое описание того, как я мог бы использовать плагин для достижения того, что мне нужно?
Эрран Морад
Установите плагин и настройте плагин для действий пост-сборки нужного проекта . Затем, после успешной сборки, вы можете увидеть результаты, нажав на Анализатор результатов теста в левом меню вашего проекта
Sooraj
@ Борат Сагдиев, я обновил ответ с подробными инструкциями и видео для настройки плагина Анализатора результатов теста . Надеюсь, это поможет;)
Sooraj