Jenkins - Hangi testlerin tekrar tekrar başarısız olduğunu nasıl öğrenebilirim?


13

CI ve Jenkins için yeniyim. Bir web hizmetinde Testng tabanlı otomatik testleri çalıştıran bir Java projesi var. Otomasyon testleri Jenkins'te bir iş olarak düzenli olarak çalışır. Bazen, iş uzun süre art arda başarısız olur. Ancak, her çalışmada, test hatası sayısı farklıdır. Hangi testlerin tekrar tekrar başarısız olduğunu görmek istiyorum. Bununla araştırmam gereken test başarısızlıklarının sayısını azaltabilirim. Son 5 çalışmada hepsini tekrarlamayan arızalar daha sonra göz ardı edilebilir veya araştırılabilir.

Birisi geçmiş N çalışmalarında hangi testlerin tekrar tekrar başarısız olduğunu nasıl bulabileceğimi önerebilir mi?


Her nasılsa, başarısızlıkları görmek için test sonuçlarını kolay bir şekilde kaydetmeniz gerekir. Sadece 'XEXX' şeklinde olabilir, burada E hata anlamına gelir ve tüm testler için tüm satır. Bunun gibi, çok fazla alan olmadan bir metin dosyasına kaydedebilirsiniz.
David

tüm testlerin her çalışması için yeni bir satır yaparsanız, komut dosyasıyla görmek veya analiz etmek kolaydır.
David

Test eklentisine sahipsiniz ve sonuçları her seferinde yayınlayabilirsiniz ... o zaman hangi testin başarısız olduğunu söyleyecek her yapıyı karşılaştırabilirsiniz
rohit thomas

@rohitthomas - Derlemeleri manuel olarak karşılaştırmayı mı öneriyorsunuz? Bundan kaçınmak istiyorum.
Erran Morad

'Tekrar tekrar başarısız' olarak neler düşünüyorsunuz? Örneğin, son 5 çalışmada başarısız olan tüm test senaryoları mı yoksa yalnızca 5 yürütme işleminde 3 başarısız olan tüm test vakaları mı demek istediniz?
Michael Kemmerzell

Yanıtlar:


7

Bir testin bir boru hattındaki yapının nesnesinden başarısız olma sayısını alabilir: küçük bir rapor hazırlayabilir ve bunu yapınıza şu şekilde ekleyebilirsiniz:

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

saveRepeatedlyFailingTestsReportTest sonuçlarınızı topladıktan sonra arayın ve raporu en son derleme yapılarınızda görebilirsiniz.


1
Bu hangi dil ? Daha fazla ayrıntı ekler misiniz? Umarım değerli kılmak için bir ödül ekleyeceğim. Teşekkürler.
Erran Morad

1
@BoratSagdiyev bu Jenkins boru hattı içinde kullanılan Groovy DSL. Sadece görsel yardıma ihtiyacınız varsa, Sooraj'ın cevabına giderim, çünkü boru hattı bilgisi gerektirmez. Tam bir boru hattı oluşturmak için serbest stil işinizi bilmem gerekecek, ancak bu sorunun kapsamı dışında.
havlu

2

Testlerin eğilimlerini analiz etmek için Jenkins'in Test Sonucu Analizörü eklentisini kullanabilirsiniz.

Test Sonucu Analizörü eklentisi

Youtube'dan Video Eğitimi

Kurulum :

  1. Jenkins Dashboard'da Jenkins'i Yönet'i tıklayın
  2. Menüden Eklentileri Yönet'i seçin
  3. Tıklayın Mevcut sekmesi ve giriş analizörü Filtre arama kutusuna
  4. Test Sonuçları Analizörünün solundaki onay kutusuna tıklayın ve Yeniden başlatmadan yükle düğmesine tıklayın

Kullanımı :

  1. Projeye gidin ve Yapılandır'ı tıklayın
  2. Derleme Sonrası İşlemler bölümüne gidin ve Derleme sonrası işlem ekle açılır menüsünden JUnit test sonucu raporunu yayınla'yı seçin
  3. Test raporu XML'leri alanında, projedeki TestNg / JUnit xml dosyasının yolunu belirtin. Örneğin - **/target/test-results/*.xmlbenim durumumda
  4. Yapılandırmayı kaydedin
  5. Ardından başarılı bir derlemeden sonra projenize gidin ve sol taraftaki menüden Test Sonuçları Analizörünü tıklayın

Bağlantı için teşekkürler. Ancak, Link sadece cevaplar pek yardımcı olmuyor. İhtiyacım olanı elde etmek için eklentiyi nasıl kullanabileceğime dair kısa bir açıklama ekleyebilir misiniz?
Erran Morad

Eklentiyi yükleyin ve eklentiyi istenen projenin Yapım Sonrası İşlemlerine göre yapılandırın . Başarılı bir
derlemeden

@Borat Sagdiyev, Test Sonuçları Analizörü eklentisini yapılandırmak için ayrıntılı adımlar ve bir video ile yanıtı güncelledim . Umarım bu yardımcı olur;)
Sooraj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.