Top 50 TestNG Pytania i odpowiedzi do wywiadu (2026)
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
@DataProvideradnotacja. - 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:
- Korzystanie z
@Parametersadnotacja z XML: - Korzystanie z
@DataProvider:
<parameter name="browser" value="chrome"/>
@Test
@Parameters("browser")
public void launchBrowser(String browser) { ... }
@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:
- Z IDE (Eclipse/IntelliJ): Kliknij prawym przyciskiem myszy klasฤ lub
XML fileโRun asโTestNG Test. - Z poziomu wiersza poleceล:
java -cp "path\testng.jar;bin" org.testng.TestNG testng.xml - Korzystanie z narzฤdzi do kompilacji:
- Maven: Konfigurowanie
surefire-plugininpom.xml. - Gradle: Zastosowanie
testngzaleลผnoลci i konfiguracja zadaล.
- Maven: Konfigurowanie
- 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:
testsclassesmethodsinstances
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:
- Raport HTML (
test-output/index.html) โ Podsumowuje testy zaliczone, niezaliczone i pominiฤte. - 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ล:
- Twarde asercje (klasa Assert):
W przypadku wystฤ pienia bลฤdu natychmiast zatrzymuje wykonywanie testu. - Miฤkkie potwierdzenia (klasa SoftAssert):
Kontynuuje wykonywanie nawet w przypadku niepowodzenia, raportujฤ c wszystkie problemy na koลcu. - 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.
Assert.assertEquals(actual, expected); Assert.assertTrue(condition);
SoftAssert soft = new SoftAssert();
soft.assertEquals(actual, expected);
soft.assertAll();
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:
- Zastosowanie DescriptNazewnictwo ive: Nazywaj testy w oparciu o zachowanie, nie implementacjฤ.
- Grupa dลบwigniping: Utwรณrz logiczne grupy testowe (Dym, Regresja).
- Unikaj kodowania na staลe: Uลผyj parametrรณw lub plikรณw wลaลciwoลci dla danych testowych.
- Minimalizuj zaleลผnoลci: W miarฤ moลผliwoลci staraj siฤ zachowaฤ niezaleลผnoลฤ przypadkรณw testowych.
- Centralizacja konfiguracji: Zastosowanie
testng.xmldo konfiguracji pakietu. - Zintegrowane raportowanie: Uลผyj sลuchaczy lub narzฤdzi innych firm, np. ExtentReports.
- 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:
- Korzystanie z
dependsOnMethods: - Korzystanie z sekwencji metod XML:
@Test
public void login() { ... }
@Test(dependsOnMethods = "login")
public void verifyDashboard() { ... }
<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:
- Zastosowanie POI Apache or JExcel aby odczytaฤ dane z Excela.
- Wลรณลผ to do
@DataProviderMetoda.
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:
- Zainstalowaฤ Wtyczka integracyjna Maven.
- Stwรณrz Praca w stylu dowolnym lub praca w rurociฤ gu.
- Dodaj
mvn clean testjako krok kompilacji. - Po kompilacji skonfiguruj raporty HTML:
- Katalog raportรณw:
test-output - Plik indeksu:
index.html
- Katalog raportรณw:
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 = trueaby 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
IReporterdo budowania kompleksowe raporty po zakoลczeniu testu. - Zastosowanie
ITestListenerdla 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:
- Ustawiaฤ Selenium Siatka w Dockerze uลผycie urzฤdnika Selenium obraz:
docker run -d -p 4444:4444 --name selenium-grid selenium/standalone-chrome
- Aktualizacja TestNG Ustawiaฤ:
- Wykonaj swรณj pakiet za pomocฤ Jenkins lub rurociฤ g CI.
DesiredCapabilities caps = new DesiredCapabilities();
caps.setBrowserName("chrome");
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), caps);
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.

