Top 50 TestNG Pitanja i odgovori za intervju (2026.)

vrh TestNG Intervjuirajte pitanja i odgovore

Priprema za TestNG intervju? Vrijeme je da razmislite o pitanjima koja pokazuju vaše snage. Čvrst TestNG Temelj intervjua otkriva dubinu, samopouzdanje i spremnost koje cijene timovi za zapošljavanje.

Mogućnosti u ovom području obuhvaćaju rast automatizacije, razvoj okvira i praktične aplikacije za testiranje koje zahtijevaju tehničko i profesionalno iskustvo. Rad u ovom području zahtijeva stručnost u domeni, analitičke vještine i fleksibilan skup vještina koji pomaže početnicima, srednjim i višim stručnjacima da shvate uobičajena pitanja i odgovore na tehnička, osnovna i napredna pitanja.
Čitaj više…

👉 Besplatno preuzimanje PDF-a: TestNG Pitanja i odgovori za intervju

vrh TestNG Intervjuirajte pitanja i odgovore

1) Što je TestNG i zašto se koristi u automatiziranom testiranju?

TestNG (Test Next Generation) je okvir za testiranje inspiriran JUnit i NUnit, ali poboljšan naprednim mogućnostima kao što su grupiranje, sekvenciranje, parametrizacija i upravljanje ovisnostima. Primarno se koristi u automatiziranom testiranju za pojednostavljenje izvršavanja testova, poboljšanje organizacije testova i generiranje detaljnih HTML i XML izvješća.

Ključne prednosti od TestNG uključuju:

  • Podržava paralelno izvršavanje testova, smanjujući ukupno vrijeme izvođenja.
  • Pruža bilješke koji učinkovito kontroliraju tijek testiranja.
  • Ponude testiranje temeljeno na podacima kroz @DataProvider komentarima.
  • generira prilagodljiva izvješća za bolje otklanjanje pogrešaka.

Na primjer, TestNG Omogućuje vam neovisno izvršavanje grupa za testiranje dima, regresije i integracije bez mijenjanja testnog koda, nudeći fleksibilnost i skalabilnost u velikim automatizacijskim paketima.


2) Objasnite TestNG životni ciklus s anotacijama i njihovim redoslijedom izvršavanja.

The TestNG Životni ciklus definira kako se testovi inicijaliziraju, izvršavaju i završavaju. Kontrolira se putem anotacija koje pružaju strukturu i jasnoću toku testiranja.

pribilješka Description Nalog za izvršenje
@BeforeSuite Izvodi se prije svih testova u paketu 1
@BeforeTest Izvršava se prije <test> oznaka u XML-u 2
@BeforeClass Izvršava se prije prve metode u trenutnoj klasi 3
@BeforeMethod Izvršava se prije svake ispitne metode 4
@Test Sadrži stvarnu logiku testiranja 5
@AfterMethod Izvodi se nakon svake metode testiranja 6
@AfterClass Izvršava se nakon svih metoda u klasi 7
@AfterTest Trči nakon <test> oznaka u XML-u 8
@AfterSuite Izvršava se nakon svih testova u paketu 9

Ovakav strukturirani redoslijed osigurava predvidljivo postavljanje i rastavljanje testiranja, što je ključno za održavanje neovisnosti testiranja.


3) Kako je TestNG drugačiji od JUnit?

Iako se oba okvira koriste za jedinično testiranje, TestNG pruža robusniju konfiguraciju i mogućnosti paralelnog izvršavanja.

svojstvo JUnit TestNG
Paralelno izvođenje Ograničena podrška Potpuna podrška
Bilješke Manje (@Before, @After) Bogatiji (@BeforeSuite, @DataProvider)
Upravljanje ovisnostima Nije dostupno Dostupno putem dependsOnMethods
Grupiranje Nije podržano Podržano korištenjem groups
Parametriranje Kroz vanjske trkače Ugrađeno putem XML-a ili @DataProvider

U sažetku, TestNG je poželjna za automatizirano testiranje na razini poduzeća i integraciju s alatima poput Selenium, dok JUnit idealan je za jednostavnije jedinične testove.


4) Što su TestNG anotacije i kako su korisne?

Bilješke u TestNG definiran struktura i ponašanje metoda ispitivanjaEliminiraju potrebu za složenom XML konfiguracijom pružajući deklarativnu kontrolu testiranja izravno u kodu.

Često korištene napomene uključuju:

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

Primjer:

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

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

To pomaže programerima da logički organiziraju izvršavanje testova, osiguravajući da se postavljanje, izvršavanje testa i rastavljanje odvijaju definiranim redoslijedom.


5) Objasnite koncept grupiranja u TestNG.

Grupiranje u TestNG omogućuje logičku kategorizaciju testova u manje, upravljive skupove kao što su „Dim“, „Regresija“ ili „Razumno stanje“.

Primjer:

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

Svoj XML paket možete konfigurirati za pokretanje određenih grupa:

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

Prednosti:

  • Olakšava selektivno izvršavanje testnih slučajeva.
  • Povećava fleksibilnost u CI/CD cjevovodima.
  • Štedi vrijeme izvršavanja tijekom inkrementalnih izrada.

