TestNG’de Başarısız Testleri Yeniden Koşma(Retry Analyzer)

Kubra Cebbar
Kodluyoruz
Published in
2 min readMay 9, 2021

Merhaba, bu yazımda sizlere benim de yeni öğrenmeye başladığım bir test çerçevesi (framework)olan Testng’nin bir özelliğinden yani RetryAnalyzer’dan bahsedeceğim.

Bir test çalıştırması sırasında sorunlarla karşılaşabilirsiniz. Bu sorunlar mutlaka ürün hatalarından ya da yazdığınız kodlardan kaynaklanmayabilir. Bu başarısızlıklar,

  • Tarayıcı sorunları
  • Rastgele makine sorunları
  • Sunucudan gelen yanıtta beklenmeyen gecikme gibi sunucu sorunları
  • Anlık bağlantı sorunları

gibi yukarıdaki nedenlerden kaynaklanabilir. Aslında otomasyon yazmanın en zor kısımlarından biri de test yürütmelerinin analizidir. Yürütmenin sonunda, başarısız test durumlarını analiz etmemiz ve bu sorunların yukarıdaki nedenlerden birinden kaynaklanıp kaynaklanmadığını anlamamız gerekir. Bunun için TestNG, bir test durumunu başarısız olarak ilan etmeden önce birçok kez yeniden deneyebileceğiniz harika bir özellik sunuyor. Eğer bir sorunla karşılaşırsanız, testin sürekli olarak başarısız olduğundan emin olmak için testi otomatik olarak yeniden çalıştırabilirsiniz. Bu şekilde, rastgele sorunlardan kaynaklanan yanlış hataları azaltır ve gerçek hataları ayıklamak için daha fazla zaman harcarsınız. Şimdi ufak bir uygulamayla bunu nasıl gerçekleştirebiliriz ona bakalım.

Öncelikle org.testng.IRetryAnalyzer arayüzünü anlamamız gerekir.

IRetryAnalyzer Interface

Bu arayüzde sadece bir yöntem var, bu yöntem herhangi bir sorunla karşılaşıldığında çağrılacaktır. Başarısız olan testinizi yeniden çalıştırmak istiyorsanız bu yöntem uygulaması doğru, testinizi yeniden yürütmek istemiyorsanız yanlış döndürmelidir. Genellikle bu arabirimin uygulanması, sabit bir sayaca veya gereksinimlerinize bağlı olarak karmaşık bir mantığa dayalı olarak başarısız bir testin kaç kez yeniden deneneceğine karar verir. ( Merak edenler ITestResult sınıfına ctrl+enter tuşuyla erişebilip inceleyebilirler.) Bu arayüzü kendi oluşturduğumuz sınıfımıza implement(bir interface olduğu için) ediyoruz. Aşağıda görüldüğü gibi retry sınıfını override edip counter ve retryLimit değeriyle testimizin kaç kere tekrar edeceğini söyleyen basit bir kod yazıyoruz.

RetryAnalyzer Sınıfı

Burada belirlediğimiz retryLimit değeri başarısız testin kaç kere yeniden deneneceğini belirtir. Daha sonra bu sınıfımızı testlerimizi yazdığımız ana sınıfımızla nasıl ilişkilendiririz ona bakalım.

RetryAnalyzer Anotasyonu

Görselde de görüldüğü gibi RetryAnalyzer sınıfını @Test anotasyonu ile asıl sınıfımızla ilişkilendirebiliriz. Bunu her @Test anotasyonu için ayrı ayrı yapmamız gerekir.

Evet artık testlerimizi istediğimiz kadar tekrar çalıştırabiliriz :)

Test projelerinizi geliştirmek ve daha fazla bilgi öğrenmek isterseniz yararlanabileceğiniz bir link:

👉 https://www.guru99.com/all-about-testng-and-selenium.html

--

--