TestNG, JUnit ve NUnit hatlarında geliştirilen Cédric Beust tarafından oluşturulmuş bir test çerçevesidir. JUnit ve NUnit’e göre farklı özellikleri ve sağladığı avantajlar bulunur. Özellikleri aşağıdaki gibidir:
- TestNG‘de tüm testler birbirinden bağımsız şekilde koşulabilir.
- Rapor oluşturur.
- Her test sonunda eğer hata olmuşsa testi ve hata mesajını rapora ekler.
- Rapor sonucunda kaç test senaryosunun başarılı ve başarısız olduğunu görebiliriz.
- Xml dosyası içerisinde istediğimiz class ve içerisindeki testleri istediğimiz sırada paralel veya priority ile önceliklendirerek çalıştırabiliriz. Eğer başarısız bir test sonucu ile karşılaşırsak tüm testleri tekrar koşmadan sadece başarısız olan test senaryolarını xml dosyası içerisinde düzenleyip yeniden çalıştırabiliriz.
TestNG’nin Avantajları Nedir?
TestNG’yi öne çıkaran avantajlar:
- Multi Thread (Çoklu Akış) test desteği
- Test Senaryolarını kolay gruplama
- Parametre Kullanımı
- Esnek test konfigürasyonu
- @DataProvider ile Data Driven Test
- IDE’ler için Plugin desteği
- BeanShell desteği
- Loglama
- Entegre sınıfları test etme
- Esnek çalışma zamanı yapılandırması
- Bağımlılık testi desteği
Maven Projesine TestNG Nasıl Eklenir?
- TestNG’yi bir Maven projesine eklemek için öncelikle https://mvnrepository.com/ adresine gidilir.
- Arama kısımına TestNG yazarak, search butonuna basılır.
- Arama sonuçlarından TestNG’ye tıklanarak aşağıdaki ekrana gidilir.
4. Son versiyon seçilir.
5.Maven sekmesi altındaki dependency kısmı kopyalanır.
6.Maven projemizin pom.xml içerisindeki “Dependencies” tag’i altına eklenir.
Bu aşamadan sonra aşağıda da görebileceğiniz gibi artık TestNG ile gelen annotationlar kullanılabilir.
TestNG Annotation’ları Nelerdir?
@BeforeSuite
Class ve metot çalışmadan önce yaptırmak istediğimiz işlemleri burada tanımlarız.
@BeforeClass
Class build edildiğinde herhangi bir test metodu çalışmadan önce çalışır. Her test için ayrı ayrı çalışmaz, sadece bir kez çalışır.
@BeforeMethod
Bir test metodu çalışmadan önce çalışır. Genellikle her testten önce ayağa kalkması gereken driver, vb. setup environmentler burada tanımlanır. Her test için ayrı ayrı çalışır. @BeforeTest şeklinde de kullanılabilir.
@Test
Test case’lerimizi metot haline getirip hemen üst satırına @Test notasyonumuzu koyarız. Bu metotların birer test olduğunu tanımlar. Bu testleri testng.xml dosyası oluşturarak istediğimiz şekilde çalıştırabiliriz.
@AfterMethod
Her test metodu sonrası çalışır. Her testten sonra yapılacak işleri burada tanımlarız.
@AfterClass
Tüm test metotları sona erdiğinde çalışır. Tüm testler bittikten sonra yapacağımız işlemleri burada tanımlarız.
@AfterSuite
AfterClass sonrasında çalışır. Son işlemlerimizi yaptığımız kısımdır.
TestNG.xml Dosyası Nasıl Hazırlanır?
Öncelikle bir xml dosyası oluşturuyoruz. Ardından aşağıdaki aşamalarla xml dosyamızı düzenliyoruz.
1.Suite oluşturuyoruz.
2.Test class’ının ismini ve bulunduğu klasörü Class name olarak veriyoruz.
3.İstediğimiz testleri çalıştırmak için metot tagı altına iclude name olarak test metodunun adını yazıyoruz. Eğer metot kullanmazsak tüm classtaki testler rastgele çalışacaktır.
Testler Paralel Olarak Nasıl Koşulur?
1. Xml dosyası oluşturulur.
2. Koşulacak paralel ortamlar ayrı ayrı aşağıdaki şekilde test olarak eklenir.
3. Gerekli parametreler gönderilir.
4. Thread-count test kadar arttırılır.
Aşağıdaki testNG.xml de Chrome ve Explorer olmak üzere iki ortamda testler paralel olarak çalışacaktır.
5. Tek bir Test üzerinden işlem yapılacaksa, Parallel kısmı Methots olarak değiştirilmelidir.
TestNG Parametre Nasıl kullanılır?
1. Herhangi bir Annotation’dan hemen sonra @parameters içerisinde değer alınır.
2. Metot içerisine değişken oluşturulur, bu değişken gelen parametre adı ile aynı olmalıdır.
3. İsteğe göre kullanılır.
Az önce hazırladığımız TestNG.xml i çalıştırdığımızda çalışan test’e göre parametre değeri oluşuyor. Ancak bunu Driver’larımızı ayağa kaldırdığımız kısımda kullanmalıyız.
Aşağıdaki görselde xml’den gelen parametre Chrome içeriyorsa chrome driver, Explorer içeriyorsa explorer driver’ı başlat demiş oluyoruz.
Testlere Öncelik Nasıl Verilir?
Aşağıdaki şekilde istenen testin yanına gelerek parantez içinde priority yazıp öncelik numarası verilir.
Maven İle Test Koşumunda TestNG Xml Nasıl Kullanılır?
Aşağıdaki görseldeki gibi Pom xml dosyasında testng xml dosyasını göstererek, testng xml dosyamıza göre maven ile test koşumunu gerçekleştirebiliriz.
Projenin kaynağı için: https://github.com/Fcelikq/TestngExample.git
Fırat Çelik
Yazılım Test Mühendisi