İçeriğe geç

TestNG Groups

TestNG Groups, test senaryolarını mantıksal olarak gruplandırmak ve belirli testleri seçici biçimde çalıştırmak için kullanılır.
Özellikle büyük projelerde, testleri kategori bazlı yönetmek oldukça faydalıdır.


Bir test metoduna @Test anotasyonunda groups parametresi eklenerek, o metoda ait olduğu grup belirtilir.

import org.testng.annotations.Test;
public class GroupExample {
@Test(groups = {"sanity"})
public void sanityTest1() {
System.out.println("Sanity test 1 çalıştı.");
}
@Test(groups = {"regression"})
public void regressionTest1() {
System.out.println("Regression test 1 çalıştı.");
}
@Test(groups = {"sanity", "regression"})
public void combinedTest() {
System.out.println("Hem sanity hem regression grubunda.");
}
}

Yukarıdaki örnekte:

  • sanityTest1sanity grubuna ait.
  • regressionTest1regression grubuna ait.
  • combinedTest → iki grupta da yer alır.

  • Belirli test türlerini (örneğin, sanity, smoke, regression) ayrı ayrı çalıştırmak için
  • CI/CD pipeline’larında sadece belirli testlerin çalıştırılması gerektiğinde
  • Büyük test setlerinde modüler çalışma sağlamak için

TestNG XML dosyasında, hangi grupların çalıştırılacağını veya hariç tutulacağını belirtebiliriz.

Örnek: Sadece “sanity” grubunu çalıştırmak

Section titled “Örnek: Sadece “sanity” grubunu çalıştırmak”
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Group Suite">
<test name="Sanity Tests">
<groups>
<run>
<include name="sanity" />
</run>
</groups>
<classes>
<class name="testngexamples.GroupExample" />
</classes>
</test>
</suite>

Örnek: “regression” grubunu hariç tutmak

Section titled “Örnek: “regression” grubunu hariç tutmak”
<suite name="Group Suite">
<test name="Exclude Regression">
<groups>
<run>
<exclude name="regression" />
</run>
</groups>
<classes>
<class name="testngexamples.GroupExample" />
</classes>
</test>
</suite>

dependsOnGroups özelliği ile bir grubun, başka bir grubun başarıyla tamamlanmasına bağlı olmasını sağlayabiliriz.

import org.testng.annotations.Test;
public class DependsOnGroupExample {
@Test(groups = "login")
public void loginTest() {
System.out.println("Login işlemi başarılı.");
}
@Test(groups = "checkout", dependsOnGroups = "login")
public void checkoutTest() {
System.out.println("Checkout işlemi login'e bağlı.");
}
}

Bu örnekte checkoutTest, sadece login grubundaki testler başarılı olursa çalışır.


Bir metoda birden fazla grup atanabilir:

@Test(groups = {"ui", "smoke"})
public void homePageTest() {
System.out.println("Home Page test çalıştı.");
}

ÖzellikAçıklamaÖrnek
groupsTestin ait olduğu grup(lar)@Test(groups = "smoke")
includeXML’de çalıştırılacak grup<include name="sanity" />
excludeXML’de hariç tutulacak grup<exclude name="regression" />
dependsOnGroupsBaşka gruplara bağımlı test@Test(dependsOnGroups = "login")

TestNG’de Groups özelliği, testleri kategori bazlı yönetme, belirli senaryoları seçerek çalıştırma ve bağımlılıklar kurma açısından çok güçlü bir mekanizmadır.
Özellikle büyük test setlerinde testlerin kontrolünü kolaylaştırır ve CI/CD süreçlerinde esneklik sağlar.