Parallel and Cross Browser Testing
🎯 1. Parallel ve Cross Browser Test Nedir?
Section titled “🎯 1. Parallel ve Cross Browser Test Nedir?”-
Parallel Testing (Paralel Test): Testlerin aynı anda birden fazla thread veya ortamda çalıştırılmasıdır.
→ Zaman kazandırır, test süresini azaltır. -
Cross Browser Testing: Testlerin Chrome, Firefox, Edge, Safari gibi farklı tarayıcılarda çalıştırılmasıdır.
→ Uygulamanın farklı tarayıcılarda aynı şekilde çalıştığından emin olunur.
💡 Cucumber + TestNG veya JUnit kombinasyonu ile paralel ve çoklu tarayıcı testleri yapılabilir.
🔹 2. Proje Yapısı Örneği
Section titled “🔹 2. Proje Yapısı Örneği”src ├── main │ └── java │ └── utilities/ │ └── Driver.java └── test ├── java │ ├── runners/ │ │ ├── ChromeRunner.java │ │ ├── FirefoxRunner.java │ │ └── ParallelRunner.java │ ├── stepdefinitions/ │ └── hooks/ └── resources/ └── features/ └── login.feature🔹 3. WebDriver Yönetimi (Driver.java)
Section titled “🔹 3. WebDriver Yönetimi (Driver.java)”package utilities;
import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.firefox.FirefoxDriver;
public class Driver { private static WebDriver driver;
public static WebDriver getDriver(String browser) { if (driver == null) { switch (browser.toLowerCase()) { case "firefox": driver = new FirefoxDriver(); break; default: driver = new ChromeDriver(); } } return driver; }
public static void quitDriver() { if (driver != null) { driver.quit(); driver = null; } }}💡 Bu sınıf, dinamik olarak farklı tarayıcıları başlatmak için kullanılır.
🔹 4. Hooks ile Tarayıcı Yönetimi
Section titled “🔹 4. Hooks ile Tarayıcı Yönetimi”package hooks;
import io.cucumber.java.Before;import io.cucumber.java.After;import org.openqa.selenium.WebDriver;import utilities.Driver;
public class Hooks {
WebDriver driver;
@Before public void setup() { String browser = System.getProperty("browser", "chrome"); driver = Driver.getDriver(browser); System.out.println("Tarayıcı başlatıldı: " + browser); }
@After public void tearDown() { Driver.quitDriver(); System.out.println("Tarayıcı kapatıldı."); }}💡 Komut satırından farklı tarayıcı seçimi yapılabilir:
mvn test -Dbrowser=firefox
🔹 5. Paralel Çalıştırma (TestNG Suite)
Section titled “🔹 5. Paralel Çalıştırma (TestNG Suite)”TestNG kullanarak birden fazla Runner’ı paralel çalıştırabilirsiniz.
testng.xml
<suite name="Cucumber Suite" parallel="tests" thread-count="2"> <test name="Chrome Tests"> <parameter name="browser" value="chrome"/> <classes> <class name="runners.ChromeRunner"/> </classes> </test>
<test name="Firefox Tests"> <parameter name="browser" value="firefox"/> <classes> <class name="runners.FirefoxRunner"/> </classes> </test></suite>💡
thread-count="2"→ 2 test aynı anda çalışır.
@Parametersile tarayıcı adı dinamik olarak alınabilir.
🔹 6. Tarayıcı Bazlı Runner Sınıfları
Section titled “🔹 6. Tarayıcı Bazlı Runner Sınıfları”Chrome Runner
Section titled “Chrome Runner”package runners;
import io.cucumber.testng.AbstractTestNGCucumberTests;import io.cucumber.testng.CucumberOptions;
@CucumberOptions( features = "src/test/resources/features", glue = {"stepdefinitions", "hooks"}, plugin = {"pretty", "html:target/chrome-report.html"}, tags = "@smoke")public class ChromeRunner extends AbstractTestNGCucumberTests { }Firefox Runner
Section titled “Firefox Runner”package runners;
import io.cucumber.testng.AbstractTestNGCucumberTests;import io.cucumber.testng.CucumberOptions;
@CucumberOptions( features = "src/test/resources/features", glue = {"stepdefinitions", "hooks"}, plugin = {"pretty", "html:target/firefox-report.html"}, tags = "@smoke")public class FirefoxRunner extends AbstractTestNGCucumberTests { }🔹 7. Parallel Runner (Cucumber 6+)
Section titled “🔹 7. Parallel Runner (Cucumber 6+)”Cucumber 6 ve sonrası sürümlerde paralel çalıştırma doğrudan desteklenir.
@CucumberOptions( features = "src/test/resources/features", glue = {"stepdefinitions"}, plugin = {"pretty", "html:target/parallel-report.html"}, monochrome = true)public class ParallelRunner extends AbstractTestNGCucumberTests { @Override @org.testng.annotations.DataProvider(parallel = true) public Object[][] scenarios() { return super.scenarios(); }}💡
parallel = true→ Her senaryo ayrı thread’de çalıştırılır.
🔹 8. Maven Komutları
Section titled “🔹 8. Maven Komutları”# Chrome testlerimvn test -Dbrowser=chrome -Dcucumber.filter.tags="@smoke"
# Firefox testlerimvn test -Dbrowser=firefox -Dcucumber.filter.tags="@regression"
# Paralel çalıştırmamvn test -DsuiteXmlFile=testng.xml🔹 9. Cross Browser Entegrasyon (Grid / Cloud)
Section titled “🔹 9. Cross Browser Entegrasyon (Grid / Cloud)”Selenium Grid Kullanımı
Section titled “Selenium Grid Kullanımı”- Hub ve Node mimarisiyle testleri farklı makinelerde çalıştırabilirsiniz.
URL hubUrl = new URL("http://localhost:4444/wd/hub");driver = new RemoteWebDriver(hubUrl, new ChromeOptions());Bulut Platformları (Cloud Testing)
Section titled “Bulut Platformları (Cloud Testing)”| Platform | Açıklama |
|---|---|
| BrowserStack | Gerçek cihazlar ve tarayıcı kombinasyonları |
| Sauce Labs | Paralel ve gerçek tarayıcı desteği |
| LambdaTest | CI/CD entegrasyonlu bulut test platformu |
🔹 10. Raporlama
Section titled “🔹 10. Raporlama”Cucumber paralel testlerde aşağıdaki raporlar önerilir:
| Plugin | Açıklama |
|---|---|
html:target/report.html | Basit HTML raporu |
json:target/cucumber.json | JSON formatında veri |
rerun:target/rerun.txt | Hatalı senaryolar listesi |
extent:target/extent-report.html | ExtentReports (gelişmiş rapor) |
🧠 11. İpuçları
Section titled “🧠 11. İpuçları”✅ Tarayıcı adlarını sistem değişkeniyle yönetin
✅ parallel = true ile çoklu thread desteğini aktif edin
✅ Her thread için bağımsız WebDriver örneği oluşturun
✅ Raporlar için target/ altına tarayıcı bazlı çıktı alın
✅ CI/CD (Jenkins, GitHub Actions) entegrasyonu ile otomatikleştirin
🏁 Özet
Section titled “🏁 Özet”| Kavram | Açıklama |
|---|---|
| Parallel Testing | Testlerin aynı anda çoklu thread’de çalıştırılması |
| Cross Browser Testing | Farklı tarayıcılarda testlerin yürütülmesi |
| Hooks | Her tarayıcı için setup/teardown yönetimi |
| TestNG Suite | Paralel test yapılandırması |
| Cloud/Grid | Dağıtık veya bulut test çalıştırma |
💡 Not: Paralel ve Cross Browser test stratejileri, büyük ölçekli Cucumber projelerinde test süresini ciddi oranda azaltır.