6) Kako se može postići parametrizacija u TestNG?

Parametrizacija omogućuje testiranje vođeno podacima, što omogućuje izvođenje testova s ​​više ulaznih skupova podataka. TestNG podržava dvije primarne metode:

  1. Korištenje @Parameters anotacija s XML-om:
  2. <parameter name="browser" value="chrome"/>
    @Test
    @Parameters("browser")
    public void launchBrowser(String browser) { ... }
    
  3. Korištenje @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) { ... }
    

Ova fleksibilnost olakšava održavanje i izvršavanje velikih skupova testova u različitim okruženjima ili konfiguracijama.


7) Što su ovisnosti u TestNG i kako se njima upravlja?

Ovisnosti u TestNG kontrolirati redoslijed izvršavanja testova na temelju rezultata drugih testova pomoću dependsOnMethods or dependsOnGroups atributa.

Primjer:

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

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

Ako zavisna metoda ne uspije, sljedeći test se automatski preskače.

Ovaj mehanizam sprječava izvršavanje neispravnih testova i pomaže u održavanju logički test integritetaPosebno je korisno za višekoračne funkcionalne tokove poput prijave → izvršavanja radnje → provjere rezultata.


8) Koji su različiti načini izvršenja TestNG testovi?

TestNG Testovi se mogu izvršavati na nekoliko fleksibilnih načina ovisno o postavkama testiranja:

  1. Iz IDE-a (Eclipse/IntelliJ): Desnim klikom miša na razred ili XML fileRun asTestNG Test.
  2. Iz naredbenog retka: java -cp "path\testng.jar;bin" org.testng.TestNG testng.xml
  3. Korištenje alata za izgradnju:
    • Maven: konfigurirati surefire-plugin in pom.xml.
    • Gradle: Koristiti testng ovisnost i konfiguracija zadatka.
  4. Kroz CI/CD cjevovode: Integrirano s Jenkins ili GitHub Actions za automatizirano izvršavanje.

Ova raznolikost osigurava kompatibilnost između razvojnih, testnih i produkcijskih okruženja.


9) Što su TestNG slušatelji i zašto su oni važni?

Slušatelji unutra TestNG omogućiti kuke za prilagođavanje ponašanja testa praćenjem događaja izvršavanja testa kao što su početak, uspjeh, neuspjeh ili preskakanje.

Uobičajeni slušatelji:

  • ITestListenerPrati događaje na razini metode testiranja.
  • ISuiteListener: Nadgleda događaje na razini apartmana.
  • IReporter: Generira prilagođena izvješća.

Primjer:

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

Slušači se često koriste za uzimanje snimke zaslona pri neuspjehu, generiranje prilagođeni zapisnici, ili integracija s alatima za izvještavanje poput Allurea ili ExtentReportsa.


10) Koje su prednosti i nedostaci korištenja TestNG?

Aspekt Prednosti Nedostaci
Fleksibilnost Podržava grupiranje, ovisnost i paralelno izvršavanje Složeno postavljanje XML-a za velike pakete
Izvještavanje Pruža detaljna HTML i XML izvješća Ograničena prilagodba bez slušatelja
Integracija Besprijekorno radi s Selenium i CI/CD alate Nešto viša krivulja učenja
Parametriranje Ugrađena podrška za testiranje temeljeno na podacima Zahtijeva održavanje za velike skupove podataka

Sve u svemu, TestNG je robustan i fleksibilan okvir pogodan za moderna okruženja za automatizirano testiranje unatoč malim troškovima konfiguracije.


11) Kako možete odrediti prioritete testnih slučajeva u TestNG?

TestNG pruža priority atribut u @Test anotacija za definiranje redoslijeda kojim bi se metode testiranja trebale izvršavati. Testovi s nižim vrijednostima prioriteta izvršavaju se prvi.

Primjer:

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

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

Ako nije naveden prioritet, zadana vrijednost je 0, a metode se izvršavaju abecednim redom.

Najbolja vježba: Koristite vrijednosti prioriteta štedljivo. Prekomjerna upotreba može učiniti redoslijed testiranja krutim. Za složene tokove, upravljanje ovisnostima (dependsOnMethods) je održivije od stroge prioritizacije.


12) Objasnite koncept i upotrebu paralelnog izvršavanja u TestNG.

Paralelno izvršavanje u TestNG omogućuje istovremeno izvođenje više testova, klasa ili metoda, značajno smanjujući ukupno vrijeme izvršavanja.

Ovu značajku možete omogućiti u testng.xml Datoteka:

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

Podržani paralelni načini rada:

  • tests
  • classes
  • methods
  • instances

Prednosti:

  • Brži ciklus povratnih informacija.
  • Učinkovito korištenje višejezgrenih procesora.
  • Skalabilnost za velike automatizacijske pakete.

Međutim, osigurajte sigurnost niti pri korištenju dijeljenih resursa poput WebDrivera ili veza s bazom podataka.


13) Što su pružatelji podataka u TestNGPo čemu se razlikuju od parametara?

@DataProvider omogućuje testiranje temeljeno na podacima pružanjem metoda ispitivanja s više skupova podataka.

Primjer:

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

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

Razlika između @Parameters i @DataProvider:

svojstvo @Parameters @DataProvider
Izvor podataka XML datoteka Java način
Tip podataka Jedan skup podataka Više skupova podataka
Fleksibilnost Less visok
Koristite slučaj Varijable okoline Ponovljeni testovi temeljeni na podacima

Stoga, @DataProvider je poželjnije prilikom izvođenja jednog testa s više skupova podataka, kao što je provjera prijave s više vjerodajnica.


14) Kako možete onemogućiti ili preskočiti test u TestNG?

Test možete onemogućiti u TestNG pomoću enabled atributom ili njegovim programskim preskakanjem.

1. koristeći enabled = false:

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

2. Preskakanje tijekom izvođenja pomoću SkipException:

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

Onemogućavanje je korisno za privremeno deaktiviranje nestabilne ili nepotpune testove bez brisanja. Preskakanje je vrijedno za uvjeti izvođenja, poput preskakanja testova za nepodržane preglednike.


15) Koja je uloga datoteke testng.xml i koje su njezine glavne komponente?

The testng.xml datoteka je konfiguracijska okosnica TestNGDefinira testne pakete, testne grupe, parametre i postavke paralelnog izvršavanja.

Primjer strukture:

<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>

Glavne komponente:

  • <suite> – Definira cijeli apartman.
  • <test> – Predstavlja testni blok.
  • <classes> – Navodi ispitne klase.
  • <methods> – Filtrira specifične metode ispitivanja.
  • <parameter> – Pruža globalne parametre ili parametre na razini testiranja.

XML datoteka pruža centralizirana kontrola prekomjerno izvršavanje bez promjene koda.


16) Kako možete generirati izvješća u TestNG?

TestNG automatski generira dvije vrste izvješća:

  1. HTML izvješće (test-output/index.html) – Sažima položene, neuspješne i preskočene testove.
  2. XML izvješće – Koristi se za integraciju s CI/CD alatima.

Za napredno izvještavanje, TestNG integrira se sa:

  • Izvješća o opsegu – Nudi grafičke nadzorne ploče i detaljne zapise.
  • Izvješća Allurea – Pruža vizualnu analitiku s koracima testiranja, snimkama zaslona i zapisnicima.

Primjer integracije:

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

Ova izvješća su ključna za praćenje trendova i prepoznavanje slabih područja u pokrivenosti testiranjem.


17) U čemu su tvornice? TestNG, i kako rade?

Tvornice u TestNG koriste se za stvaranje dinamičke instance testnih klasaOmogućuju parametrizirano instanciranje klasa prije pokretanja testova.

Primjer:

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);
  }
}

Prednosti:

  • omogućuje stvaranje parametriziranih objekata.
  • Idealno za testiranje na više preglednika i izvršavanje u više okruženja.
    Tvornice nadopunjuju DataProvidere kada su vam potrebne različite konfiguracije objekata, a ne samo varijacije podataka na razini metode.

18) Kako možete koristiti tvrdnje u TestNG?

Tvrđenja se koriste za validaciju očekivanih naspram stvarnih rezultata unutar metoda ispitivanja.

Vrste tvrdnji:

  1. Teške tvrdnje (klasa tvrdnji):
    Zaustavlja izvršavanje testa odmah nakon neuspjeha.
  2. Assert.assertEquals(actual, expected);
    Assert.assertTrue(condition);
    
  3. Meke tvrdnje (klasa SoftAssert):
    Nastavlja izvršavanje čak i nakon neuspjeha, prijavljujući sve probleme na kraju.
  4. SoftAssert soft = new SoftAssert();
        soft.assertEquals(actual, expected);
        soft.assertAll();
    
  5. Kada koristiti:
    • Koristite teške tvrdnje za kritička validacija kao uspješna prijava.
    • Koristite meke tvrdnje za višestruke provjere unutar jedne metode ispitivanja.

19) Objasnite razliku između @BeforeMethod i @BeforeClass u TestNG.

Aspekt @BeforeMethod @BeforeClass
Izvršenje Izvodi prije svakog metoda ispitivanja Izvodi jednom prije bilo koja metoda u klasi
Djelokrug Po metodi ispitivanja Po ispitnom razredu
Uobičajena upotreba Inicijalizacija preglednika prije svakog testa Jednokratno učitavanje konfiguracije ili postavki preglednika

Primjer:

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

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

Koristiti @BeforeMethod kada svaki test zahtijeva čisto okruženje i @BeforeClass za teške zadatke inicijalizacije koji se mogu ponovno koristiti.


20) Kako se TestNG podržava injektiranje ovisnosti i koji su njegovi slučajevi upotrebe?

TestNG podržava injekcija ovisnosti putem ugrađenog ubrizgavanja konteksta i konfiguracijskih objekata kao što su ITestContext, XmlTest, ili Method.

Primjer:

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

Upotrijebite slučajeve:

  • Dinamičko dohvaćanje parametara testa.
  • Pristup informacijama o konfiguraciji poput naziva paketa ili postavki paralelnog izvršavanja.
  • Povećanje fleksibilnosti testiranja bez ovisnosti o tvrdom kodiranju.

Ubrizgavanje ovisnosti omogućuje programerima da pisati modularne, kontekstualno svjesne testove koje se dinamički prilagođavaju promjenama u okolini.


21) Koja je razlika između @Factory i @DataProvider u TestNG?

Oboje @Factory i @DataProvider pomažu s parametrizacijom, ali rade na različite razine u testnoj arhitekturi.

svojstvo @Factory @DataProvider
Djelokrug Razina razreda Razina metode
Svrha Stvara više instanci klase s različitim podacima Pruža podatke jednoj metodi ispitivanja
Izvršenje Izvršava cijelu klasu za svaku instancu Izvršava jednu metodu više puta
Idealan slučaj upotrebe Testiranje u više preglednika ili okruženja Funkcionalno testiranje temeljeno na podacima

Primjer:

  • Tvornica: Pokreće cijelu klasu po vrsti preglednika.
  • Davatelj podataka: Pokreće jednu metodu testiranja s više skupova podataka.

Koristiti @Factory kada se sama instancacija objekta mijenja i @DataProvider za varijaciju funkcionalnog ulaza unutar iste instance objekta.


22) Kako možete automatski ponovno pokušati neuspješne testne slučajeve u TestNG?

TestNG pruža mehanizam za ponovno pokretanje neuspjelih testnih slučajeva pomoću IRetryAnalyzer sučelje.

Primjer implementacije:

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

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

Upotreba:

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

Prednosti:

  • Smanjuje ljuštenje u CI cjevovodima.
  • Rješava privremene probleme s mrežom ili okruženjem.

Najbolja vježba: Kombinirajte logiku ponovnog pokušaja s odgovarajućim zapisivanjem i snimkama zaslona za otklanjanje pogrešaka u povremenim greškama.


23) Čemu služi ITestContext u TestNG?

ITestContext osigurava kontekstualne informacije o izvođenju testa, uključujući naziv paketa, naziv testa, izlazni direktorij i parametre.

Primjer:

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

Ključne metode:

  • getSuite() – Dohvaća informacije na razini paketa.
  • getName() – Vraća naziv testa.
  • setAttribute() / getAttribute() – Dijeljenje podataka između testova.

Omogućuje dijeljenje podataka između metoda ili klasa testiranja i omogućuje dinamičko izvještavanje i evidentiranje.


24) Kako možete stvoriti ovisnost između testnih grupa u TestNG?

Međugrupne ovisnosti možete definirati pomoću dependsOnGroups atribut u @Test komentarima.

Primjer:

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

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

Time se osigurava da verifyProfile grupa se izvodi samo ako su svi testovi u Login uspješno prošla grupa.

Posebno je korisno u integracijsko testiranje, gdje moduli ovise o uspješnom izvršavanju drugih (npr. prijava → profil → tok odjave).


25) Kako možete zanemariti određene metode ispitivanja u TestNG XML datoteka?

Možete eksplicitno isključi metode unutar klase u XML datoteci paketa pomoću <exclude> oznake.

Primjer:

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

To omogućuje testerima da privremeno onemogućite određene metode bez mijenjanja Java izvorni kod — koristan u velikim paketima gdje je potrebno dinamičko uključivanje ili isključivanje na temelju ciklusa izdanja ili prioriteta sprinta.


26) Kako mogu TestNG biti integriran s Selenium WebDriver?

TestNG i Selenium čine moćnu kombinaciju za automatizaciju korisničkog sučelja.

Tipična postavka integracije uključuje organiziranje testova pomoću anotacija, upravljanje postavljanjem/rastavljanjem i pokretanje testova putem XML ili CI alata.

Primjer:

@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();
}

Prednosti integracije:

  • omogućuje paralelno testiranje preglednika.
  • Olakšava grupiranje testova i izvještavanje.
  • Besprijekorno radi s CI/CD cjevovodi poput Jenkinsa ili GitHub Actionsa.

27) Koje su neke najbolje prakse pri korištenju TestNG u velikim automatizacijskim okvirima?

Najbolje prakse:

  1. Koristiti DescriptImenovanje: Imenujte testove na temelju ponašanja, a ne implementacije.
  2. Grupiranje poluge: Stvorite logičke testne grupe (Dim, Regresija).
  3. Izbjegavajte tvrdo kodiranje: Za testne podatke koristite parametre ili datoteke svojstava.
  4. Minimizirajte ovisnosti: Kad god je to moguće, neka testni slučajevi budu neovisni.
  5. Centraliziraj konfiguraciju: Koristiti testng.xml za postavljanje apartmana.
  6. Integrirajte izvještavanje: Koristite slušače ili alate trećih strana poput ExtentReportsa.
  7. Oprezno koristite logiku ponovnog pokušaja: Izbjegavajte maskiranje stvarnih nedostataka.

Slijeđenje ovoga osigurava skalabilnost, održivost i čitljivost u automatizaciji na razini poduzeća.


28) Koja je razlika između @BeforeTest i @BeforeSuite u TestNG?

svojstvo @BeforeTest @BeforeSuite
Djelokrug Pokreće se prije svakog <test> oznaka u XML-u Pokreće se jednom prije cijelog paketa
Frekvencija Više puta (ako je više <test> blokovi) Samo jednom po apartmanu
Uobičajena upotreba Inicijaliziraj konfiguraciju na razini testiranja Postavljanje globalnih resursa

Primjer:

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

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

Koristiti @BeforeSuite za globalne konfiguracije (npr. veza s bazom podataka) i @BeforeTest za inicijalizacije specifične za testiranje.


29) Može TestNG koristiti za testiranje API-ja? Kako?

Da. TestNG može se učinkovito koristiti za API testiranje integracijom s HTTP klijentskim bibliotekama kao što su Budite sigurni or HttpClient.

Primjer:

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

Prednosti:

  • omogućuje validacija temeljena na tvrdnjama odgovora.
  • Podržava parametrizacija i testiranje temeljeno na podacima za više krajnjih točaka.
  • generira strukturirana izvješća za REST API validacije.

Kombinacijom TestNG i RestAssured, testeri mogu održavati jedinstveni okvir za automatizaciju za testiranje korisničkog sučelja i API-ja.


30) Kako se prosljeđuju parametri iz naredbenog retka u TestNG?

XML parametre možete nadjačati tijekom izvođenja prosljeđivanjem sistemskih svojstava pomoću -D zastava.

Primjer naredbe:

mvn test -Dbrowser=chrome -Denv=staging

Primjer koda:

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

Ovo omogućuje dinamički odabir okruženja u CI/CD cjevovodima bez promjene konfiguracijskih datoteka, što povećava fleksibilnost testiranja.


31) Kako možete kontrolirati redoslijed izvršavanja testova u TestNG bez korištenja prioriteta?

Umjesto da koristi priority, TestNG omogućuje kontrolu putem ovisnosti i Poredak XML metoda.

Metode:

  1. Korištenje dependsOnMethods:
  2. @Test
    public void login() { ... }
    
    @Test(dependsOnMethods = "login")
    public void verifyDashboard() { ... }
    
  3. Korištenje XML sekvence metoda:
  4. <classes>
      <class name="com.test.LoginTests">
        <methods>
          <include name="login"/>
          <include name="verifyDashboard"/>
        </methods>
      </class>
    </classes>
    

Najbolja vježba: Za složene tokove preferirajte logičke ovisnosti umjesto statičnih prioriteta, osiguravajući robusne i održive testne pakete.


32) Kako možete izvršiti određene metode testiranja iz naredbenog retka u TestNG?

TestNG omogućuje izvršavanje testa na razini metode izravno iz naredbenog retka pomoću XML ili Maven Surefire konfiguracija.

Opcija 1: Korištenje XML datoteke

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

Opcija 2: Maven naredba

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

Ovaj pristup omogućuje selektivno izvršenje, korisno za otklanjanje pogrešaka u pojedinačnim metodama ili validaciju kritičnih funkcionalnosti tijekom brzih izrada.


33) Kako parametrizirati testove pomoću vanjske Excel datoteke u TestNG?

Parametrizacija vođena Excelom uobičajena je u okvirima vođenim podacima gdje se podaci testiranja često mijenjaju.

Koraci implementacije:

  1. Koristiti Apache POI or JExcel za čitanje Excel podataka.
  2. Ubacite ga u @DataProvider metoda.

Primjer:

@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;
}

To omogućuje pokretanje iste metode ispitivanja s više skupova podataka iz Excela iz stvarnog svijeta, povećavajući fleksibilnost i pokrivenost.


34) Kako možeš trčati TestNG testovi u Jenkins ili CI/CD cjevovodima?

TestNG besprijekorno se integrira s Jenkins, GitLab CI, ili GitHub radnje putem Mavena ili Gradle gradi.

Koraci u Jenkinsu:

  1. Instalirati Maven dodatak za integraciju.
  2. Napravite Posao slobodnim stilom ili cjevovodom.
  3. dodati mvn clean test kao korak izgradnje.
  4. Nakon izgradnje, konfigurirajte HTML izvješća:
    • Imenik izvješća: test-output
    • Indeksna datoteka: index.html

Prednosti:

  • Omogućuje automatizirano regresijsko testiranje.
  • Omogućuje zakazana testiranja i praćenje trendova.
  • Osigurava dosljedno izvršavanje testova u svim okruženjima.

35) Koja je svrha @Parameters i po čemu se razlikuje od @Optional?

Obje anotacije se bave parametrizacijom, ali služe različitim svrhama.

svojstvo @Parameters @Optional
Svrha Prosljeđuje parametre iz XML datoteke Pruža zadanu vrijednost ako parametar nedostaje
izjava Koristi se s XML-om <parameter> Korištena unutarnja metoda ispitivanja
Ponašanje Izbacuje grešku ako vrijednost nedostaje Koristi rezervnu vrijednost

Primjer:

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

Korištenje @Optional osigurava stabilnost testa kada XML konfiguracije nisu potpune.


36) Kako se rješavaju ovisnosti testova između različitih klasa u TestNG?

Za stvaranje međuklasnih ovisnosti, TestNG omogućuje korištenje dependsOnGroups atribut.

Primjer:

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

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

Ovaj pristup pomaže u upravljanju višemodulne ovisnosti gdje svaka klasa predstavlja modul (Prijava, Nadzorna ploča, Plaćanje itd.).

Osigurava da se zavisni moduli izvršavaju samo ako su preduvjetni testovi uspješni, održavajući integritet testiranja.


37) Što su konfiguracijski kvarovi u TestNG, i kako se s njima može postupati?

Do kvarova konfiguracije dolazi kada su metode postavljanja ili rastavljanja označene s @Before* or @After* iznevjeriti.

Mogu uzrokovati zavisni testovi koje treba preskočiti, čak i ako su ti testovi točni.

Najčešći uzroci:

  • Neispravna inicijalizacija WebDrivera.
  • Problemi s postavkama baze podataka ili okruženja.
  • Pogrešna konfiguracija parametara.

Rješenja:

  • Koristiti pokušaj uhvatiti blokovi u metodama postavljanja.
  • Korak po korak do prijave alwaysRun = true kako bi se osiguralo da čišćenje teče unatoč kvarovima.

Primjer:

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

To osigurava da se vaše metode rastavljanja i dalje izvršavaju, održavajući stabilnost testnog okruženja.


38) Čemu služe atributi invocationCount i threadPoolSize u TestNG?

Ovi atributi omogućuju ponovljeno i paralelno izvršavanje testova iste metode.

Primjer:

@Test(invocationCount = 5, threadPoolSize = 2)
public void loadTest() {
    System.out.println("Running load test...");
}
Atribut Description
invocationCount Broj izvođenja metode
threadPoolSize Broj istovremenih niti

Slučaj upotrebe: Testiranje performansi, provjera stabilnosti ili reprodukcija nestabilnog ponašanja tijekom višestrukih pokretanja.


39) Kako pokrećete samo neuspješne testne slučajeve u TestNG?

Nakon obilaska apartmana, TestNG generira datoteku pod nazivom testng-failed.xml u test-output katalog.

Možete ponovno pokrenuti samo neuspješne testove izvršavanjem:

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

Prednosti:

  • Štedi vrijeme preskakanjem uspješnih testova.
  • Olakšava otklanjanje pogrešaka u velikim paketima.
  • Često se koristi u CI cjevovodima za brza ponovna testiranja.

Također možete ovo integrirati s Jenkinsom pomoću skripte nakon izgradnje za ponovna pokretanja.


40) Koja su neka ograničenja TestNG i kako ih se može ublažiti?

Uprkos svojoj robusnosti, TestNG ima nekoliko ograničenja.

Ograničenje Strategija ublažavanja
Složenost XML konfiguracije Koristite konfiguraciju i alate za izradu temeljene na napomenama
Ograničeno izvorno izvještavanje Integrirajte ExtentReports ili Allure
Nema ugrađene kontrole ponovnog pokušaja Implementirati IRetryAnalyzer
Problemi s nitnom sigurnošću u paralelnim izvršavanjima Koristi instance WebDrivera lokalne za niti
Krivulja učenja za početnike Održavanje struktura projekata temeljenih na predlošcima

Pravilnim dizajnom okvira i najboljim praksama, ta se ograničenja mogu svesti na najmanju moguću mjeru, osiguravajući stabilna i održiva rješenja za automatizaciju.


41) Kako koristite slušače za zapisivanje i snimanje snimaka zaslona u Selenium-TestNG?

Slušatelji unutra TestNG pomoći u praćenju izvršavanja testova i izvršavanju radnji poput zapisivanja, snimanja zaslona ili dinamičkog izvještavanja o rezultatima.

Primjer implementacije:

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"));
  }
}

Upotreba:

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

Prednosti:

  • Automatski bilježi kvarove.
  • Poboljšava otklanjanje pogrešaka putem vizualnih dokaza.
  • Smanjuje ručni napor pri održavanju logova.

Ova tehnika je ključna u CI/CD automatizacijskim cjevovodima, posebno pri daljinskoj dijagnostici neuspjelih izrada.


42) Koja je razlika između IReportera i ITestListenera u TestNG?

svojstvo IReporter ITestListener
Svrha Generira prilagođena izvješća nakon izvršenja testa Prati i reagira na događaje testiranja tijekom izvođenja
prizivanje Nakon što su svi testovi završeni Tijekom životnog ciklusa testiranja (početak, uspjeh, neuspjeh)
Izlaz HTML/XML/JSON izvješća Datoteke zapisnika, snimke zaslona, ​​nadzorne ploče uživo
Uobičajena upotreba ExtentReports, integracija Allurea Zapisivanje, rukovanje greškama, mehanizmi ponovnog pokušaja

Primjer:

  • Koristiti IReporter za izgradnju iscrpna izvješća nakon završetka testa.
  • Koristiti ITestListener za zapisivanje podataka u stvarnom vremenu ili snimke zaslona.

Oni također mogu biti kombinirana za izgradnju end-to-end sustava za analitiku automatizacije.


43) Kako provodite testiranje više preglednika pomoću TestNG XML konfiguracija?

Testiranje u različitim preglednicima osigurava da ista funkcionalnost radi u različitim preglednicima.

Primjer konfiguracije:

<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 Kodirati:

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

Ovaj pristup omogućuje paralelno izvršavanje u više preglednika, ubrzavajući pokrivenost testiranjem na svim platformama.


44) Kako se integrirate TestNG s Dockerom ili Selenium Mreža?

TestNG besprijekorno se integrira s Dockerizirano Selenium rešetka kako bi se omogućilo distribuirano paralelno testiranje.

Koraci:

  1. Postaviti Selenium Mreža u Dockeru koristeći službu Selenium slika:
    docker run -d -p 4444:4444 --name selenium-grid selenium/standalone-chrome
  2. Nadopune TestNG postava:
  3. DesiredCapabilities caps = new DesiredCapabilities();
    caps.setBrowserName("chrome");
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), caps);
    
  4. Izvršite svoj paket putem Jenkinsa ili CI pipeline-a.

Prednosti:

  • omogućuje skalabilno paralelno testiranje.
  • Smanjuje opterećenje postavljanja okruženja.
  • Pruža dosljedno izvršavanje testova preko distribuiranih kontejnera.

45) Koja je razlika između paralelnog izvršavanja na razinama paketa, testa i metode u TestNG?

Nivo Paralelni atribut Ponašanje pri izvršavanju
Apartman parallel="suites" Istovremeno izvršava više paketa
test parallel="tests" Izvodi <test> blokovi istovremeno
Klasa parallel="classes" Paralelno pokreće testne klase
način parallel="methods" Paralelno izvršava pojedinačne metode ispitivanja

Primjer:

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

Najbolja vježba:Koristiti parallel="classes" za stabilnost u Selenium testove kako bi se izbjegli sukobi zajedničkih upravljačkih programa.


46) Kako možete dijeliti podatke između testova bez korištenja globalnih varijabli u TestNG?

TestNG osigurava ITestContext i injekcija ovisnosti za dinamičko dijeljenje podataka.

Primjer:

@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);
}

Time se izbjegavaju statičke varijable, održava sigurnost niti i osigurava izolacija podataka u testovima.


47) Kako bilježite i zapisujete preskočene testove TestNG?

Preskočene testove možete snimiti pomoću onTestSkipped() u ITestListener sučelje.

Primjer:

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

Razlozi za preskakanje:

  • Neuspjeh ovisnog testa.
  • Uvjetno preskakanje putem SkipException.
  • Nedostupnost okoline.

Najbolja vježba:
Zabilježite razloge preskakanja i tragove stoga za sljedivost u CI izvješćima ili nadzornim pločama.


48) Objasnite kako parametrizirati REST API testove pomoću TestNG i budite sigurni.

TestNG'S @DataProvider elegantno se integrira s Budite sigurni za parametrizaciju API-ja.

Primjer:

@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);
}

Prednosti:

  • Izvršava isti API poziv za više krajnjih točaka ili korisnih tereta.
  • Pojednostavljuje regresijsko testiranje za API-je s različitim ulaznim skupovima.
  • Besprijekorno se integrira s CI alatima i izvješćima.

49) Kako stvoriti prilagođene napomene u TestNG za obrasce testiranja za višekratnu upotrebu?

Prilagođene anotacije mogu standardizirati konfiguracije ili validacije koje se ponavljaju.

Primjer:

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

Upotreba:

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

U kombinaciji s refleksijom, možete dinamički čitati ove napomene za grupiranje testova ili pokretanje uvjetnog izvršavanja.

Ova tehnika se široko koristi u okvirno meta-programiranje za izradu samodokumentirajućih testova.


50) Kako možete kombinirati Cucumber i TestNG za hibridne okvire za testiranje?

TestNG može djelovati kao testni trkač za Cucumber BDD scenariji, nudeći snažno izvještavanje i paralelizaciju.

Primjer trkača:

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

Prednosti:

  • utjecati TestNG'S bilješke, slušatelji i izvještavanje.
  • Podržava paralelno izvršavanje značajki.
  • Integrira se s Vabiti i Izvješća o opsegu lako.

Ovaj hibridni pristup spaja Čitljivost BDD-a sa TestNG fleksibilnost, idealno za okvire poslovne klase.


🔍 Vrh TestNG Pitanja za intervju sa stvarnim scenarijima i strateškim odgovorima

U nastavku je navedeno 10 realističnih, relevantnih za domenu TestNG pitanja za intervju zajedno s jasnim očekivanjima i snažnim primjerima odgovora.

1) Možete li objasniti ključne prednosti korištenja TestNG u usporedbi sa JUnit?

Očekivano od kandidata: Pokazati razumijevanje TestNGpoboljšane značajke i zašto se često preferira za automatizaciju poduzeća.

Primjer odgovora: "TestNG pruža nekoliko prednosti kao što su fleksibilna konfiguracija testiranja, podrška za paralelno izvršavanje, ovisne metode testiranja, testiranje temeljeno na podacima s DataProvidersima i ugrađeno izvještavanje. Ove mogućnosti čine TestNG moćniji za složene okvire automatizacije koji zahtijevaju skalabilnost.”


2) Kako koristite TestNG anotacije za kontrolu toka izvršavanja testa?

Očekivano od kandidata: Poznavanje svrhe i redoslijeda anotacija.

Primjer odgovora: "TestNG nudi napomene kao što su @BeforeSuite, @BeforeClass, @BeforeMethod, @Test i njihove odgovarajuće napomene za rastavljanje. One omogućuju strukturiranu organizaciju postavljanja i čišćenja testa. Na primjer, @BeforeMethod se izvršava prije svake metode testiranja, što je korisno za inicijalizaciju stanja preglednika.


3) Opišite zahtjevan projekt automatizacije gdje TestNG odigrao ključnu ulogu.

Očekivano od kandidata: Pravo iskustvo na projektima i sposobnost artikuliranja rješavanja problema.

Primjer odgovora: „U svojoj prethodnoj ulozi radio sam na projektu koji je zahtijevao opsežno regresijsko testiranje u više okruženja.“ TestNGParalelno izvršavanje i grupiranje omogućilo je timu istovremeno pokretanje kritičnih paketa, značajno smanjujući vrijeme izvršavanja uz održavanje pouzdanosti.


4) Kako TestNG Pomažu li grupe u učinkovitoj organizaciji i provođenju testova?

Očekivano od kandidata: Razumijevanje grupiranja, uključujući mehanizme uključivanja/isključivanja.

Primjer odgovora: „Grupe u TestNG omogućuju kategorizaciju testnih slučajeva kao što su dim, regresija i integracija. Korištenjem testng.xml datoteke mogu selektivno pokretati grupe, isključivati ​​nestabilne testove i upravljati različitim testnim paketima bez mijenjanja samog koda.


5) Opišite situaciju u kojoj ste morali otkloniti greške TestNG testovi. Kakav je bio vaš pristup?

Očekivano od kandidata: Vještine kritičkog mišljenja i rješavanja problema.

Primjer odgovora: „Na prethodnoj poziciji susreo sam se s nizom neuspjeha TestNG testovi koji su se činili prolaznima lokalno, ali nisu uspjeli u CI. Omogućio sam detaljno zapisivanje, pregledao redoslijed izvršavanja i otkrio da se dijeljeni resurs nije resetirao između testova. Zatim sam implementirao odgovarajuće korake rastavljanja koristeći @AfterMethod kako bih osigurao izolaciju testova.


6) Kako implementirate testiranje temeljeno na podacima koristeći TestNG?

Očekivano od kandidata: Razumijevanje pružatelja podataka i slučajeva upotrebe.

Primjer odgovora: „Kreiram metodu @DataProvider koja vraća podatke u nizovima objekata, a zatim je vežem za metodu @Test pomoću atributa dataProvider. To omogućuje višestruke iteracije istog testa s različitim ulaznim skupovima, što je korisno za validaciju slanja obrazaca ili varijacija API sadržaja.“


7) Kako upravljate ovisnostima testova u TestNG?

Očekivano od kandidata: Pravilna upotreba dependsOnMethods ili dependsOnGroups.

Primjer odgovora: "TestNG dopušta ovisnosti testova putem atributa dependsOnMethods i dependsOnGroups. Koristim ovisnosti kada se test mora izvršiti tek nakon što se drugi uspješno završi, kao što je provjera narudžbe tek nakon njenog kreiranja.


8) Opišite kako ste koristili TestNG s alatima za kontinuiranu integraciju.

Očekivano od kandidata: Iskustvo u radu s automatiziranim procesima u stvarnom svijetu.

Primjer odgovora: „Na prethodnom poslu sam integrirao TestNG s Jenkinsom konfiguriranjem Maven verzije za generiranje TestNG HTML i XML izvješća. Jenkins je zatim arhivirao izvješća i prikazivao rezultate nakon svakog ciklusa izrade. Ova integracija pomogla je timu da brzo prati greške i održava stabilnost izdanja.


9) Recite mi o situaciji kada ste morali raditi u kratkim rokovima dok ste istovremeno upravljali više zadataka automatizacije.

Očekivano od kandidata: Upravljanje vremenom i sposobnost određivanja prioriteta.

Primjer odgovora: „U svojoj posljednjoj ulozi, trebao sam ažurirati postojeće TestNG testne pakete, a istovremeno sam stvarao nove za nadolazeće izdanje. Prioritizirao sam zadatke na temelju utjecaja na poslovanje, prvo automatizirao područja s najvećim rizikom i koristio TestNG grupiranje kako bi se izolirali dovršeni dijelovi za rani pregled. To je osiguralo pravovremenu isporuku bez ugrožavanja kvalitete.”


10) Kako biste dizajnirali skalabilni TestNG okvir za veliku aplikaciju?

Očekivano od kandidata: Archirazumijevanje teksture, obrasci i najbolje prakse.

Primjer odgovora: „Dizajnirao bih modularni okvir koristeći model objekta stranice, integrirao TestNG za upravljanje izvršavanjem i koristiti DataProviders za scenarije vođene podacima. Također bih konfigurirao paralelno izvršavanje, centralizirao uslužne programe i eksternalizirao postavke konfiguracije kako bi okvir ostao skalabilan i održiv kako aplikacija raste.

Sažmite ovu objavu uz: