Top 50 TestNG Intervjuu küsimused ja vastused (2026)

top TestNG Intervjuu küsimused ja vastused

Ettevalmistus a TestNG intervjuu? On aeg mõelda küsimustele, mis toovad esile teie tugevaid külgi. Kindel TestNG Intervjuu alusmaterjal näitab sügavust, enesekindlust ja valmisolekut, mida värbamismeeskonnad hindavad.

Selle valdkonna võimalused hõlmavad automatiseerimise kasvu, arenevaid raamistikke ja praktilisi testimisrakendusi, mis nõuavad tehnilist ja erialast kogemust. Töötamine selles valdkonnas nõuab valdkonnaalaseid teadmisi, analüüsioskusi ja paindlikku oskustepagasit, mis aitab algajatel, keskastme ja vanemspetsialistidel lahendada levinud küsimusi ja saada vastuseid nii tehnilistel, põhi- kui ka edasijõudnutele mõeldud teemadel.
Loe rohkem…

👉 Tasuta PDF-i allalaadimine: TestNG Intervjuu küsimused ja vastused

top TestNG Intervjuu küsimused ja vastused

1) Mis on TestNG ja miks seda automatiseeritud testimisel kasutatakse?

TestNG (Test Next Generation) on testimisraamistik, mis on inspireeritud JUnit ja NUnit, kuid täiustatud täiustatud võimalustega, näiteks grupi abilping, järjestamine, parameetriseerimine ja sõltuvuste haldamine. Seda kasutatakse peamiselt automatiseeritud testimisel testide teostamise sujuvamaks muutmiseks, testide korralduse parandamiseks ning üksikasjalike HTML- ja XML-aruannete genereerimiseks.

Peamised eelised TestNG järgmised:

  • Toetab paralleelse testi käivitamine, vähendades kogu tööaega.
  • Annab märkused mis kontrollivad testivoogu tõhusalt.
  • Pakkumised andmepõhine testimine läbi @DataProvider märkus.
  • Genereerib kohandatavad aruanded paremaks silumiseks.

Näiteks TestNG võimaldab teil suitsu-, regressiooni- ja integratsioonitesti rühmi iseseisvalt käivitada ilma testkoodi muutmata, pakkudes paindlikkust ja skaleeritavust suurtes automatiseerimiskomplektides.


2) Selgitage TestNG elutsükkel koos märkuste ja nende täitmisjärjekorraga.

. TestNG Elutsükkel määratleb, kuidas teste initsialiseeritakse, käivitatakse ja lõpetatakse. Seda kontrollitakse annotatsioonide abil, mis annavad testivoole struktuuri ja selguse.

Märkus Kirjeldus Täitekorraldus
@BeforeSuite Käivitub enne kõiki komplektis olevaid teste 1
@BeforeTest Täidab enne <test> silt XML-is 2
@BeforeClass Käivitub enne praeguse klassi esimest meetodit 3
@BeforeMethod Teostatakse enne iga katsemeetodit 4
@Test Sisaldab tegelikku testiloogikat 5
@AfterMethod Käivitub pärast iga testimismeetodit 6
@AfterClass Käivitub pärast kõiki klassi meetodeid 7
@AfterTest Jookseb pärast <test> silt XML-is 8
@AfterSuite Käivitab pärast kõiki komplekti tehtud teste 9

See struktureeritud järjekord tagab etteaimatava testi ülesehituse ja lahtivõtmise, mis on testi sõltumatuse säilitamiseks ülioluline.


3) Kuidas on TestNG erineb JUnit?

Kuigi mõlemat raamistikku kasutatakse ühiktestimiseks, TestNG pakub robustsemat konfigureerimist ja paralleelse käivitamise võimalusi.

tunnusjoon JUnit TestNG
Paralleelne täitmine Piiratud tugi Täielik toetus
Annotatsioonid Vähem (@Before, @After) Rikkam (@BeforeSuite, @DataProvider)
Sõltuvuse haldamine Pole saadaval Saadaval kasutades dependsOnMethods
Grouping Ei toetata Toetatud kasutades groups
Parameetristamine Välise jooksja kaudu Sisseehitatud XML-i kaudu või @DataProvider

Kokkuvõttes, TestNG on eelistatud ettevõtte tasemel automatiseerimise testimine ja integratsioon selliste tööriistadega nagu Selenium, samas kui JUnit sobib ideaalselt lihtsamate ühiktestide jaoks.


4) Mis on TestNG märkused ja kuidas need on kasulikud?

Märkused sisse TestNG määratlema testimismeetodite struktuur ja käitumineNeed välistavad keeruka XML-konfiguratsiooni vajaduse, pakkudes deklaratiivset testimisjuhtimist otse koodis.

Tavaliselt kasutatavate märkuste hulka kuuluvad:

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

Näide:

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

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

See aitab arendajatel testide teostamist loogiliselt korraldada, tagades, et seadistamine, testi teostamine ja lahtivõtmine toimuvad kindlas järjekorras.


5) Selgitage rühmituse mõistetping in TestNG.

Grouping in TestNG võimaldab teste loogiliselt kategoriseerida väiksemateks ja hallatavamateks gruppideks, näiteks „Suits“, „Regressioon“ või „Mõistus“.

Näide:

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

Saate oma XML-komplekti konfigureerida nii, et see käitaks teatud rühmi:

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

Eelised:

  • Hõlbustab testide valikulist käivitamist.
  • Suurendab CI/CD torujuhtmete paindlikkust.
  • Säästab täitmisaega inkrementaalsete versioonide loomisel.

6) Kuidas saab parameetriseerimist saavutada? TestNG?

Parameetriseerimine võimaldab andmepõhist testimist, mis lubab teste käivitada mitme sisendandmekogumiga. TestNG toetab kahte peamist meetodit:

  1. Kasutamine @Parameters XML-i abil annotatsioon:
  2. <parameter name="browser" value="chrome"/>
    @Test
    @Parameters("browser")
    public void launchBrowser(String browser) { ... }
    
  3. Kasutamine @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) { ... }
    

See paindlikkus lihtsustab suurte testikomplektide haldamist ja käivitamist erinevates keskkondades või konfiguratsioonides.


7) Mis on sõltuvused TestNG ja kuidas neid hallatakse?

Sõltuvused sisse TestNG kontrollida testide sooritamise järjekorda teiste testitulemuste põhjal, kasutades dependsOnMethods or dependsOnGroups atribuudid.

Näide:

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

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

Kui sõltuv meetod ebaõnnestub, jäetakse järgnev test automaatselt vahele.

See mehhanism hoiab ära vigase testi käivitamise ja aitab säilitada loogilise testi terviklikkusSee on eriti kasulik mitmeastmeliste funktsionaalsete voogude jaoks, näiteks sisselogimine → toimingu sooritamine → tulemuse kontrollimine.


8) Millised on erinevad teostusviisid? TestNG testid?

TestNG Teste saab teostada mitmel paindlikul viisil, olenevalt testimise seadistusest:

  1. IDE-st (Eclipse/IntelliJ): Paremklõpsake klassil või XML fileRun asTestNG Test.
  2. Käsurealt: java -cp "path\testng.jar;bin" org.testng.TestNG testng.xml
  3. Ehitustööriistade kasutamine:
    • Maven: Seadistamine surefire-plugin in pom.xml.
    • Gradle: Kasutama testng sõltuvus ja ülesande konfiguratsioon.
  4. CI/CD torujuhtmete kaudu: Integreeritud rakendusega Jenkins või GitHubi toimingud automaatseks täitmiseks.

See mitmekesisus tagab ühilduvuse arendus-, testimis- ja tootmiskeskkondade vahel.


9) Mis on TestNG kuulajad ja miks nad on olulised?

Kuulajad sisse TestNG pakuvad konksusid testi käitumise kohandamiseks, jälgides testi käivitamise sündmusi, nagu alustamine, õnnestumine, ebaõnnestumine või vahelejätmine.

Tavalised kuulajad:

  • ITestListener: Tracks testimismeetodi taseme sündmused.
  • ISuiteListenerVaatleb sviiditaseme sündmusi.
  • IReporter: Genereerib kohandatud aruandeid.

Näide:

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

Kuulajaid kasutatakse sageli võtmiseks ekraanipildid ebaõnnestumise kohta, genereerides kohandatud logidvõi aruandlustööriistadega integreerimine nagu Allure või ExtentReports.


10) Millised on kasutamise eelised ja puudused? TestNG?

Aspekt Eelised Puudused
Paindlikkus Toetab aluspõrandatping, sõltuvus ja paralleelne teostus Kompleksne XML-i seadistus suurtele sviitidele
Aruandlus Pakub üksikasjalikke HTML- ja XML-aruandeid Piiratud kohandamine ilma kuulajateta
Integratsioon Töötab sujuvalt koos Selenium ja CI/CD tööriistad Veidi kõrgem õppimiskõver
Parameetristamine Sisseehitatud tugi andmepõhiseks testimiseks Nõuab suurte andmekogumite hooldust

Üldiselt TestNG on vastupidav ja paindlik raamistik, mis sobib kaasaegsetele automatiseeritud testimiskeskkondadele, hoolimata väikesest konfiguratsioonikulust.


11) Kuidas saate testijuhtumeid tähtsuse järjekorda seada? TestNG?

TestNG pakub priority atribuut selles @Test annotatsioon, et määrata testimismeetodite käivitamise järjekord. Madalama prioriteediga testid käivitatakse esimesena.

Näide:

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

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

Kui prioriteeti pole määratud, on vaikeväärtus 0ja meetodid täidetakse tähestikulises järjekorras.

Parim harjutus: Kasutage prioriteediväärtusi säästlikult. Nende ülekasutamine võib muuta testide järjekorra jäigaks. Keeruliste voogude puhul on sõltuvuste haldamine (dependsOnMethods) on paremini hallatav kui range prioriseerimine.


12) Selgitage paralleelse täitmise kontseptsiooni ja kasutamist TestNG.

Paralleelne täitmine TestNG võimaldab mitmel testil, klassil või meetodil samaaegselt töötada, vähendades oluliselt üldist täitmisaega.

Selle funktsiooni saate lubada jaotises testng.xml faili:

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

Toetatud paralleelrežiimid:

  • tests
  • classes
  • methods
  • instances

Plussid:

  • Kiirem tagasiside tsükkel.
  • Mitmetuumaliste protsessorite tõhus kasutamine.
  • Skaleeritavus suurte automatiseerimiskomplektide jaoks.

Siiski veenduge, et niidi ohutus jagatud ressursside (nt WebDriver või andmebaasiühendused) kasutamisel.


13) Mis on andmepakkujad? TestNGKuidas need parameetritest erinevad?

@DataProvider võimaldab andmepõhine testimine varustades testimismeetodeid mitme andmekogumiga.

Näide:

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

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

Erinevus @Parameters ja @DataProvider vahel:

tunnusjoon @Parameters @DataProvider
Andmeallikas XML-fail Java meetod
Andmetüüp Üks andmekogum Mitu andmekogumit
Paindlikkus Less Kõrge
Kasuta Case'it Keskkonnamuutujad Korduvad andmepõhised testid

Seega @DataProvider on eelistatud ühe testi läbiviimisel mitme andmekogumiga, näiteks sisselogimise kontrollimisel mitme identimisteabega.


14) Kuidas saate testi keelata või vahele jätta? TestNG?

Saate testi keelata TestNG kasutades enabled atribuudi või programmilise vahelejätmise teelping ta.

1. Kasutades enabled = false:

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

2. Jäta vaheleping käitusaja ajal, kasutades SkipException:

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

Keelamine on kasulik, kui ajutine deaktiveerimine ebastabiilsed või mittetäielikud testid ilma neid kustutamata. Jäta vahele.ping on väärtuslik käitusaja tingimused, nagu vahelejätmineping testid toetamata brauserite jaoks.


15) Mis on testng.xml faili roll ja millised on selle peamised komponendid?

. testng.xml fail on konfiguratsiooni selgroog TestNGSee määratleb testikomplektid, testirühmad, parameetrid ja paralleelse käivitamise seadistuse.

Struktuuri näide:

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

Peamised komponendid:

  • <suite> – Määratleb kogu komplekti.
  • <test> – Esindab testplokki.
  • <classes> – Loetleb testiklassid.
  • <methods> – Filtreerib spetsiifilisi testimismeetodeid.
  • <parameter> – Pakub globaalseid või testitaseme parameetreid.

XML-fail pakub tsentraliseeritud kontroll ületäitmine ilma koodi muutmata.


16) Kuidas saate aruandeid genereerida? TestNG?

TestNG genereerib automaatselt kahte tüüpi aruandeid:

  1. HTML-aruanne (test-output/index.html) – Võtab kokku sooritatud, ebaõnnestunud ja vahelejäänud testid.
  2. XML-aruanne – Kasutatakse CI/CD tööriistadega integreerimiseks.

Täiustatud aruandluse jaoks TestNG integreerub järgmisega:

  • ExtentReports – Pakub graafilisi armatuurlaudu ja detailseid logisid.
  • Allure'i aruanded – Pakub visuaalset analüüsi testimisetappide, ekraanipiltide ja logidega.

Näide integratsioonist:

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

Need aruanded on olulised tractrendide tuvastamine ja testide katvuse nõrkade kohtade tuvastamine.


17) Mis on tehased? TestNG, ja kuidas need töötavad?

Tehased linnas TestNG kasutatakse loomiseks testiklasside dünaamilised eksemplaridNeed võimaldavad klasside parameetritega eksemplaride loomist enne testide käivitamist.

Näide:

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

Plussid:

  • võimaldab parameetrilise objekti loomine.
  • ideaalne brauseriülene testimine ja mitme keskkonna teostus.
    Tehased täiendavad andmepakkujaid, kui vajate erinevaid objektikonfiguratsioone, mitte ainult meetodi tasemel andmete variatsioone.

18) Kuidas saab väiteid kasutada TestNG?

Väiteid kasutatakse testimismeetodite eeldatavate ja tegelike tulemuste valideerimiseks.

Väidete tüübid:

  1. Kõvad väited (väiteklass):
    Peatab testi täitmise kohe pärast ebaõnnestumist.
  2. Assert.assertEquals(actual, expected);
    Assert.assertTrue(condition);
    
  3. Pehmed väited (SoftAssert klass):
    Jätkab täitmist ka pärast ebaõnnestumist, teatades lõpus kõigist probleemidest.
  4. SoftAssert soft = new SoftAssert();
        soft.assertEquals(actual, expected);
        soft.assertAll();
    
  5. Millal kasutada:
    • Kasutage kindlaid väiteid kriitiline valideerimine nagu sisselogimise edukus.
    • Kasutage pehmeid väiteid mitu kinnitust ühe katsemeetodi piires.

19) Selgitage @BeforeMethod ja @BeforeClass erinevust TestNG.

Aspekt @BeforeMethod @BeforeClass
Täitmine Jookseb enne iga testimis viis Jookseb üks kord varem mis tahes meetod klassis
Ulatus Katsemeetodi järgi Testiklassi kohta
Tavaline kasutamine Brauseri initsialiseerimine enne iga testi Konfiguratsiooni või brauseri seadistuse laadimine üks kord

Näide:

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

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

Kasutama @BeforeMethod kui iga test vajab puhast keskkonda ja @BeforeClass raskete initsialiseerimisülesannete jaoks, mida saab taaskasutada.


20) Kuidas TestNG Toetage sõltuvuse süstimist ja millised on selle kasutusjuhud?

TestNG toetab sõltuvussüst konteksti ja konfiguratsiooniobjektide sisseehitatud süstimise kaudu, näiteks ITestContext, XmlTestvõi Method.

Näide:

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

Kasutusjuhtumid:

  • Testparameetrite dünaamiline toomine.
  • Konfiguratsiooniteabele, näiteks komplektide nimedele või paralleelse käivitamise sätetele, juurdepääs.
  • Testimise paindlikkuse suurendamine ilma sõltuvuste kõvakodeerimiseta.

Sõltuvuse süstimine võimaldab arendajatel kirjutage modulaarseid, kontekstipõhiseid teste mis kohanevad dünaamiliselt keskkonnamuutustega.


21) Mis vahe on @Factory ja @DataProvider vahel? TestNG?

Mõlemad @Factory ja @DataProvider abi parameetrite määramisel, kuid nad töötavad erinevatel tasanditel testi arhitektuuris.

tunnusjoon @Factory @DataProvider
Ulatus Klassi tase Meetodi tase
Eesmärk Loob klassist mitu eksemplari erinevate andmetega Varustab andmeid ühe testimismeetodi jaoks
Täitmine Käivitab iga eksemplari jaoks kogu klassi Käivitab ühte meetodit mitu korda
Ideaalne kasutuskohver Brauseriteülene või keskkonnaülene testimine Andmepõhine funktsionaalne testimine

Näide:

  • Tehas: Käitab kogu klassi vastavalt brauseritüübile.
  • Andmepakkuja: Käivitab ühe testimismeetodi mitme andmekogumiga.

Kasutama @Factory kui objekti eksemplari loomine ise varieerub ja @DataProvider funktsionaalse sisendi variatsiooni jaoks sama objekti eksemplari piires.


22) Kuidas saab ebaõnnestunud teste automaatselt uuesti proovida? TestNG?

TestNG pakub mehhanismi ebaõnnestunud testide uuesti käivitamine kasutades IRetryAnalyzer Liides.

Näidisrakendus:

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

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

Kasutus:

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

Eelised:

  • Vähendab CI-torustike ketendust.
  • Tegeleb ajutiste võrgu- või keskkonnaprobleemidega.

Parim harjutus: Vahelduvate tõrgete silumiseks kombineeri uuesti proovimise loogika korraliku logimise ja ekraanipiltidega.


23) Mis kasu on ITestContextist? TestNG?

ITestContext annab kontekstuaalne teave testi käivitamise kohta, sh komplekti nimi, testi nimi, väljundkataloog ja parameetrid.

Näide:

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

Peamised meetodid:

  • getSuite() – Hangib sviiditaseme info.
  • getName() – Tagastab testi nime.
  • setAttribute() / getAttribute() – Jaga andmeid testide vahel.

See võimaldab andmete jagamine testimismeetodite või klasside vahel ja hõlbustab dünaamilist aruandlust ja logimist.


24) Kuidas saab luua sõltuvust testgruppide vahel? TestNG?

Rühmadevahelisi sõltuvusi saab defineerida, kasutades dependsOnGroups atribuut selles @Test märkus.

Näide:

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

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

See tagab, et verifyProfile rühm käivitub ainult siis, kui kõik testid selles Login grupi läbimine edukalt.

See on eriti kasulik integratsiooni testimine, kus moodulid sõltuvad teiste edukast täitmisest (nt sisselogimine → profiil → väljalogimisvoog).


25) Kuidas saab teatud testimismeetodeid ignoreerida? TestNG XML-fail?

Saate selgesõnaliselt välistavad meetodid XML-i komplektifaili klassi sees, kasutades <exclude> sildid.

Näide:

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

See võimaldab testijatel teatud meetodite ajutine keelamine ilma muutmata Java lähtekood – kasulik suurtes sviitides, kus on vaja dünaamilist kaasamist või väljajätmist vastavalt väljalasketsüklitele või sprindi prioriteetidele.


26) Kuidas saab TestNG olema integreeritud Selenium Veebidraiver?

TestNG ja Selenium moodustavad võimsa kombinatsiooni kasutajaliidese automatiseerimiseks.

Tüüpiline integratsiooni seadistamine hõlmab testide korraldamist annotatsioonide abil, seadistamise/mahavõtmise haldamist ja testide käivitamist XML-i või CI-tööriistade abil.

Näide:

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

Integratsiooni eelised:

  • võimaldab paralleelne brauseri testimine.
  • Lihtsustab katserühmping ja aruandlus.
  • Töötab sujuvalt koos CI / CD torujuhtmed nagu Jenkins või GitHubi toimingud.

27) Millised on mõned parimad tavad selle kasutamisel? TestNG suurtes automatiseerimisraamistikes?

Parimad tavad:

  1. Kasutama Descriptive nimetamine: Nimeta testid käitumise, mitte teostuse põhjal.
  2. Leverage Groupping: Loo loogilised testirühmad (Suits, Regressioon).
  3. Vältige kõvakodeerimist: Kasutage testandmete jaoks parameetreid või omaduste faile.
  4. Minimeerige sõltuvusi: Hoidke testid võimaluse korral sõltumatud.
  5. Tsentraliseeritud konfiguratsioon: Kasutama testng.xml sviidi seadistamiseks.
  6. Integreeritud aruandlus: Kasutage kuulajaid või kolmanda osapoole tööriistu, näiteks ExtentReportsi.
  7. Kasutage uuesti proovimise loogikat ettevaatlikult: Väldi tegelike vigade varjamist.

Nende järgimine tagab skaleeritavus, hooldatavus ja loetavus ettevõtte tasemel automatiseerimises.


28) Mis vahe on @BeforeTestil ja @BeforeSuite'il? TestNG?

tunnusjoon @BeforeTest @BeforeSuite
Ulatus Jookseb enne iga <test> silt XML-is Käivitub üks kord enne kogu sviiti
Sagedus Mitu korda (kui mitu korda <test> plokid) Ainult üks kord sviidi kohta
Tavaline kasutamine Testitaseme konfiguratsiooni initsialiseerimine Globaalsete ressursside seadistamine

Näide:

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

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

Kasutama @BeforeSuite eest globaalsed konfiguratsioonid (nt andmebaasiühendus) ja @BeforeTest eest testispetsiifilised initsialiseerimised.


29) Saab TestNG Kuidas seda API testimiseks kasutada?

Jah. TestNG saab tõhusalt kasutada API testimine integreerides HTTP klienditeekidega, näiteks RestAssured or HttpClient.

Näide:

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

Plussid:

  • võimaldab väidetel põhinev valideerimine vastustest.
  • Toetab parameetriseerimine ja andmepõhine testimine mitme lõpp-punkti jaoks.
  • Genereerib struktureeritud aruanded REST API valideerimiste jaoks.

Ühendades TestNG ja RestAssured abil saavad testijad säilitada ühtse automatiseerimisraamistiku nii kasutajaliidese kui ka API testimiseks.


30) Kuidas käsurealt parameetreid edastada? TestNG?

Saate XML-parameetreid käitusajal üle kirjutada, edastades süsteemi atribuute, kasutades funktsiooni -D lipp

Käsu näide:

mvn test -Dbrowser=chrome -Denv=staging

Code Näide:

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

See võimaldab dünaamiline keskkonna valik CI/CD torujuhtmetes ilma konfiguratsioonifaile muutmata, suurendades testimise paindlikkust.


31) Kuidas saate testide täitmise järjekorda kontrollida? TestNG ilma prioriteete kasutamata?

Kasutamise asemel priority, TestNG võimaldab kontrolli läbi sõltuvused ja XML-meetodite järjestamine.

Meetodid:

  1. Kasutamine dependsOnMethods:
  2. @Test
    public void login() { ... }
    
    @Test(dependsOnMethods = "login")
    public void verifyDashboard() { ... }
    
  3. XML-meetodite järjestuse kasutamine:
  4. <classes>
      <class name="com.test.LoginTests">
        <methods>
          <include name="login"/>
          <include name="verifyDashboard"/>
        </methods>
      </class>
    </classes>
    

Parim harjutus: Eelista keerukate voogude puhul staatiliste prioriteetide asemel loogilisi sõltuvusi, tagades robustsed ja hooldatavad testimiskomplektid.


32) Kuidas saab käsurealt konkreetseid testimismeetodeid käivitada? TestNG?

TestNG võimaldab meetodi tasemel testi käivitamine otse käsurealt XML-i või Maven Surefire'i konfiguratsioonide abil.

1. variant: XML-faili kasutamine

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

2. variant: Maveni käsk

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

See lähenemisviis võimaldab valikuline hukkamine, kasulik üksikute meetodite silumiseks või kriitiliste funktsioonide valideerimiseks kiirete ehituste ajal.


33) Kuidas parameetristada teste välise Exceli faili abil? TestNG?

Exceli-põhine parameetrite määramine on tavaline andmepõhistes raamistikes, kus testandmed sageli muutuvad.

Rakendamise etapid:

  1. Kasutama Apache POI or JExcel Exceli andmete lugemiseks.
  2. Söötke see a-sse @DataProvider meetod.

Näide:

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

See võimaldab sama testimismeetodit käitada mitme Exceli reaalmaailma andmekogumiga, suurendades paindlikkust ja ulatust.


34) Kuidas sa joosta saad? TestNG testid Jenkins või CI/CD torujuhtmed?

TestNG integreerub sujuvalt Jenkins, GitLab CIvõi GitHubi toimingud Maveni kaudu või Gradle ehitab.

Astub sisse Jenkins:

  1. paigaldama Maveni integratsiooni plugin.
  2. Loo Vabastiili- või torujuhtmetöö.
  3. lisama mvn clean test ehitusetapina.
  4. Pärast koostamist konfigureerige HTML-aruanded:
    • Aruannete kataloog: test-output
    • Indeksfail: index.html

Eelised:

  • Võimaldab automatiseeritud regressioontestimist.
  • Pakub ajastatud testikäivitusi ja trende trackuningas.
  • Tagab testide järjepideva teostamise erinevates keskkondades.

35) Mis on @Parameters'i eesmärk ja kuidas see erineb @Optional'ist?

Mõlemad annotatsioonid tegelevad parameetritega, kuid täidavad erinevaid eesmärke.

tunnusjoon @Parameters @Optional
Eesmärk Edastab parameetrid XML-failist Annab parameetri puudumisel vaikeväärtuse
deklaratsioon Kasutatakse XML-iga <parameter> Kasutatud testimismeetodi sees
Käitumine Viskab vea, kui väärtus puudub Kasutab varuväärtust

Näide:

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

Kasutamine @Optional tagab testi stabiilsus kui XML-konfiguratsioonid on mittetäielikud.


36) Kuidas käsitleda testisõltuvusi eri klasside vahel? TestNG?

Klassidevaheliste sõltuvuste loomiseks TestNG võimaldab kasutada dependsOnGroups atribuut.

Näide:

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

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

See lähenemisviis aitab hallata mitme mooduli sõltuvused kus iga klass esindab moodulit (sisselogimine, armatuurlaud, makse jne).

See tagab, et sõltuvad moodulid käivituvad ainult siis, kui eeltingimuseks olevad testid õnnestuvad, säilitades testi terviklikkuse.


37) Mis on konfiguratsioonivead? TestNGja kuidas nendega toime tulla saab?

Konfiguratsioonitõrked tekivad siis, kui seadistamis- või lahtivõtmise meetodid on märgistatud @Before* or @After* ebaõnnestub.

Need võivad põhjustada vahelejäetavad sõltuvad testidisegi kui need testid õiged on.

Üldised põhjused:

  • Vale WebDriveri initsialiseerimine.
  • Andmebaasi või keskkonna seadistusprobleemid.
  • Parameetri vale konfiguratsioon.

Lahendused:

  • Kasutama proovima püüda plokid seadistusmeetodites.
  • kehtima alwaysRun = true et tagada puhastuse toimimine ka tõrgetest hoolimata.

Näide:

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

See tagab, et teie lahtivõtmise meetodid töötavad endiselt, säilitades testimiskeskkonna stabiilsuse.


38) Mis kasu on atribuutidest invocationCount ja threadPoolSize? TestNG?

Need omadused võimaldavad korduv ja paralleelne testide sooritamine sama meetodiga.

Näide:

@Test(invocationCount = 5, threadPoolSize = 2)
public void loadTest() {
    System.out.println("Running load test...");
}
Atribuut Kirjeldus
invocationCount Meetodi käivitamiste arv
threadPoolSize Samaaegsete lõimede arv

Kasutusjuhtum: Jõudlustestid, stabiilsuse kontrollimine või ebaühtlase käitumise taasesitus mitme testi käigus.


39) Kuidas käivitada ainult ebaõnnestunud teste? TestNG?

Pärast sviidi läbimist TestNG genereerib faili nimega testng-failed.xml aasta test-output kataloog.

Ainult ebaõnnestunud teste saab uuesti käivitada, käivitades:

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

Plussid:

  • Säästab aega vahelejätmisegaping edukad testid.
  • Hõlbustab suurtes sviitides silumist.
  • Tavaliselt kasutatakse CI-torustike kiireks uuesti testimiseks.

Saate selle ka integreerida Jenkins uuesti käivitamiseks järelehitusskripti kasutamine.


40) Millised on mõned piirangud? TestNG ja kuidas neid leevendada saab?

Vaatamata oma vastupidavusele, TestNG on mõned piirangud.

Piirang Leevendusstrateegia
XML-konfiguratsiooni keerukus Kasutage märkustepõhist konfiguratsiooni ja koostajaid
Piiratud natiivne aruandlus Integreeri ExtentReports või Allure
Sisseehitatud uuesti proovimise kontrolli pole Täitma IRetryAnalyzer
Lõimede ohutusprobleemid paralleelsetes jooksudes Kasutage lõimekohalikke WebDriveri eksemplare
Õppimiskõver algajatele Säilita mallipõhised projektistruktuurid

Nõuetekohase raamistiku kujundamise ja parimate tavade abil saab neid piiranguid minimeerida, tagades stabiilsed ja hooldatavad automatiseerimislahendused.


41) Kuidas te kuulajaid logimiseks ja ekraanipiltide jäädvustamiseks kasutate? Selenium-TestNG?

Kuulajad sisse TestNG aitavad jälgida testide teostamist ja teostada toiminguid, näiteks logimine, ekraanipiltide tegemine või tulemuste dünaamiline aruandlus.

Näidisrakendus:

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

Kasutus:

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

Eelised:

  • Jäädvustab vead automaatselt.
  • Parandab silumist visuaalsete tõendite abil.
  • Vähendab logide haldamise käsitsi tehtavat pingutust.

See tehnika on CI/CD automatiseerimistorustike puhul ülioluline, eriti ebaõnnestunud ehituste kaugdiagnostikas.


42) Mis vahe on IReporteril ja ITestListeneril? TestNG?

tunnusjoon IReporter ITestListener
Eesmärk Genereerib kohandatud aruandeid pärast testi käivitamist Tracks ja reageerib käitusaja testisündmustele
Kutsumine Pärast kõigi testide lõpetamist Testi elutsükli jooksul (algus, õnnestumine, ebaõnnestumine)
Väljund HTML/XML/JSON aruanded Logifailid, ekraanipildid, reaalajas juhtpaneelid
Tavaline kasutamine ExtentReports, Allure'i integratsioon Logimine, tõrgete käsitlemine, uuesti proovimise mehhanismid

Näide:

  • Kasutama IReporter ehitamiseks põhjalikud aruanded pärast testi lõpetamist.
  • Kasutama ITestListener eest reaalajas logimine või ekraanipildid.

Nad võivad ka olla kombineeritud terviklike automatiseerimisanalüütikasüsteemide loomiseks.


43) Kuidas te teostate brauseriteülest testimist, kasutades TestNG XML-konfiguratsioon?

Brauseriteülene testimine tagab, et sama funktsionaalsus töötab erinevates brauserites.

Konfiguratsiooni näide:

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

See lähenemisviis võimaldab paralleelne, mitme brauseriga teostus, kiirendades testide katvust platvormide lõikes.


44) Kuidas te integreerite TestNG Dockeriga või Selenium Võrk?

TestNG integreerub sujuvalt Dockeriseeritud Selenium võre hajutatud paralleeltestimise võimaldamiseks.

Sammud:

  1. Luua Selenium Ruudustik Dockeris kasutades ametnikku Selenium pilt:
    docker run -d -p 4444:4444 --name selenium-grid selenium/standalone-chrome
  2. Värskendused TestNG seadistamine:
  3. DesiredCapabilities caps = new DesiredCapabilities();
    caps.setBrowserName("chrome");
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), caps);
    
  4. Täitke oma sviit läbi Jenkins või CI-torujuhe.

Eelised:

  • võimaldab skaleeritav paralleeltestimine.
  • Vähendab keskkonna seadistamise üldkulusid.
  • Annab järjepidev testide sooritamine hajutatud konteinerite vahel.

45) Mis vahe on paralleelsel täitmisel sviidi, testi ja meetodi tasemel? TestNG?

Tase Paralleelne atribuut Täitmiskäitumine
Komplekt parallel="suites" Käivitab samaaegselt mitu sviiti
test parallel="tests" Jookseb <test> plokid samaaegselt
klass parallel="classes" Käivitab testiklasse paralleelselt
Meetod parallel="methods" Käivitab individuaalseid testimismeetodeid paralleelselt

Näide:

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

Parim harjutus:Kasutama parallel="classes" stabiilsuse tagamiseks Selenium testid jagatud juhi konfliktide vältimiseks.


46) Kuidas saab testide vahel andmeid jagada ilma globaalseid muutujaid kasutamata? TestNG?

TestNG annab ITestContext ja sõltuvussüst andmete dünaamiliseks jagamiseks.

Näide:

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

See väldib staatilisi muutujaid, säilitab niidi turvalisuse ja tagab andmete isoleerimine testide vahel.


47) Kuidas jäädvustada ja logida vahelejäänud teste? TestNG?

Vahelejäänud teste saab jäädvustada, kasutades onTestSkipped() aasta ITestListener Liides.

Näide:

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

Vahelejätmise põhjusedping:

  • Sõltuv testi ebaõnnestumine.
  • Tingimuslik vahelejätmineping kaudu SkipException.
  • Keskkonna kättesaamatus.

Parim harjutus:
Logi vahelejätmise põhjused ja virn traces jaoks tracCI-aruannete või armatuurlaudade funktsionaalsus.


48) Selgitage, kuidas REST API teste parameetriseerida, kasutades TestNG ja RestAssured.

TestNG'S @DataProvider integreerub elegantselt RestAssured API parameetrite määramiseks.

Näide:

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

Plussid:

  • Täidab sama API-kõnet mitme lõpp-punkti või kasuliku koormuse jaoks.
  • Lihtsustab erinevate sisendkomplektidega API-de regressioontestimist.
  • Integreerub sujuvalt CI-tööriistade ja aruannetega.

49) Kuidas luua kohandatud märkusi TestNG korduvkasutatavate testimismustrite jaoks?

Kohandatud märkused saavad standardiseerida korduvaid testikonfiguratsioone või valideerimisi.

Näide:

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

Kasutus:

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

Koos refleksiooniga saate neid annotatsioone dünaamiliselt lugeda, et grupeerida teste või juhtida tingimuslikku täitmist.

Seda tehnikat kasutatakse laialdaselt raamistiku metaprogrammeerimine isedokumenteerivate testide loomiseks.


50) Kuidas saab kombineerida Cucumber ja TestNG hübriidtestimise raamistike jaoks?

TestNG saab tegutseda kui testjooksja eest Cucumber BDD-stsenaariumid, mis pakuvad võimsat aruandlust ja paralleelsust.

Näidisjooksja:

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

Plussid:

  • Võimendid TestNG'S märkused, kuulajad ja aruandlus.
  • Toetab paralleelsete funktsioonide täitmine.
  • Integreerub Ahvatlema ja ExtentReports lihtsalt.

See hübriidne lähenemine ühendab BDD loetavus koos TestNG paindlikkus, ideaalne ettevõttetaseme raamistike jaoks.


🔍 Üleval TestNG Intervjuuküsimused reaalsete stsenaariumide ja strateegiliste vastustega

Allpool on 10 realistlikku ja valdkonnaga seotud TestNG intervjuuküsimused koos selgete ootuste ja tugevate näidisvastustega.

1) Kas saate selgitada peamisi eeliseid, mida pakub TestNG võrreldes JUnit?

Kandidaadilt oodatakse: Näidake üles arusaamist TestNGtäiustatud funktsioonid ja miks seda sageli ettevõtte automatiseerimiseks eelistatakse.

Näite vastus: "TestNG pakub mitmeid eeliseid, nagu paindlik testikonfiguratsioon, paralleelse käivitamise tugi, sõltuvad testimismeetodid, andmepõhine testimine andmepakkujatega ja sisseehitatud aruandlus. Need võimalused muudavad TestNG võimsam keerukate automatiseerimisraamistike jaoks, mis nõuavad skaleeritavust.


2) Kuidas sa seda kasutad? TestNG annotatsioonid testi täitmisvoo juhtimiseks?

Kandidaadilt oodatakse: Teadmised märkuste eesmärgist ja järjestusest.

Näite vastus: "TestNG pakub annotatsioone nagu @BeforeSuite, @BeforeClass, @BeforeMethod, @Test ja nende vastavad lahtivõtmise annotatsioonid. Need võimaldavad testi seadistamise ja puhastamise struktureeritud korraldamist. Näiteks @BeforeMethod käivitub enne iga testimismeetodit, mis on kasulik brauseri oleku initsialiseerimiseks.


3) Kirjeldage keerulist automatiseerimisprojekti, kus TestNG mängis võtmerolli.

Kandidaadilt oodatakse: Reaalne projektikogemus ja oskus probleeme lahendada.

Näite vastus: „Oma eelmises rollis töötasin projekti kallal, mis nõudis ulatuslikku regressioontestimist mitmes keskkonnas.“ TestNGparalleelne teostus ja rühmping funktsioonid võimaldasid meeskonnal kriitilisi pakette samaaegselt käitada, vähendades oluliselt täitmisaega ja säilitades samal ajal töökindluse.


4) Kuidas teha TestNG Kuidas aitavad rühmad teste tõhusalt korraldada ja läbi viia?

Kandidaadilt oodatakse: Arusaamine alusestping, sealhulgas kaasamise/välistamise mehhanismid.

Näite vastus: "Grupid sees TestNG „võimaldavad testide kategoriseerimist, näiteks suits, regressioon ja integratsioon. Testng.xml-i abil saan valikuliselt rühmi käivitada, ebastabiilseid teste välistada ja erinevaid testikomplekte hallata ilma koodi ennast muutmata.“


5) Kirjeldage olukorda, kus pidite veaotsingu ebaõnnestumise korral viga parandama. TestNG testid. Milline oli teie lähenemisviis?

Kandidaadilt oodatakse: Kriitiline mõtlemine ja probleemide lahendamise oskus.

Näite vastus: „Eelmisel ametikohal kohtasin mitmeid ebaõnnestumisi TestNG testid, mis näisid lokaalselt läbivat, aga CI-s ebaõnnestusid. Lubasin detailse logimise, vaatasin üle täitmisjärjekorra ja avastasin, et jagatud ressurssi ei lähtestatud testide vahel. Seejärel rakendasin @AfterMethod abil korralikud lahtivõtmise sammud, et tagada testi isoleerimine.“


6) Kuidas rakendate andmepõhist testimist, kasutades TestNG?

Kandidaadilt oodatakse: Andmepakkujate ja kasutusjuhtude mõistmine.

Näite vastus: „Loon meetodi @DataProvider, mis tagastab andmed objektimassiivides ja seon selle seejärel meetodiga @Test, kasutades atribuuti dataProvider. See võimaldab sama testi mitut iteratsiooni erinevate sisendkomplektidega, mis on kasulik vormide esitamise või API kasuliku koormuse variatsioonide valideerimiseks.“


7) Kuidas te testisõltuvusi haldate? TestNG?

Kandidaadilt oodatakse: dependsOnMethods või dependsOnGroups õige kasutamine.

Näite vastus: "TestNG lubab testisõltuvusi atribuutide dependsOnMethods ja dependsOnGroups kaudu. Ma kasutan sõltuvusi siis, kui üks test peab käivituma alles pärast teise edukat lõpuleviimist, näiteks tellimuse kontrollimiseks alles pärast selle loomist.


8) Kirjeldage, kuidas olete kasutanud TestNG pideva integratsiooni tööriistadega.

Kandidaadilt oodatakse: Reaalse maailma automatiseerimistorustiku kogemus.

Näite vastus: „Eelmisel töökohal integreerisin ma TestNG koos Jenkins Maveni ehituse seadistamine genereerima TestNG HTML- ja XML-aruanded. Jenkins seejärel arhiveeris aruanded ja kuvas tulemused pärast iga ehitustsüklit. See integratsioon aitas meeskonnal track tõrked kiiresti ja säilitavad vabanemise stabiilsuse.


9) Räägi mulle ajast, mil pidid töötama lühikeste tähtaegadega, hallates samal ajal mitut automatiseerimisülesannet.

Kandidaadilt oodatakse: Ajaplaneerimine ja oskus seada prioriteete.

Näite vastus: „Oma eelmises rollis pidin olemasolevaid ajakohastama TestNG testikomplekte, luues samal ajal uusi eelseisva versiooni jaoks. Prioritiseerisin ülesandeid ärimõju alusel, automatiseerisin esmalt kõige riskikamad valdkonnad ja kasutasin TestNG Gruppping et isoleerida valminud osad varajaseks ülevaatamiseks. See tagas õigeaegse tarnimise ilma kvaliteeti ohverdamata.“


10) Kuidas te kujundaksite skaleeritava TestNG raamistik suure rakenduse jaoks?

Kandidaadilt oodatakse: Architekstuuride mõistmine, mustrid ja parimad tavad.

Näite vastus: „Ma kujundaksin lehekülje objektimudeli (Page Object Model) abil modulaarse raamistiku, integreeriksin selle TestNG „Teostamise haldamiseks ja andmepõhiste stsenaariumide jaoks kasutaksin DataProviderit. Samuti konfigureeriksin paralleelse teostuse, tsentraliseeriksin utiliidid ja eksternaliseeriksin konfiguratsiooniseaded, et raamistik jääks rakenduse kasvades skaleeritavaks ja hooldatavaks.“

Võta see postitus kokku järgmiselt: