Top 50 TestNG Pytania i odpowiedzi do wywiadu (2026)

Topy TestNG Pytania i odpowiedzi do wywiadu

Przygotowanie do A TestNG Rozmowa kwalifikacyjna? Czas zastanowiฤ‡ siฤ™ nad pytaniami, ktรณre pokaลผฤ… Twoje mocne strony. Solidny TestNG Podstawy wywiadu ujawniajฤ… gล‚ฤ™biฤ™, pewnoล›ฤ‡ siebie i gotowoล›ฤ‡, ktรณre sฤ… cenione przez zespoล‚y rekrutacyjne.

Moลผliwoล›ci w tej dziedzinie obejmujฤ… rozwรณj automatyzacji, ewolucjฤ™ frameworkรณw oraz praktyczne aplikacje testowe wymagajฤ…ce doล›wiadczenia technicznego i zawodowego. Praca w tej dziedzinie wymaga specjalistycznej wiedzy, umiejฤ™tnoล›ci analitycznych oraz elastycznego zestawu umiejฤ™tnoล›ci, ktรณry pomaga poczฤ…tkujฤ…cym, ล›redniemu i starszemu personelowi w rozwiฤ…zywaniu najczฤ™ล›ciej zadawanych pytaล„ i udzielaniu odpowiedzi na pytania techniczne, podstawowe i zaawansowane.
Czytaj wiฤ™cej ...

๐Ÿ‘‰ Bezpล‚atne pobieranie plikรณw PDF: TestNG Pytania i odpowiedzi na rozmowie kwalifikacyjnej

Topy TestNG Pytania i odpowiedzi do wywiadu

1) Co to jest TestNG i dlaczego jest stosowany w testach automatycznych?

TestNG (Test Next Generation) to framework testowy inspirowany JUnit i NUnit, ale wzbogacony o zaawansowane moลผliwoล›ci, takie jak grupaping, sekwencjonowanie, parametryzacja i zarzฤ…dzanie zaleลผnoล›ciami. Jest on wykorzystywany gล‚รณwnie w testach automatycznych w celu usprawnienia wykonywania testรณw, poprawy organizacji testรณw oraz generowania szczegรณล‚owych raportรณw HTML i XML.

Kluczowe zalety TestNG zawieraฤ‡:

  • podpory rรณwnolegล‚e wykonywanie testรณw, co skraca caล‚kowity czas realizacji.
  • Zapewnia adnotacje ktรณre skutecznie kontrolujฤ… przebieg testรณw.
  • Oferty testowanie oparte na danych przez @DataProvider adnotacja.
  • Generuje konfigurowalne raporty dla lepszego debugowania.

Na przykล‚ad, TestNG umoลผliwia niezaleลผne wykonywanie grup testรณw dymnych, regresyjnych i integracyjnych bez koniecznoล›ci modyfikowania kodu testowego, zapewniajฤ…c elastycznoล›ฤ‡ i skalowalnoล›ฤ‡ w duลผych zestawach automatyzacji.


2) Wyjaล›nij TestNG cykl ลผycia z adnotacjami i kolejnoล›ciฤ… ich wykonywania.

TestNG Cykl ลผycia definiuje sposรณb inicjowania, wykonywania i koล„czenia testรณw. Jest on kontrolowany za pomocฤ… adnotacji, ktรณre zapewniajฤ… strukturฤ™ i przejrzystoล›ฤ‡ przepล‚ywu testรณw.

Adnotacja OPIS Nakaz wykonania
@BeforeSuite Uruchamia siฤ™ przed wszystkimi testami w pakiecie 1
@BeforeTest Wykonuje siฤ™ przed <test> tag w XML 2
@BeforeClass Dziaล‚a przed pierwszฤ… metodฤ… w bieลผฤ…cej klasie 3
@BeforeMethod Wykonuje siฤ™ przed kaลผdฤ… metodฤ… testowฤ… 4
@Test Zawiera rzeczywistฤ… logikฤ™ testu 5
@AfterMethod Uruchamia siฤ™ po kaลผdej metodzie testowej 6
@AfterClass Uruchamia siฤ™ po wszystkich metodach w klasie 7
@AfterTest Biegnie za <test> tag w XML 8
@AfterSuite Wykonuje siฤ™ po wszystkich testach w pakiecie 9

Taka struktura zapewnia przewidywalnฤ… konfiguracjฤ™ i demontaลผ testรณw, co ma kluczowe znaczenie dla zachowania niezaleลผnoล›ci testรณw.


3) Jak jest? TestNG rรณลผni siฤ™ od JUnit?

Chociaลผ oba frameworki sล‚uลผฤ… do testowania jednostkowego, TestNG zapewnia bardziej niezawodnฤ… konfiguracjฤ™ i moลผliwoล›ci rรณwnolegล‚ego wykonywania.

Cecha JUnit TestNG
Wykonywanie rรณwnolegล‚e Ograniczone wsparcie Peล‚ne wsparcie
Adnotacje Mniej (@Before, @After) Bogatszy (@BeforeSuite, @DataProvider)
Zarzฤ…dzanie zaleลผnoล›ciami Niedostฤ™pne Dostฤ™pne za pomocฤ… dependsOnMethods
Grouping Nie jest obsล‚ugiwany Obsล‚ugiwane za pomocฤ… groups
Parametryzacja Przez zewnฤ™trzne biegacze Wbudowane za pomocฤ… XML lub @DataProvider

W podsumowaniu, TestNG jest preferowany dla testowanie automatyzacji na poziomie przedsiฤ™biorstwa i integracjฤ™ z narzฤ™dziami takimi jak Selenium, natomiast JUnit jest idealny do prostszych testรณw jednostkowych.


4) Jakie sฤ… TestNG Adnotacje i jak sฤ… przydatne?

Adnotacje w TestNG okreล›liฤ‡ struktura i zachowanie metod testowychEliminujฤ… potrzebฤ™ skomplikowanej konfiguracji XML, zapewniajฤ…c deklaratywnฤ… kontrolฤ™ testรณw bezpoล›rednio w kodzie.

Do powszechnie stosowanych adnotacji naleลผฤ…:

  • @BeforeSuite, @BeforeTest, @BeforeClass, @BeforeMethod
  • @Test
  • @AfterMethod, @AfterClass, @AfterTest, @AfterSuite

Przykล‚ad:

@BeforeMethod
public void setup() {
    System.out.println("Initializing browser...");
}

@Test
public void verifyLogin() {
    System.out.println("Executing login test...");
}

Pomaga to programistom logicznie organizowaฤ‡ wykonywanie testรณw, gwarantujฤ…c, ลผe konfiguracja, wykonywanie testรณw i demontaลผ odbywajฤ… siฤ™ w okreล›lonej kolejnoล›ci.


5) Wyjaล›nij pojฤ™cie grupyping in TestNG.

Grouping in TestNG umoลผliwia logiczny podziaล‚ testรณw na mniejsze, ล‚atwiejsze w zarzฤ…dzaniu zbiory, takie jak โ€žDymโ€, โ€žRegresjaโ€ lub โ€žZdrowie psychiczneโ€.

Przykล‚ad:

@Test(groups = {"Smoke"})
public void loginTest() { ... }
@Test(groups = {"Regression"})
public void paymentTest() { ... }

Moลผesz skonfigurowaฤ‡ pakiet XML tak, aby uruchamiaล‚ okreล›lone grupy:

<groups>
  <run>
    <include name="Smoke"/>
  </run>
</groups>

Korzyล›ci:

  • Uล‚atwia selektywne wykonywanie przypadkรณw testowych.
  • Zwiฤ™ksza elastycznoล›ฤ‡ procesรณw CI/CD.
  • Oszczฤ™dza czas wykonywania podczas kompilacji przyrostowych.

6) W jaki sposรณb moลผna osiฤ…gnฤ…ฤ‡ parametryzacjฤ™ w TestNG?

Parametryzacja umoลผliwia testowanie oparte na danych, pozwalajฤ…c na przeprowadzanie testรณw z wieloma zestawami danych wejล›ciowych. TestNG obsล‚uguje dwie podstawowe metody:

  1. Korzystanie z @Parameters adnotacja z XML:
  2. <parameter name="browser" value="chrome"/>
    @Test
    @Parameters("browser")
    public void launchBrowser(String browser) { ... }
    
  3. Korzystanie z @DataProvider:
  4. @DataProvider(name="loginData")
    public Object[][] getData() {
      return new Object[][] {{"user1","pass1"}, {"user2","pass2"}};
    }
    
    @Test(dataProvider="loginData")
    public void loginTest(String user, String pass) { ... }
    

Taka elastycznoล›ฤ‡ uล‚atwia konserwacjฤ™ i wykonywanie duลผych zestawรณw testรณw w rรณลผnych ล›rodowiskach lub konfiguracjach.


7) Czym sฤ… zaleลผnoล›ci w TestNG i jak siฤ™ nimi zarzฤ…dza?

Zaleลผnoล›ci w TestNG kontrolowaฤ‡ kolejnoล›ฤ‡ wykonywania testรณw na podstawie wynikรณw innych testรณw, korzystajฤ…c z dependsOnMethods or dependsOnGroups atrybuty.

Przykล‚ad:

@Test
public void loginTest() { ... }

@Test(dependsOnMethods = {"loginTest"})
public void verifyDashboard() { ... }

Jeลผeli metoda zaleลผna zawiedzie, kolejny test zostanie automatycznie pominiฤ™ty.

Mechanizm ten zapobiega nieprawidล‚owemu wykonaniu testu i pomaga w utrzymaniu logiczna integralnoล›ฤ‡ testuJest to szczegรณlnie przydatne w przypadku wieloetapowych przepล‚ywรณw funkcjonalnych, takich jak logowanie โ†’ wykonywanie akcji โ†’ weryfikacja wyniku.


8) Jakie sฤ… rรณลผne sposoby wykonania TestNG testy?

TestNG testy moลผna wykonywaฤ‡ na kilka elastycznych sposobรณw, w zaleลผnoล›ci od konfiguracji testรณw:

  1. Z IDE (Eclipse/IntelliJ): Kliknij prawym przyciskiem myszy klasฤ™ lub XML file โ†’ Run as โ†’ TestNG Test.
  2. Z poziomu wiersza poleceล„: java -cp "path\testng.jar;bin" org.testng.TestNG testng.xml
  3. Korzystanie z narzฤ™dzi do kompilacji:
    • Maven: Konfigurowanie surefire-plugin in pom.xml.
    • Gradle: Zastosowanie testng zaleลผnoล›ci i konfiguracja zadaล„.
  4. Poprzez kanaล‚y CI/CD: Zintegrowany z Jenkins lub GitHub Actions do automatycznego wykonywania.

Taka rรณลผnorodnoล›ฤ‡ gwarantuje kompatybilnoล›ฤ‡ w ล›rodowiskach programistycznych, testowych i produkcyjnych.


9) Jakie sฤ… TestNG sล‚uchacze i dlaczego sฤ… waลผni?

Sล‚uchacze w TestNG zapewniajฤ… narzฤ™dzia do dostosowywania zachowania testu poprzez monitorowanie zdarzeล„ wykonania testu, takich jak uruchomienie, powodzenie, niepowodzenie lub pominiฤ™cie.

Typowi sล‚uchacze:

  • ITestListener: Traczdarzenia na poziomie metody testowej ks.
  • ISuiteListener:Obserwuje zdarzenia na poziomie apartamentu.
  • IReporter:Generuje niestandardowe raporty.

Przykล‚ad:

public class CustomListener implements ITestListener {
  public void onTestFailure(ITestResult result) {
    System.out.println("Test Failed: " + result.getName());
  }
}

Sล‚uchacze sฤ… czฤ™sto wykorzystywani do odbierania zrzuty ekranu w przypadku awarii, generowanie niestandardowe dziennikilub integracja z narzฤ™dziami do raportowania jak Allure czy ExtentReports.


10) Jakie sฤ… zalety i wady korzystania z TestNG?

WYGLฤ„D Zalety Wady
Elastycznoล›ฤ‡ Wspiera grupฤ™ping, zaleลผnoล›ci i wykonywania rรณwnolegล‚ego Zล‚oลผona konfiguracja XML dla duลผych pakietรณw
Raportowanie Zapewnia szczegรณล‚owe raporty HTML i XML Ograniczona personalizacja bez sล‚uchaczy
Integracja Bezproblemowo wspรณล‚pracuje z Selenium i narzฤ™dzi CI/CD Nieco wyลผsza krzywa uczenia siฤ™
Parametryzacja Wbudowane wsparcie dla testรณw opartych na danych Wymaga konserwacji duลผych zestawรณw danych

Ogรณlnie rzecz biorฤ…c, TestNG jest solidnฤ… i elastycznฤ… strukturฤ…, odpowiedniฤ… dla nowoczesnych ล›rodowisk testowania automatycznego, pomimo niewielkich wymagaล„ konfiguracyjnych.


11) Jak moลผna ustaliฤ‡ priorytety przypadkรณw testowych w TestNG?

TestNG zapewnia priority atrybut w @Test Adnotacja definiujฤ…ca kolejnoล›ฤ‡ wykonywania metod testowych. Testy o niลผszych priorytetach sฤ… uruchamiane jako pierwsze.

Przykล‚ad:

@Test(priority = 1)
public void loginTest() { ... }

@Test(priority = 2)
public void dashboardTest() { ... }

Jeลผeli nie okreล›lono priorytetu, wartoล›ciฤ… domyล›lnฤ… jest 0, a metody sฤ… wykonywane alfabetycznie.

Najlepsze praktyki: Uลผywaj wartoล›ci priorytetowych oszczฤ™dnie. Naduลผywanie ich moลผe zaostrzyฤ‡ kolejnoล›ฤ‡ testรณw. W przypadku zล‚oลผonych przepล‚ywรณw, zarzฤ…dzanie zaleลผnoล›ciami (dependsOnMethods) jest ล‚atwiejsze do utrzymania niลผ ล›cisล‚e ustalanie priorytetรณw.


12) Wyjaล›nij koncepcjฤ™ i zastosowanie wykonywania rรณwnolegล‚ego w TestNG.

Wykonywanie rรณwnolegล‚e w TestNG umoลผliwia jednoczesne uruchamianie wielu testรณw, klas lub metod, co znacznie skraca caล‚kowity czas wykonywania.

Moลผesz wล‚ฤ…czyฤ‡ tฤ™ funkcjฤ™ w testng.xml file:

<suite name="ParallelSuite" parallel="tests" thread-count="3">
  <test name="Test1">...</test>
  <test name="Test2">...</test>
</suite>

Obsล‚ugiwane tryby rรณwnolegล‚e:

  • tests
  • classes
  • methods
  • instances

Zalety:

  • Krรณtszy cykl sprzฤ™ลผenia zwrotnego.
  • Efektywne wykorzystanie procesorรณw wielordzeniowych.
  • Skalowalnoล›ฤ‡ dla duลผych pakietรณw automatyzacji.

Jednakลผe upewnij siฤ™, bezpieczeล„stwo nici podczas korzystania ze wspรณล‚dzielonych zasobรณw, takich jak WebDriver lub poล‚ฤ…czenia z bazฤ… danych.


13) Czym sฤ… dostawcy danych w TestNGCzym rรณลผniฤ… siฤ™ od parametrรณw?

@DataProvider Umoลผliwia testowanie oparte na danych dostarczajฤ…c metodom testowym wiele zestawรณw danych.

Przykล‚ad:

@DataProvider(name="credentials")
public Object[][] data() {
    return new Object[][] {{"user1", "pass1"}, {"user2", "pass2"}};
}

@Test(dataProvider="credentials")
public void login(String username, String password) { ... }

Rรณลผnica pomiฤ™dzy @Parameters i @DataProvider:

Cecha @Parameters @DataProvider
ลนrรณdล‚o danych Plik XML Java metoda
DataType Pojedynczy zestaw danych Wiele zestawรณw danych
Elastycznoล›ฤ‡ Less Wysoki
Przypadek uลผycia Zmienne ล›rodowiskowe Powtarzane testy oparte na danych

Stฤ…d, @DataProvider jest preferowany w przypadku wykonywania pojedynczego testu z wieloma zestawami danych, np. w celu weryfikacji logowania przy uลผyciu wielu poล›wiadczeล„.


14) Jak moลผna wyล‚ฤ…czyฤ‡ lub pominฤ…ฤ‡ test w TestNG?

Moลผesz wyล‚ฤ…czyฤ‡ test w TestNG uลผywajฤ…c enabled atrybut lub programowo pominฤ…ฤ‡ping to.

1. Korzystanie enabled = false:

@Test(enabled = false)
public void skipTest() {
    System.out.println("This test will not run.");
}

2. Pomiล„ping podczas wykonywania za pomocฤ… SkipException:

@Test
public void conditionalSkip() {
    throw new SkipException("Skipping this test due to condition.");
}

Wyล‚ฤ…czanie jest przydatne dla tymczasowo dezaktywujฤ™ niestabilne lub niekompletne testy bez ich usuwania. Pomiล„ping jest cenny dla warunki wykonania, jak pominฤ…ฤ‡ping testy dla nieobsล‚ugiwanych przeglฤ…darek.


15) Jakฤ… rolฤ™ peล‚ni plik testng.xml i jakie sฤ… jego gล‚รณwne skล‚adniki?

testng.xml plik jest podstawฤ… konfiguracji TestNGDefiniuje zestawy testรณw, grupy testowe, parametry i konfiguracjฤ™ rรณwnolegล‚ego wykonywania.

Przykล‚ad struktury:

<suite name="AutomationSuite">
  <parameter name="browser" value="chrome"/>
  <test name="RegressionTests">
    <classes>
      <class name="com.test.LoginTest"/>
      <class name="com.test.PaymentTest"/>
    </classes>
  </test>
</suite>

Gล‚รณwne komponenty:

  • <suite> โ€“ Definiuje caล‚y pakiet.
  • <test> โ€“ Reprezentuje blok testowy.
  • <classes> โ€“ Wyล›wietla klasy testowe.
  • <methods> โ€“ Filtruje okreล›lone metody testowe.
  • <parameter> โ€“ Dostarcza parametry globalne lub na poziomie testowym.

Plik XML zapewnia scentralizowana kontrola nadmierne wykonywanie bez zmiany kodu.


16) Jak moลผna generowaฤ‡ raporty w TestNG?

TestNG automatycznie generuje dwa rodzaje raportรณw:

  1. Raport HTML (test-output/index.html) โ€“ Podsumowuje testy zaliczone, niezaliczone i pominiฤ™te.
  2. Raport XML โ€“ Sล‚uลผy do integracji z narzฤ™dziami CI/CD.

Aby uzyskaฤ‡ zaawansowane raportowanie, TestNG integruje siฤ™ z:

  • ExtentReports โ€“ Oferuje graficzne pulpity nawigacyjne i szczegรณล‚owe dzienniki.
  • Raporty Allure โ€“ Zapewnia analizฤ™ wizualnฤ… z krokami testowymi, zrzutami ekranu i dziennikami.

Przykล‚ad integracji:

ExtentReports extent = new ExtentReports();
ExtentTest test = extent.createTest("Login Test");
test.pass("Test Passed Successfully");
extent.flush();

Te raporty sฤ… niezbฤ™dne dla tractrendy i identyfikacja sล‚abych punktรณw w pokryciu testami.


17) Czym sฤ… fabryki w TestNGi jak one dziaล‚ajฤ…?

Fabryki w TestNG sล‚uลผฤ… do tworzenia dynamiczne wystฤ…pienia klas testowychUmoลผliwiajฤ… parametryzacjฤ™ instancji klas przed uruchomieniem testรณw.

Przykล‚ad:

public class FactoryExample {
  private String browser;

  public FactoryExample(String browser) {
    this.browser = browser;
  }

  @Factory
  public static Object[] factoryMethod() {
    return new Object[] { new FactoryExample("Chrome"), new FactoryExample("Firefox") };
  }

  @Test
  public void testBrowser() {
    System.out.println("Running test on: " + browser);
  }
}

Zalety:

  • umoลผliwia sparametryzowane tworzenie obiektรณw.
  • Idealne dla testowanie w rรณลผnych przeglฤ…darkach oraz realizacja wieloล›rodowiskowa.
    Fabryki uzupeล‚niajฤ… DataProviders, gdy potrzebujesz rรณลผnych konfiguracji obiektรณw, a nie tylko zmiennoล›ci danych na poziomie metody.

18) Jak moลผna uลผywaฤ‡ asercji w TestNG?

Twierdzenia sล‚uลผฤ… do sprawdzania, czy oczekiwane i rzeczywiste wyniki sฤ… zgodne z wynikami metod testowania.

Rodzaje twierdzeล„:

  1. Twarde asercje (klasa Assert):
    W przypadku wystฤ…pienia bล‚ฤ™du natychmiast zatrzymuje wykonywanie testu.
  2. Assert.assertEquals(actual, expected);
    Assert.assertTrue(condition);
    
  3. Miฤ™kkie potwierdzenia (klasa SoftAssert):
    Kontynuuje wykonywanie nawet w przypadku niepowodzenia, raportujฤ…c wszystkie problemy na koล„cu.
  4. SoftAssert soft = new SoftAssert();
        soft.assertEquals(actual, expected);
        soft.assertAll();
    
  5. Kiedy uลผyฤ‡:
    • Uลผywaj twardych twierdzeล„ krytyczna walidacja jak pomyล›lne logowanie.
    • Uลผyj miฤ™kkich asercji dla wielokrotne weryfikacje w ramach jednej metody badawczej.

19) Wyjaล›nij rรณลผnicฤ™ miฤ™dzy @BeforeMethod i @BeforeClass w TestNG.

WYGLฤ„D @BeforeMethod @BeforeClass
Egzekucja Dziaล‚a przed kaลผdym Metoda badania Dziaล‚a raz wczeล›niej dowolna metoda w klasie
Zakres Wedล‚ug metody testowej Na klasฤ™ testowฤ…
Wspรณlne zastosowanie Inicjalizacja przeglฤ…darki przed kaลผdym testem ลadowanie konfiguracji lub ustawieล„ przeglฤ…darki raz

Przykล‚ad:

@BeforeClass
public void setupClass() {
    System.out.println("Executed once per class");
}

@BeforeMethod
public void setupMethod() {
    System.out.println("Executed before each method");
}

Zastosowanie @BeforeMethod gdy kaลผdy test wymaga czystego ล›rodowiska, i @BeforeClass do zadaล„ wymagajฤ…cych duลผej inicjalizacji, ktรณre moลผna ponownie wykorzystaฤ‡.


20) Jak to dziaล‚a TestNG obsล‚uguje wstrzykiwanie zaleลผnoล›ci i jakie sฤ… przypadki jego uลผycia?

TestNG wspiera wstrzykiwanie zaleลผnoล›ci poprzez wbudowanฤ… iniekcjฤ™ obiektรณw kontekstowych i konfiguracyjnych, takich jak ITestContext, XmlTestlub Method.

Przykล‚ad:

@Test
public void testContextExample(ITestContext context) {
    System.out.println("Suite Name: " + context.getSuite().getName());
}

Przypadkรณw uลผycia:

  • Dynamiczne pobieranie parametrรณw testu.
  • Uzyskiwanie dostฤ™pu do informacji konfiguracyjnych, takich jak nazwy pakietรณw lub ustawienia wykonywania rรณwnolegล‚ego.
  • Zwiฤ™kszanie elastycznoล›ci testรณw bez koniecznoล›ci sztywnego kodowania zaleลผnoล›ci.

Wstrzykiwanie zaleลผnoล›ci pozwala programistom pisz moduล‚owe testy uwzglฤ™dniajฤ…ce kontekst ktรณre dynamicznie dostosowujฤ… siฤ™ do zmian otoczenia.


21) Jaka jest rรณลผnica miฤ™dzy @Factory i @DataProvider w TestNG?

Obie @Factory oraz @DataProvider pomรณc w parametryzacji, ale dziaล‚ajฤ… na rรณลผne poziomy w architekturze testowej.

Cecha @Factory @DataProvider
Zakres Poziom klasy Poziom metody
Cel Tworzy wiele wystฤ…pieล„ klasy z rรณลผnymi danymi Dostarcza dane do pojedynczej metody testowej
Egzekucja Wykonuje caล‚ฤ… klasฤ™ dla kaลผdego wystฤ…pienia Wykonuje jednฤ… metodฤ™ wielokrotnie
Idealny przypadek uลผycia Testowanie miฤ™dzy przeglฤ…darkami i ล›rodowiskami Testowanie funkcjonalne oparte na danych

Przykล‚ad:

  • Fabryka: Uruchamia caล‚ฤ… klasฤ™ dla kaลผdego typu przeglฤ…darki.
  • Dostawca danych: Uruchamia jednฤ… metodฤ™ testowฤ… z wieloma zestawami danych.

Zastosowanie @Factory gdy sama instancja obiektu ulega zmianie i @DataProvider dla zmiennoล›ci danych wejล›ciowych w ramach tej samej instancji obiektu.


22) Jak moลผna automatycznie ponawiaฤ‡ nieudane przypadki testowe w TestNG?

TestNG zapewnia mechanizm ponowne uruchomienie nieudanych przypadkรณw testowych uลผywajฤ…c IRetryAnalyzer berล‚o.

Przykล‚adowa implementacja:

public class RetryAnalyzer implements IRetryAnalyzer {
  int count = 0;
  int maxTry = 2;

  public boolean retry(ITestResult result) {
    if (count < maxTry) {
      count++;
      return true;
    }
    return false;
  }
}

Stosowanie:

@Test(retryAnalyzer = RetryAnalyzer.class)
public void testLogin() {
   Assert.fail("Intentional Failure");
}

Korzyล›ci:

  • Zmniejsza ล‚uszczenie siฤ™ rur CI.
  • Zajmuje siฤ™ przejล›ciowymi problemami zwiฤ…zanymi z sieciฤ… i ล›rodowiskiem.

Najlepsze praktyki: Poล‚ฤ…cz logikฤ™ ponawiania prรณb z odpowiednim rejestrowaniem i zrzutami ekranu w celu debugowania sporadycznych bล‚ฤ™dรณw.


23) Do czego sล‚uลผy ITestContext w TestNG?

ITestContext zapewnia Informacja kontekstowa o przebiegu testu, w tym nazwa zestawu, nazwa testu, katalog wyjล›ciowy i parametry.

Przykล‚ad:

@Test
public void contextExample(ITestContext context) {
    System.out.println("Suite: " + context.getSuite().getName());
}

Kluczowe metody:

  • getSuite() โ€“ Pobiera informacje na poziomie pakietu.
  • getName() โ€“ Zwraca nazwฤ™ testu.
  • setAttribute() / getAttribute() โ€“ Udostฤ™pniaj dane pomiฤ™dzy testami.

To umoลผliwia udostฤ™pnianie danych pomiฤ™dzy metodami testowymi lub klasami i uล‚atwia dynamiczne raportowanie i rejestrowanie.


24) Jak moลผna stworzyฤ‡ zaleลผnoล›ฤ‡ miฤ™dzy grupami testowymi w TestNG?

Zaleลผnoล›ci miฤ™dzygrupowe moลผna zdefiniowaฤ‡ za pomocฤ… dependsOnGroups atrybut w @Test adnotacja.

Przykล‚ad:

@Test(groups = "Login")
public void login() { ... }

@Test(dependsOnGroups = "Login")
public void verifyProfile() { ... }

Gwarantuje to, ลผe verifyProfile grupa dziaล‚a tylko wtedy, gdy wszystkie testy w Login grupa przeszล‚a pomyล›lnie.

Jest szczegรณlnie przydatny w testy integracyjne, gdzie moduล‚y zaleลผฤ… od pomyล›lnego wykonania innych (np. logowanie โ†’ profil โ†’ wylogowanie).


25) Jak moลผna zignorowaฤ‡ pewne metody testowe w TestNG Plik XML?

Moลผna wyraลบnie wyklucz metody w ramach klasy w pliku pakietu XML przy uลผyciu <exclude> tagi.

Przykล‚ad:

<class name="com.test.LoginTests">
  <methods>
    <exclude name="verifyLogout"/>
  </methods>
</class>

Pozwala to testerom tymczasowo wyล‚ฤ…cz okreล›lone metody bez modyfikacji Java kod ลบrรณdล‚owy โ€” przydatny w duลผych pakietach, w ktรณrych dynamiczne doล‚ฤ…czanie lub wykluczanie jest wymagane na podstawie cykli wydaล„ lub priorytetรณw sprintรณw.


26) Jak moลผna TestNG byฤ‡ zintegrowanym z Selenium Sterownik sieciowy?

TestNG oraz Selenium tworzฤ… potฤ™ลผne poล‚ฤ…czenie do automatyzacji interfejsu uลผytkownika.

Typowa konfiguracja integracji obejmuje organizowanie testรณw za pomocฤ… adnotacji, zarzฤ…dzanie konfiguracjฤ…/demontaลผem i uruchamianie testรณw za poล›rednictwem narzฤ™dzi XML lub CI.

Przykล‚ad:

@BeforeMethod
public void setup() {
    driver = new ChromeDriver();
}

@Test
public void verifyTitle() {
    driver.get("https://example.com");
    Assert.assertEquals(driver.getTitle(), "Example Domain");
}

@AfterMethod
public void teardown() {
    driver.quit();
}

Korzyล›ci z integracji:

  • umoลผliwia rรณwnolegล‚e testowanie przeglฤ…darki.
  • Upraszcza grupa testowaping i raportowanie.
  • Bezproblemowo wspรณล‚pracuje z Potoki CI / CD lubiฤ‡ Jenkins lub GitHub Actions.

27) Jakie sฤ… najlepsze praktyki podczas korzystania TestNG w duลผych strukturach automatyzacji?

Najlepsze Praktyki:

  1. Zastosowanie DescriptNazewnictwo ive: Nazywaj testy w oparciu o zachowanie, nie implementacjฤ™.
  2. Grupa dลบwigniping: Utwรณrz logiczne grupy testowe (Dym, Regresja).
  3. Unikaj kodowania na staล‚e: Uลผyj parametrรณw lub plikรณw wล‚aล›ciwoล›ci dla danych testowych.
  4. Minimalizuj zaleลผnoล›ci: W miarฤ™ moลผliwoล›ci staraj siฤ™ zachowaฤ‡ niezaleลผnoล›ฤ‡ przypadkรณw testowych.
  5. Centralizacja konfiguracji: Zastosowanie testng.xml do konfiguracji pakietu.
  6. Zintegrowane raportowanie: Uลผyj sล‚uchaczy lub narzฤ™dzi innych firm, np. ExtentReports.
  7. Uลผywaj logiki ponawiania ostroลผnie: Unikaj maskowania prawdziwych wad.

Przestrzeganie tych zasad zapewnia skalowalnoล›ฤ‡, ล‚atwoล›ฤ‡ utrzymania i czytelnoล›ฤ‡ w automatyzacji na poziomie przedsiฤ™biorstwa.


28) Jaka jest rรณลผnica miฤ™dzy @BeforeTest i @BeforeSuite w TestNG?

Cecha @BeforeTest @BeforeSuite
Zakres Biegnie przed kaลผdym <test> tag w XML Uruchamia siฤ™ raz przed caล‚ym pakietem
Czฤ™stotliwoล›ฤ‡ Wielokrotnie (jeล›li wielokrotne <test> bloki) Tylko raz na apartament
Wspรณlne zastosowanie Zainicjuj konfiguracjฤ™ na poziomie testu Skonfiguruj zasoby globalne

Przykล‚ad:

@BeforeSuite
public void setupSuite() {
    System.out.println("Global setup for suite.");
}

@BeforeTest
public void setupTest() {
    System.out.println("Setup for each <test> tag.");
}

Zastosowanie @BeforeSuite dla konfiguracje globalne (np. poล‚ฤ…czenie z bazฤ… danych) i @BeforeTest dla inicjalizacje specyficzne dla testu.


29 moลผe TestNG moลผna wykorzystaฤ‡ do testowania API? W jaki sposรณb?

Tak. TestNG moลผe byฤ‡ skutecznie uลผywany do Testowanie API poprzez integracjฤ™ z bibliotekami klienta HTTP, takimi jak RestAssured or Klient HTTP.

Przykล‚ad:

@Test
public void verifyApiResponse() {
    Response response = RestAssured.get("https://api.example.com/users");
    Assert.assertEquals(response.getStatusCode(), 200);
}

Zalety:

  • umoลผliwia walidacja oparta na asercjach odpowiedzi.
  • podpory parametryzacja oraz testowanie oparte na danych dla wielu punktรณw koล„cowych.
  • Generuje ustrukturyzowane raporty do walidacji interfejsu API REST.

Poprzez poล‚ฤ…czenie TestNG Dziฤ™ki RestAssured testerzy mogฤ… utrzymywaฤ‡ ujednoliconฤ… strukturฤ™ automatyzacji zarรณwno na potrzeby testowania interfejsu uลผytkownika, jak i interfejsu API.


30) Jak przekazaฤ‡ parametry z wiersza poleceล„ w TestNG?

Moลผna zastฤ…piฤ‡ parametry XML w czasie wykonywania, przekazujฤ…c wล‚aล›ciwoล›ci systemowe za pomocฤ… -D flag.

Przykล‚ad polecenia:

mvn test -Dbrowser=chrome -Denv=staging

Code Przykล‚ad:

@Parameters("browser")
@Test
public void launch(@Optional("firefox") String browser) {
    System.out.println("Running on: " + browser);
}

To umoลผliwia dynamiczny wybรณr ล›rodowiska w procesach CI/CD bez koniecznoล›ci zmiany plikรณw konfiguracyjnych, co zwiฤ™ksza elastycznoล›ฤ‡ testรณw.


31) Jak moลผna kontrolowaฤ‡ kolejnoล›ฤ‡ wykonywania testรณw w TestNG bez uลผycia priorytetรณw?

Zamiast uลผywaฤ‡ priority, TestNG umoลผliwia kontrolฤ™ poprzez Zaleลผnoล›ci oraz Kolejnoล›ฤ‡ metod XML.

metody:

  1. Korzystanie z dependsOnMethods:
  2. @Test
    public void login() { ... }
    
    @Test(dependsOnMethods = "login")
    public void verifyDashboard() { ... }
    
  3. Korzystanie z sekwencji metod XML:
  4. <classes>
      <class name="com.test.LoginTests">
        <methods>
          <include name="login"/>
          <include name="verifyDashboard"/>
        </methods>
      </class>
    </classes>
    

Najlepsze praktyki: W przypadku zล‚oลผonych przepล‚ywรณw zamiast statycznych priorytetรณw stosuj zaleลผnoล›ci logiczne, co pozwoli Ci tworzyฤ‡ solidne i ล‚atwe w utrzymaniu zestawy testรณw.


32) Jak moลผna wykonaฤ‡ okreล›lone metody testowe z wiersza poleceล„ w TestNG?

TestNG pozwala wykonywanie testรณw na poziomie metody bezpoล›rednio z wiersza poleceล„, korzystajฤ…c z konfiguracji XML lub Maven Surefire.

Opcja 1: Korzystanie z pliku XML

<class name="com.test.LoginTests">
  <methods>
    <include name="verifyLogin"/>
  </methods>
</class>

Opcja 2: polecenie Maven

mvn test -Dtest=com.test.LoginTests#verifyLogin

Takie podejล›cie pozwala selektywne wykonanie, przydatne do debugowania poszczegรณlnych metod lub sprawdzania krytycznych funkcjonalnoล›ci podczas szybkich kompilacji.


33) Jak parametryzowaฤ‡ testy za pomocฤ… zewnฤ™trznego pliku Excel w TestNG?

Parametryzacja oparta na programie Excel jest powszechna w przypadku struktur opartych na danych, w ktรณrych dane testowe czฤ™sto siฤ™ zmieniajฤ….

Kroki wdroลผenia:

  1. Zastosowanie POI Apache or JExcel aby odczytaฤ‡ dane z Excela.
  2. Wล‚รณลผ to do @DataProvider Metoda.

Przykล‚ad:

@DataProvider(name = "excelData")
public Object[][] readExcel() throws Exception {
    FileInputStream fis = new FileInputStream("data.xlsx");
    XSSFWorkbook wb = new XSSFWorkbook(fis);
    XSSFSheet sheet = wb.getSheetAt(0);
    Object[][] data = new Object[sheet.getLastRowNum()][2];
    for (int i = 0; i < sheet.getLastRowNum(); i++) {
        data[i][0] = sheet.getRow(i + 1).getCell(0).getStringCellValue();
        data[i][1] = sheet.getRow(i + 1).getCell(1).getStringCellValue();
    }
    return data;
}

Dziฤ™ki temu moลผliwe jest przeprowadzenie tej samej metody testowania na wielu rzeczywistych zestawach danych z programu Excel, co zwiฤ™ksza elastycznoล›ฤ‡ i zasiฤ™g.


34) Jak moลผesz biegaฤ‡? TestNG testy w Jenkins lub potokรณw CI/CD?

TestNG bezproblemowo integruje siฤ™ z Jenkins, GitLab CIlub Akcje GitHub przez Maven lub Gradle buduje.

Wkracza Jenkins:

  1. Zainstalowaฤ‡ Wtyczka integracyjna Maven.
  2. Stwรณrz Praca w stylu dowolnym lub praca w rurociฤ…gu.
  3. Dodaj mvn clean test jako krok kompilacji.
  4. Po kompilacji skonfiguruj raporty HTML:
    • Katalog raportรณw: test-output
    • Plik indeksu: index.html

Korzyล›ci:

  • Umoลผliwia automatyczne testowanie regresji.
  • Zapewnia zaplanowane testy i trendy trackrรณl.
  • Zapewnia spรณjne wykonywanie testรณw w rรณลผnych ล›rodowiskach.

35) Jaki jest cel @Parameters i czym rรณลผni siฤ™ od @Optional?

Obie adnotacje dotyczฤ… parametryzacji, ale sล‚uลผฤ… rรณลผnym celom.

Cecha @Parameters @Optional
Cel Przekazuje parametry z pliku XML Zapewnia wartoล›ฤ‡ domyล›lnฤ…, jeล›li parametr jest nieobecny
Deklaracja Uลผywany z XML <parameter> Zastosowano metodฤ™ testu wewnฤ™trznego
Zachowanie Wywoล‚uje bล‚ฤ…d, jeล›li brakuje wartoล›ci Uลผywa wartoล›ci zapasowej

Przykล‚ad:

@Test
@Parameters("browser")
public void runTest(@Optional("chrome") String browser) {
    System.out.println("Running on: " + browser);
}

Korzystanie z @Optional zapewnia stabilnoล›ฤ‡ testu gdy konfiguracje XML sฤ… niekompletne.


36) Jak radzisz sobie z zaleลผnoล›ciami testowymi w rรณลผnych klasach? TestNG?

Aby utworzyฤ‡ zaleลผnoล›ci miฤ™dzyklasowe, TestNG pozwala na korzystanie z dependsOnGroups atrybutรณw.

Przykล‚ad:

@Test(groups = "Login")
public void loginTest() { ... }

@Test(groups = "Dashboard", dependsOnGroups = "Login")
public void dashboardTest() { ... }

To podejล›cie pomaga zarzฤ…dzaฤ‡ zaleลผnoล›ci wielomoduล‚owe gdzie kaลผda klasa reprezentuje moduล‚ (Logowanie, Panel, Pล‚atnoล›ci, itd.).

Gwarantuje, ลผe zaleลผne moduล‚y zostanฤ… wykonane tylko wtedy, gdy testy wstฤ™pne zakoล„czฤ… siฤ™ powodzeniem, zachowujฤ…c integralnoล›ฤ‡ testรณw.


37) Czym sฤ… bล‚ฤ™dy konfiguracji w TestNGi jak sobie z nimi radziฤ‡?

Bล‚ฤ™dy konfiguracji wystฤ™pujฤ…, gdy metody instalacji lub demontaลผu sฤ… oznaczone adnotacjami @Before* or @After* zawieล›ฤ‡.

Mogฤ… powodowaฤ‡ testy zaleลผne do pominiฤ™cianawet jeล›li testy te okaลผฤ… siฤ™ poprawne.

Najczฤ™stsze przyczyny:

  • Nieprawidล‚owa inicjalizacja WebDriver.
  • Problemy z konfiguracjฤ… bazy danych lub ล›rodowiska.
  • Nieprawidล‚owa konfiguracja parametrรณw.

Solutions:

  • Zastosowanie prรณbuj zล‚apaฤ‡ bloki w metodach konfiguracji.
  • Aplikuj alwaysRun = true aby zapewniฤ‡ przeprowadzenie czyszczenia pomimo awarii.

Przykล‚ad:

@BeforeMethod(alwaysRun = true)
public void setup() {
    // Setup logic
}

Dziฤ™ki temu masz pewnoล›ฤ‡, ลผe metody demontaลผu nadal bฤ™dฤ… dziaล‚aฤ‡, zachowujฤ…c stabilnoล›ฤ‡ ล›rodowiska testowego.


38) Do czego sล‚uลผฤ… atrybuty invocationCount i threadPoolSize w TestNG?

Te atrybuty pozwalajฤ… powtarzane i rรณwnolegล‚e wykonywanie testรณw tฤ… samฤ… metodฤ….

Przykล‚ad:

@Test(invocationCount = 5, threadPoolSize = 2)
public void loadTest() {
    System.out.println("Running load test...");
}
Atrybut OPIS
invocationCount Liczba uruchomieล„ metody
threadPoolSize Liczba wspรณล‚bieลผnych wฤ…tkรณw

Przypadek uลผycia: Testowanie wydajnoล›ci, weryfikacja stabilnoล›ci lub odtwarzanie niestabilnego zachowania w wielokrotnych przebiegach.


39) Jak uruchamiaฤ‡ tylko nieudane przypadki testowe w TestNG?

Po biegu apartamentowym, TestNG generuje plik o nazwie testng-failed.xml test-output katalogiem.

Moลผna ponownie uruchomiฤ‡ tylko testy zakoล„czone niepowodzeniem, wykonujฤ…c:

java -cp testng.jar org.testng.TestNG test-output/testng-failed.xml

Zalety:

  • Oszczฤ™dza czas, pomijajฤ…cping udane testy.
  • Uล‚atwia debugowanie w duลผych pakietach.
  • Uลผywane powszechnie w procesach CI do szybkich ponownych testรณw.

Moลผna to rรณwnieลผ zintegrowaฤ‡ z Jenkins korzystajฤ…c ze skryptu po kompilacji do ponownych uruchomieล„.


40) Jakie sฤ… ograniczenia TestNG i jak moลผna je zล‚agodziฤ‡?

Pomimo swojej wytrzymaล‚oล›ci, TestNG ma kilka ograniczeล„.

Ograniczenie Strategia ล‚agodzฤ…ca
Zล‚oลผonoล›ฤ‡ konfiguracji XML Uลผyj konfiguracji i konstruktorรณw opartych na adnotacjach
Ograniczone raportowanie natywne Zintegruj ExtentReports lub Allure
Brak wbudowanej kontroli ponawiania prรณb Wdroลผenie IRetryAnalyzer
Obawy dotyczฤ…ce bezpieczeล„stwa wฤ…tkรณw w przypadku przebiegรณw rรณwnolegล‚ych Uลผyj wฤ…tkowo-lokalnych instancji WebDriver
Krzywa uczenia siฤ™ dla poczฤ…tkujฤ…cych Utrzymuj struktury projektรณw oparte na szablonach

Dziฤ™ki odpowiedniemu zaprojektowaniu struktury i stosowaniu najlepszych praktyk ograniczenia te moลผna zminimalizowaฤ‡, zapewniajฤ…c stabilne i ล‚atwe w utrzymaniu rozwiฤ…zania automatyzacji.


41) Jak uลผywasz sล‚uchaczy do rejestrowania i robienia zrzutรณw ekranu w Selenium-TestNG?

Sล‚uchacze w TestNG pomaga monitorowaฤ‡ wykonywanie testรณw i wykonywaฤ‡ czynnoล›ci takie jak rejestrowanie, robienie zrzutรณw ekranu czy dynamiczne raportowanie wynikรณw.

Przykล‚adowa implementacja:

public class ScreenshotListener implements ITestListener {
  @Override
  public void onTestFailure(ITestResult result) {
      WebDriver driver = ((BaseTest) result.getInstance()).getDriver();
      File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
      FileUtils.copyFile(src, new File("screenshots/" + result.getName() + ".png"));
  }
}

Stosowanie:

@Listeners(ScreenshotListener.class)
public class LoginTests extends BaseTest { ... }

Korzyล›ci:

  • Automatyczne wykrywanie awarii.
  • Usprawnia debugowanie dziฤ™ki dowodom wizualnym.
  • Zmniejsza rฤ™cznฤ… pracฤ™ zwiฤ…zanฤ… z prowadzeniem dziennikรณw.

Technika ta jest kluczowa w procesach automatyzacji CI/CD, zwล‚aszcza w przypadku zdalnej diagnostyki nieudanych kompilacji.


42) Jaka jest rรณลผnica miฤ™dzy IReporterem a ITestListenerem w TestNG?

Cecha IReporter ITestListener
Cel Generuje niestandardowe raporty po wykonaniu testu Tracks i reaguje na zdarzenia testowe w czasie wykonywania
Wezwanie Po zakoล„czeniu wszystkich testรณw W trakcie cyklu ลผycia testu (rozpoczฤ™cie, sukces, niepowodzenie)
Wydajnoล›ฤ‡ Raporty HTML/XML/JSON Pliki dziennika, zrzuty ekranu, pulpity nawigacyjne na ลผywo
Wspรณlne zastosowanie Integracja ExtentReports i Allure Rejestrowanie, obsล‚uga bล‚ฤ™dรณw, mechanizmy ponawiania prรณb

Przykล‚ad:

  • Zastosowanie IReporter do budowania kompleksowe raporty po zakoล„czeniu testu.
  • Zastosowanie ITestListener dla rejestrowanie w czasie rzeczywistym lub zrzuty ekranu.

Mogฤ… teลผ byฤ‡ poล‚ฤ…czony do tworzenia kompleksowych systemรณw analityki automatyzacji.


43) Jak przeprowadzasz testy miฤ™dzyprzeglฤ…darkowe przy uลผyciu TestNG Konfiguracja XML?

Testowanie miฤ™dzyprzeglฤ…darkowe zapewnia, ลผe โ€‹โ€‹ta sama funkcjonalnoล›ฤ‡ bฤ™dzie dziaล‚aฤ‡ w rรณลผnych przeglฤ…darkach.

Przykล‚adowa konfiguracja:

<suite name="CrossBrowserSuite" parallel="tests">
  <test name="ChromeTest">
    <parameter name="browser" value="chrome"/>
    <classes><class name="com.test.LoginTest"/></classes>
  </test>
  <test name="FirefoxTest">
    <parameter name="browser" value="firefox"/>
    <classes><class name="com.test.LoginTest"/></classes>
  </test>
</suite>

Java Code:

@Parameters("browser")
@BeforeClass
public void setup(String browser) {
    if(browser.equalsIgnoreCase("chrome"))
        driver = new ChromeDriver();
    else if(browser.equalsIgnoreCase("firefox"))
        driver = new FirefoxDriver();
}

To podejล›cie umoลผliwia rรณwnolegล‚e wykonywanie w wielu przeglฤ…darkach, przyspieszajฤ…c zakres testรณw na rรณลผnych platformach.


44) Jak integrujesz TestNG z Dockerem lub Selenium Siatka?

TestNG bezproblemowo integruje siฤ™ z Zdokeryzowany Selenium Krata aby umoลผliwiฤ‡ rozproszone testowanie rรณwnolegล‚e.

Kroki:

  1. Ustawiaฤ‡ Selenium Siatka w Dockerze uลผycie urzฤ™dnika Selenium obraz:
    docker run -d -p 4444:4444 --name selenium-grid selenium/standalone-chrome
  2. Aktualizacja TestNG Ustawiaฤ‡:
  3. DesiredCapabilities caps = new DesiredCapabilities();
    caps.setBrowserName("chrome");
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), caps);
    
  4. Wykonaj swรณj pakiet za pomocฤ… Jenkins lub rurociฤ…g CI.

Korzyล›ci:

  • umoลผliwia skalowalne testowanie rรณwnolegล‚e.
  • Zmniejsza obciฤ…ลผenie zwiฤ…zane z konfiguracjฤ… ล›rodowiska.
  • Zapewnia spรณjne wykonywanie testรณw w rozproszonych kontenerach.

45) Jaka jest rรณลผnica miฤ™dzy wykonywaniem rรณwnolegล‚ym na poziomie pakietu, testu i metody? TestNG?

Poziom Atrybut rรณwnolegล‚y Zachowanie wykonawcze
Zestaw parallel="suites" Wykonuje wiele pakietรณw jednoczeล›nie
Testowanie parallel="tests" Dziaล‚a <test> blokรณw jednoczeล›nie
Klasa parallel="classes" Uruchamia klasy testowe rรณwnolegle
Metoda wykonania parallel="methods" Wykonuje poszczegรณlne metody testowe rรณwnolegle

Przykล‚ad:

<suite name="ParallelTests" parallel="methods" thread-count="3">
  <test name="SampleTest">
    <classes><class name="com.test.ParallelExample"/></classes>
  </test>
</suite>

Najlepsze praktyki:Zastosowanie parallel="classes" dla stabilnoล›ci w Selenium testy majฤ…ce na celu unikniฤ™cie konfliktรณw wspรณล‚dzielonych sterownikรณw.


46) Jak moลผna udostฤ™pniaฤ‡ dane miฤ™dzy testami bez uลผycia zmiennych globalnych w TestNG?

TestNG zapewnia ITestContext oraz wstrzykiwanie zaleลผnoล›ci do dynamicznego udostฤ™pniania danych.

Przykล‚ad:

@Test
public void storeData(ITestContext context) {
    context.setAttribute("token", "abc123");
}

@Test(dependsOnMethods = "storeData")
public void useData(ITestContext context) {
    String token = (String) context.getAttribute("token");
    System.out.println("Using token: " + token);
}

Pozwala to uniknฤ…ฤ‡ zmiennych statycznych, zapewnia bezpieczeล„stwo wฤ…tkรณw i gwarantuje izolacja danych w testach.


47) Jak przechwytywaฤ‡ i rejestrowaฤ‡ pominiฤ™te testy w TestNG?

Moลผesz przechwyciฤ‡ pominiฤ™te testy za pomocฤ… onTestSkipped() ITestListener berล‚o.

Przykล‚ad:

@Override
public void onTestSkipped(ITestResult result) {
    System.out.println("Skipped Test: " + result.getName());
}

Powody pominiฤ™ciaping:

  • Niepowodzenie testu zaleลผnego.
  • Pominiฤ™cie warunkoweping przez SkipException.
  • Niedostฤ™pnoล›ฤ‡ ล›rodowiska.

Najlepsze praktyki:
Powody i stosy pomijania dziennika tracjest dla tracmoลผliwoล›ฤ‡ wykorzystania w raportach CI lub pulpitach nawigacyjnych.


48) Wyjaล›nij, jak parametryzowaฤ‡ testy REST API za pomocฤ… TestNG i RestAssured.

TestNG'S @DataProvider elegancko integruje siฤ™ z RestAssured do parametryzacji API.

Przykล‚ad:

@DataProvider(name = "apiData")
public Object[][] apiData() {
  return new Object[][] {
    {"https://api.example.com/users/1"},
    {"https://api.example.com/users/2"}
  };
}

@Test(dataProvider = "apiData")
public void testApi(String url) {
  Response response = RestAssured.get(url);
  Assert.assertEquals(response.getStatusCode(), 200);
}

Zalety:

  • Wykonuje to samo wywoล‚anie API dla wielu punktรณw koล„cowych lub ล‚adunkรณw.
  • Uล‚atwia testowanie regresyjne interfejsรณw API ze zmiennymi zestawami danych wejล›ciowych.
  • Bezproblemowa integracja z narzฤ™dziami CI i raportami.

49) Jak tworzyฤ‡ niestandardowe adnotacje w TestNG dla wzorcรณw testowych wielokrotnego uลผytku?

Niestandardowe adnotacje umoลผliwiajฤ… standaryzacjฤ™ powtarzalnych konfiguracji testรณw lub walidacji.

Przykล‚ad:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SmokeTest {
  String description() default "Smoke Test";
}

Stosowanie:

@SmokeTest(description="Validating Login Functionality")
@Test
public void loginTest() { ... }

W poล‚ฤ…czeniu z refleksjฤ… moลผna dynamicznie odczytywaฤ‡ te adnotacje w celu grupowania testรณw lub sterowania wykonywaniem warunkowym.

Ta technika jest powszechnie stosowana w metaprogramowanie ramowe do tworzenia samodokumentujฤ…cych testรณw.


50) Jak moลผna poล‚ฤ…czyฤ‡ Cucumber oraz TestNG dla hybrydowych struktur testowych?

TestNG moลผe dziaล‚aฤ‡ jako biegacz testowy dla Cucumber Scenariusze BDD oferujฤ…ce zaawansowane raportowanie i paralelizacjฤ™.

Przykล‚adowy biegacz:

@CucumberOptions(
  features = "src/test/resources/features",
  glue = "stepDefinitions",
  plugin = {"pretty", "html:target/cucumber-report.html"}
)
public class RunCucumberTest extends AbstractTestNGCucumberTests { }

Zalety:

  • Leverage TestNG'S adnotacje, sล‚uchacze i raportowanie.
  • podpory rรณwnolegล‚e wykonywanie funkcji.
  • Integruje siฤ™ z Allure oraz ExtentReports z ล‚atwoล›ciฤ….

To hybrydowe podejล›cie ล‚ฤ…czy Czytelnoล›ฤ‡ BDD w TestNG elastycznoล›ฤ‡, idealny dla ล›rodowisk klasy korporacyjnej.


๐Ÿ” Gรณra TestNG Pytania do wywiadu z uwzglฤ™dnieniem scenariuszy z ลผycia wziฤ™tych i strategicznych odpowiedzi

Poniลผej znajduje siฤ™ 10 realistycznych, istotnych dla danej dziedziny TestNG pytania podczas rozmowy kwalifikacyjnej wraz z jasnymi oczekiwaniami i przykล‚adowymi odpowiedziami.

1) Czy moลผesz wyjaล›niฤ‡ najwaลผniejsze zalety korzystania z TestNG w porรณwnaniu do JUnit?

Oczekuje siฤ™ od kandydata: Wykazaฤ‡ siฤ™ zrozumieniem TestNGulepszone funkcje i dlaczego sฤ… czฤ™sto preferowane w automatyzacji przedsiฤ™biorstwa.

Przykล‚adowa odpowiedลบ: "TestNG zapewnia szereg korzyล›ci, takich jak elastyczna konfiguracja testรณw, obsล‚uga rรณwnolegล‚ego wykonywania testรณw, zaleลผne metody testowania, testowanie oparte na danych z wykorzystaniem DataProviders oraz wbudowane raportowanie. Te moลผliwoล›ci sprawiajฤ…, TestNG bardziej wydajne w przypadku zล‚oลผonych struktur automatyzacji wymagajฤ…cych skalowalnoล›ci.โ€


2) Jak uลผywasz TestNG adnotacje do kontrolowania przepล‚ywu wykonywania testรณw?

Oczekuje siฤ™ od kandydata: Wiedza na temat celu i kolejnoล›ci adnotacji.

Przykล‚adowa odpowiedลบ: "TestNG Oferuje adnotacje takie jak @BeforeSuite, @BeforeClass, @BeforeMethod, @Test i odpowiadajฤ…ce im adnotacje do usuwania. Umoลผliwiajฤ… one uporzฤ…dkowanฤ… organizacjฤ™ konfiguracji i czyszczenia testรณw. Na przykล‚ad adnotacja @BeforeMethod jest wykonywana przed kaลผdฤ… metodฤ… testowฤ…, co jest przydatne do inicjalizacji stanu przeglฤ…darki.


3) Opisz wymagajฤ…cy projekt automatyzacji, w ktรณrym: TestNG odegraล‚ kluczowฤ… rolฤ™.

Oczekuje siฤ™ od kandydata: Rzeczywiste doล›wiadczenie projektowe i umiejฤ™tnoล›ฤ‡ formuล‚owania rozwiฤ…zaล„ problemรณw.

Przykล‚adowa odpowiedลบ: โ€žNa moim poprzednim stanowisku pracowaล‚em nad projektem, ktรณry wymagaล‚ przeprowadzenia obszernych testรณw regresyjnych w wielu ล›rodowiskach. TestNGrรณwnolegล‚e wykonywanie i grupaping โ€žfunkcje te umoลผliwiล‚y zespoล‚owi jednoczesne uruchamianie kluczowych pakietรณw, co znacznie skrรณciล‚o czas realizacji i pozwoliล‚o zachowaฤ‡ niezawodnoล›ฤ‡โ€.


4) Jak to zrobiฤ‡ TestNG grupy pomagajฤ… w organizacji i efektywnym przeprowadzaniu testรณw?

Oczekuje siฤ™ od kandydata: Zrozumienie grupyping, w tym mechanizmy uwzglฤ™dniania/wykluczania.

Przykล‚adowa odpowiedลบ: โ€žGrupy w TestNG Umoลผliwiajฤ… kategoryzacjฤ™ przypadkรณw testowych, takich jak testy dymne, regresyjne i integracyjne. Korzystajฤ…c z pliku testng.xml, mogฤ™ selektywnie uruchamiaฤ‡ grupy, wykluczaฤ‡ testy niestabilne i zarzฤ…dzaฤ‡ rรณลผnymi zestawami testรณw bez modyfikowania samego kodu.


5) Opisz sytuacjฤ™, w ktรณrej musiaล‚eล› debugowaฤ‡ bล‚ฤ…d TestNG testy. Jakie byล‚o Twoje podejล›cie?

Oczekuje siฤ™ od kandydata: Umiejฤ™tnoล›ฤ‡ krytycznego myล›lenia i rozwiฤ…zywania problemรณw.

Przykล‚adowa odpowiedลบ: โ€žNa poprzednim stanowisku spotkaล‚em siฤ™ z szeregiem niedociฤ…gniฤ™ฤ‡ TestNG Testy, ktรณre pozornie przechodziล‚y lokalnie, ale nie przechodziล‚y w trybie ciฤ…gล‚ej integracji (CI). Wล‚ฤ…czyล‚em szczegรณล‚owe logowanie, sprawdziล‚em kolejnoล›ฤ‡ wykonywania i odkryล‚em, ลผe zasรณb wspรณล‚dzielony nie byล‚ resetowany miฤ™dzy testami. Nastฤ™pnie wdroลผyล‚em odpowiednie kroki demontaลผu za pomocฤ… @AfterMethod, aby zapewniฤ‡ izolacjฤ™ testรณw.


6) Jak wdroลผyฤ‡ testowanie oparte na danych, uลผywajฤ…c TestNG?

Oczekuje siฤ™ od kandydata: Zrozumienie dostawcรณw danych i przypadkรณw uลผycia.

Przykล‚adowa odpowiedลบ: โ€žTworzฤ™ metodฤ™ @DataProvider, ktรณra zwraca dane w tablicach obiektรณw, a nastฤ™pnie wiฤ…ลผฤ™ je z metodฤ… @Test za pomocฤ… atrybutu dataProvider. Pozwala to na wielokrotne iteracje tego samego testu z rรณลผnymi zestawami danych wejล›ciowych, co jest przydatne do walidacji przesล‚anych formularzy lub wariantรณw danych APIโ€.


7) Jak zarzฤ…dzasz zaleลผnoล›ciami testowymi w TestNG?

Oczekuje siฤ™ od kandydata: Prawidล‚owe uลผycie dependsOnMethods lub dependsOnGroups.

Przykล‚adowa odpowiedลบ: "TestNG pozwala na zaleลผnoล›ci testowe poprzez atrybuty dependOnMethods i dependOnGroups. Uลผywam zaleลผnoล›ci, gdy test musi zostaฤ‡ wykonany dopiero po pomyล›lnym zakoล„czeniu innego, na przykล‚ad gdy weryfikacja zamรณwienia nastฤ™puje dopiero po jego utworzeniu.


8) Opisz, jak korzystaล‚eล› TestNG z narzฤ™dziami ciฤ…gล‚ej integracji.

Oczekuje siฤ™ od kandydata: Praktyczne doล›wiadczenie w zakresie automatyzacji procesรณw.

Przykล‚adowa odpowiedลบ: โ€žW mojej poprzedniej pracy integrowaล‚em TestNG w Jenkins konfigurujฤ…c kompilacjฤ™ Maven do generowania TestNG Raporty HTML i XML. Jenkins Nastฤ™pnie archiwizowano raporty i wyล›wietlano wyniki po kaลผdym cyklu kompilacji. Ta integracja pomogล‚a zespoล‚owi track szybko reaguje na awarie i utrzymuje stabilnoล›ฤ‡ wydania.โ€


9) Opowiedz mi o sytuacji, w ktรณrej musiaล‚eล› pracowaฤ‡ pod presjฤ… terminรณw, jednoczeล›nie zarzฤ…dzajฤ…c wieloma zadaniami automatyzacyjnymi.

Oczekuje siฤ™ od kandydata: Zarzฤ…dzanie czasem i umiejฤ™tnoล›ฤ‡ ustalania priorytetรณw.

Przykล‚adowa odpowiedลบ: โ€žNa moim ostatnim stanowisku musiaล‚em aktualizowaฤ‡ istniejฤ…ce TestNG Zestawy testรณw, a jednoczeล›nie tworzyล‚em nowe na potrzeby nadchodzฤ…cej wersji. Priorytetyzowaล‚em zadania w oparciu o wpล‚yw na biznes, w pierwszej kolejnoล›ci automatyzowaล‚em obszary o najwyลผszym ryzyku i wykorzystywaล‚em TestNG grouping aby wyodrฤ™bniฤ‡ ukoล„czone sekcje do wczesnego przeglฤ…du. Zapewniล‚o to terminowฤ… dostawฤ™ bez uszczerbku dla jakoล›ci.โ€


10) Jak zaprojektowaฤ‡ skalowalnฤ… TestNG framework dla duลผej aplikacji?

Oczekuje siฤ™ od kandydata: Archizrozumienie struktur, wzorce i najlepsze praktyki.

Przykล‚adowa odpowiedลบ: โ€žZaprojektowaล‚bym moduล‚owฤ… strukturฤ™ wykorzystujฤ…cฤ… Page Object Model, zintegrowaล‚bym TestNG do zarzฤ…dzania wykonywaniem i wykorzystania DataProviders w scenariuszach opartych na danych. Skonfigurowaล‚bym rรณwnieลผ wykonywanie rรณwnolegล‚e, scentralizowaล‚ narzฤ™dzia i ulokowaล‚ ustawienia konfiguracji na zewnฤ…trz, aby struktura pozostaล‚a skalowalna i ล‚atwa w utrzymaniu w miarฤ™ rozwoju aplikacji.

Podsumuj ten post nastฤ™pujฤ…co: