Дженкінс - Як дізнатися, які тести повторно провалювалися?


13

Я новачок у CI та Jenkins. У мене є проект Java, який запускає автоматизовані тести на веб-сервісі на основі Testng. Тести на автоматизацію регулярно проводяться як робота в Дженкінсі. Іноді робота провалюється неодноразово протягом тривалого часу. Але в кожному циклі кількість відмов тесту різна. Я хочу побачити, в яких тестах неодноразово виходили з ладу, скажімо, останні 5 запусків. Завдяки цьому я можу зменшити кількість відмов тесту, які мені доведеться досліджувати. Невдачі, які не повторюються всі протягом останніх 5 циклів, можна ігнорувати або дослідити пізніше.

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


якимось чином вам потрібно зберегти результати тестів, бажано у легкій формі, щоб побачити помилки. Може бути лише у формі "XEXX", де E означає помилку і весь рядок для всіх тестів. Так, ви можете зберегти його у текстовому файлі без особливого місця.
Девід

для кожного запуску всіх тестів ви створюєте новий рядок, тоді його легко побачити або проаналізувати за сценарієм.
Девід

У вас є плагін для тестування і ви можете публікувати результати кожен раз ... тоді ви можете порівняти кожну збірку, яка скаже вам, який тест не вдався
rohit thomas

@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, який використовується в трубопроводі Дженкінса. Якщо вам потрібна лише наочна допомога, я б відповів на відповідь Соорая, оскільки вона не вимагає знань про конвеєр. Щоб побудувати повний конвеєр, мені потрібно знати вашу роботу з фрістайлу, але це не виходить за межі питання.
рушник

2

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

Плагін тестового аналізатора результатів

Відеоурок з youtube

Установка :

  1. На панелі керування Дженкінса натисніть кнопку Керувати Дженкінсом
  2. У меню виберіть Керування плагінами
  3. Перейдіть на вкладку Доступні та аналізатор введення у вікні пошуку Фільтр
  4. Встановіть прапорець зліва від результатів тестування Analyzer і натисніть Встановити без перезавантаження кнопки

Використання :

  1. Перейдіть до проекту та натисніть Налаштувати
  2. Перейдіть у розділ Дії після створення збірки та виберіть Опублікувати звіт про результати тестування JUnit у спадному меню Додати дії після створення
  3. У полі звіту про тест XML вкажіть шлях xml TestNg / JUnit у проекті. Наприклад - **/target/test-results/*.xmlу моєму випадку
  4. Збережіть конфігурацію
  5. Потім після успішної збірки перейдіть до свого проекту та натисніть на Аналізатор результатів тестування в меню зліва

Дякуємо за посилання Але відповіді лише на Link не дуже допомагають. Не могли б ви додати короткий опис того, як я можу використовувати плагін, щоб досягти того, що мені потрібно?
Ерран Морад

Встановіть плагін і налаштуйте плагін на потрібні дії після збирання проекту . Потім після успішної збірки ви зможете побачити результати, натиснувши на Аналізатор результатів тестування в лівій частині меню вашого проекту
Sooraj

@Borat Sagdiyev, я оновив відповідь детальними кроками та відео, щоб налаштувати плагін Analyzer Results Analyzer . Сподіваюся, що це допомагає;)
Сурадж
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.