Top 50 TestNG Haastattelukysymykset ja vastaukset (2026)

ylin TestNG Haastattelukysymykset ja vastaukset

Valmistautuminen a TestNG haastattelu? On aika miettiä kysymyksiä, jotka korostavat vahvuuksiasi. Vankka TestNG Haastattelun perusta paljastaa rekrytointitiimien arvostaman syvyyden, itsevarmuuden ja valmiuden.

Tämän toimialan mahdollisuudet kattavat automaation kasvun, kehittyvät viitekehykset ja käytännön testaussovellukset, jotka vaativat teknistä ja ammatillista kokemusta. Kentällä työskentely vaatii toimialaosaamista, analyysitaitoja ja joustavaa osaamista, joka auttaa vasta-alkajia, keskitason ja kokeneita ammattilaisia ​​ratkaisemaan yleisiä kysymyksiä ja vastauksia teknisillä, perustason ja edistyneillä tasoilla.
Lue lisää ...

👉 Ilmainen PDF-lataus: TestNG Haastattelukysymykset ja vastaukset

ylin TestNG Haastattelukysymykset ja vastaukset

1) Mikä on TestNG ja miksi sitä käytetään automaatiotestauksessa?

TestNG (Test Next Generation) on testauskehys, joka on saanut inspiraationsa JUnit ja NUnit, mutta parannettu edistyneillä ominaisuuksilla, kuten ryhmittelyllä, sekvensoinnilla, parametrisoinnilla ja riippuvuuksien hallinnalla. Sitä käytetään ensisijaisesti automaatiotestauksessa testien suorituksen virtaviivaistamiseen, testien organisoinnin parantamiseen ja yksityiskohtaisten HTML- ja XML-raporttien luomiseen.

Tärkeimmät edut TestNG sisältää:

  • Tukee rinnakkaisten testien suorittaminen, mikä lyhentää kokonaiskäyttöaikaa.
  • Tarjoaa merkinnät jotka ohjaavat testivirtaa tehokkaasti.
  • Tarjoukset tietopohjainen testaus kautta @DataProvider merkintä.
  • synnyttää muokattavissa olevat raportit parempaa virheenkorjausta varten.

Esimerkiksi TestNG mahdollistaa savu-, regressio- ja integrointitestiryhmien suorittamisen itsenäisesti ilman testikoodin muokkaamista, mikä tarjoaa joustavuutta ja skaalautuvuutta suurissa automaatiokokonaisuuksissa.


2) Selitä TestNG elinkaari merkintöineen ja niiden suoritusjärjestyksineen.

TestNG Elinkaari määrittelee, miten testit alustetaan, suoritetaan ja lopetetaan. Sitä hallitaan annotaatioilla, jotka antavat testikululle rakenteen ja selkeyden.

huomautus Tuotetiedot Suoritusmääräys
@BeforeSuite Suoritetaan ennen kaikkia sarjan testejä 1
@BeforeTest Suoritetaan ennen <test> tagi XML:ssä 2
@BeforeClass Suoritetaan ennen nykyisen luokan ensimmäistä metodia 3
@BeforeMethod Suoritetaan ennen jokaista testimenetelmää 4
@Test Sisältää varsinaista testilogiikkaa 5
@AfterMethod Suoritetaan jokaisen testimenetelmän jälkeen 6
@AfterClass Suoritetaan kaikkien luokan metodien jälkeen 7
@AfterTest Juoksee perässä <test> tagi XML:ssä 8
@AfterSuite Suorittaa kaikkien sarjassa olevien testien jälkeen 9

Tämä jäsennelty järjestys varmistaa ennustettavan testiasennuksen ja -purkamisen, mikä on ratkaisevan tärkeää testien riippumattomuuden säilyttämiseksi.


3) Miten on TestNG erilainen kuin JUnit?

Vaikka molempia kehyksiä käytetään yksikkötestaukseen, TestNG tarjoaa vankemmat konfigurointi- ja rinnakkaissuoritusominaisuudet.

Ominaisuus JUnit TestNG
Rinnakkainen toteutus Rajoitettu tuki Täysi tuki
Merkinnät Vähemmän (@Before, @After) Rikkaampi (@BeforeSuite, @DataProvider)
Riippuvuuden hallinta Ei saatavilla Saatavilla käyttämällä dependsOnMethods
ryhmittymä Ei tuettu Tuettu käyttämällä groups
Parametrisointi Ulkoisten jakajan kautta Sisäänrakennettu XML:n kautta tai @DataProvider

Yhteenvetona, TestNG on edullinen yritystason automaatiotestaus ja integrointi työkaluihin, kuten Selenium, kun taas JUnit sopii erinomaisesti yksinkertaisempiin yksikkötesteihin.


4) Mitkä ovat TestNG merkinnät ja miten ne ovat hyödyllisiä?

Huomautukset sisään TestNG määritellä testimenetelmien rakenne ja käyttäytyminenNe poistavat monimutkaisen XML-konfiguraation tarpeen tarjoamalla deklaratiivisen testiohjauksen suoraan koodissa.

Yleisesti käytettyihin merkintöihin kuuluvat:

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

Esimerkiksi:

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

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

Tämä auttaa kehittäjiä järjestämään testien suorituksen loogisesti varmistaen, että asennus, testien suoritus ja purkaminen tapahtuvat määritellyssä järjestyksessä.


5) Selitä ryhmittelyn käsite TestNG.

Ryhmittely TestNG mahdollistaa testien loogisen luokittelun pienempiin, hallittaviin ryhmiin, kuten ”Savu”, ”Regressio” tai ”Järkeväisyys”.

Esimerkiksi:

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

Voit määrittää XML-pakettisi suorittamaan tiettyjä ryhmiä:

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

Hyödyt:

  • Helpottaa testitapausten valikoivaa suorittamista.
  • Parantaa CI/CD-putkien joustavuutta.
  • Säästää suoritusaikaa inkrementaalisten koontien aikana.

6) Miten parametrisointi voidaan saavuttaa TestNG?

Parametrisointi mahdollistaa datalähtöisen testauksen, jolloin testejä voidaan suorittaa useilla syöttötietojoukoilla. TestNG tukee kahta ensisijaista menetelmää:

  1. Käyttäminen @Parameters XML-merkintä:
  2. <parameter name="browser" value="chrome"/>
    @Test
    @Parameters("browser")
    public void launchBrowser(String browser) { ... }
    
  3. Käyttäminen @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) { ... }
    

Tämä joustavuus helpottaa suurten testijoukkojen ylläpitoa ja suorittamista eri ympäristöissä tai kokoonpanoissa.


7) Mitä riippuvuudet ovat TestNG ja miten niitä hallitaan?

Riippuvuudet sisään TestNG hallita testien suoritusjärjestystä muiden testitulosten perusteella käyttämällä dependsOnMethods or dependsOnGroups attribuutteja.

Esimerkiksi:

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

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

Jos riippuvainen menetelmä epäonnistuu, seuraava testi ohitetaan automaattisesti.

Tämä mekanismi estää virheellisen testisuorituksen ja auttaa ylläpitämään loogisen testin eheysSe on erityisen hyödyllinen monivaiheisille toiminnallisille työnkuluille, kuten kirjautuminen → toiminnon suorittaminen → tuloksen tarkistaminen.


8) Mitä erilaisia ​​toteutustapoja on olemassa? TestNG testit?

TestNG Testejä voidaan suorittaa useilla joustavilla tavoilla testausasetuksista riippuen:

  1. IDE:stä (Eclipse/IntelliJ): Napsauta hiiren kakkospainikkeella luokkaa tai XML fileRun asTestNG Test.
  2. Komentoriviltä: java -cp "path\testng.jar;bin" org.testng.TestNG testng.xml
  3. Rakennustyökalujen käyttö:
    • Maven: Configure surefire-plugin in pom.xml.
    • Gradle: Käyttää testng riippuvuus ja tehtävien konfigurointi.
  4. CI/CD-putkistojen kautta: Integroitu Jenkinsin tai GitHub Actionsin kanssa automatisoitua suoritusta varten.

Tämä monipuolisuus varmistaa yhteensopivuuden kehitys-, testaus- ja tuotantoympäristöissä.


9) Mitkä ovat TestNG kuuntelijat ja miksi he ovat tärkeitä?

Kuuntelijat sisään TestNG tarjota koukkuja testikäyttäytymisen mukauttamiseen seuraamalla testien suoritustapahtumia, kuten aloitusta, onnistumista, epäonnistumista tai ohittamista.

Yleisiä kuuntelijoita:

  • ITestListenerSeuraa testimenetelmätason tapahtumia.
  • ISuiteListenerTarkkailee sviittitason tapahtumia.
  • IReporter: Luo mukautettuja raportteja.

Esimerkiksi:

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

Kuuntelijoita käytetään usein ottamaan kuvakaappauksia epäonnistumisesta, tuottaa mukautetut lokittai integrointi raportointityökaluihin kuten Allure tai ExtentReports.


10) Mitkä ovat käytön edut ja haitat TestNG?

Aspect edut Haitat
Joustavuus Tukee ryhmittelyä, riippuvuuksia ja rinnakkaissuoritusta Monimutkainen XML-asetus suurille paketeille
Raportointi Tarjoaa yksityiskohtaisia ​​HTML- ja XML-raportteja Rajoitettu mukauttaminen ilman kuuntelijoita
Integraatio Toimii saumattomasti kanssa Selenium ja CI/CD-työkalut Hieman korkeampi oppimiskäyrä
Parametrisointi Sisäänrakennettu tuki datalähtöiselle testaukselle Vaatii ylläpitoa suurille tietojoukoille

Kaiken TestNG on vankka ja joustava kehys, joka sopii nykyaikaisiin automaatiotestausympäristöihin vähäisestä konfigurointitarpeestaan ​​huolimatta.


11) Miten voit priorisoida testitapauksia TestNG?

TestNG tarjoaa priority attribuutti kohdassa @Test annotaatio, joka määrittää testimetodien suoritusjärjestyksen. Testit, joilla on alhaisempi prioriteettiarvo, suoritetaan ensin.

Esimerkiksi:

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

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

Jos prioriteettia ei ole määritetty, oletusarvo on 0, ja metodit suoritetaan aakkosjärjestyksessä.

Paras harjoitus: Käytä prioriteettiarvoja säästeliäästi. Niiden liikakäyttö voi tehdä testijärjestyksestä jäykkää. Monimutkaisissa virroissa riippuvuuksien hallinta (dependsOnMethods) on helpommin ylläpidettävä kuin tiukka priorisointi.


12) Selitä rinnakkaissuorituksen käsite ja käyttö TestNG.

Rinnakkainen suoritus TestNG mahdollistaa useiden testien, luokkien tai metodien suorittamisen samanaikaisesti, mikä lyhentää merkittävästi kokonaissuoritusaikaa.

Voit ottaa tämän ominaisuuden käyttöön kohdassa testng.xml tiedosto:

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

Tuetut rinnakkaistilat:

  • tests
  • classes
  • methods
  • instances

edut:

  • Nopeampi palautesykli.
  • Moniydinprosessoreiden tehokas hyödyntäminen.
  • Skaalautuvuus suurille automaatiokokonaisuuksille.

Varmista kuitenkin, langan turvallisuus käytettäessä jaettuja resursseja, kuten WebDriveria tai tietokantayhteyksiä.


13) Mitä ovat tiedon tarjoajat TestNGMiten ne eroavat parametreista?

@DataProvider mahdollistaa tietopohjainen testaus toimittamalla testimenetelmille useita datajoukkoja.

Esimerkiksi:

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

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

Ero @Parameters- ja @DataProvider-kohteiden välillä:

Ominaisuus @Parameters @DataProvider
Tietolähde XML-tiedosto Java menetelmä
Tietotyyppi Yksittäinen tietojoukko Useita tietojoukkoja
Joustavuus Less Korkea
Käytä asiaa Ympäristömuuttujat Toistetut datapohjaiset testit

Siten, @DataProvider on suositeltava suoritettaessa yhtä testiä useilla tietojoukoilla, kuten kirjautumisen varmentamisessa useilla tunnistetiedoilla.


14) Miten voit poistaa testin käytöstä tai ohittaa sen? TestNG?

Voit poistaa testin käytöstä kohdassa TestNG käyttäen enabled attribuutti tai ohittamalla sen ohjelmallisesti.

1. käyttämällä enabled = false:

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

2. Ohittaminen suorituksen aikana käyttämällä SkipException:

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

Käytöstä poistaminen on hyödyllistä, jos tilapäinen deaktivointi epävakaita tai keskeneräisiä testejä poistamatta niitä. Ohittaminen on hyödyllistä ajonaikaiset ehdot, kuten testien ohittaminen ei-tuetuissa selaimissa.


15) Mikä on testng.xml-tiedoston rooli ja mitkä ovat sen pääkomponentit?

testng.xml tiedosto on konfiguraation selkäranka TestNGSe määrittelee testipaketit, testiryhmät, parametrit ja rinnakkaissuorituksen asetukset.

Rakenne-esimerkki:

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

Pääkomponentit:

  • <suite> – Määrittelee koko sarjan.
  • <test> – Edustaa testilohkoa.
  • <classes> – Listaa testiluokat.
  • <methods> – Suodataa tiettyjä testimenetelmiä.
  • <parameter> – Tarjoaa globaaleja tai testitason parametreja.

XML-tiedosto tarjoaa keskitetty hallinta ylisuoritusta muuttamatta koodia.


16) Miten voit luoda raportteja TestNG?

TestNG luo automaattisesti kahdenlaisia ​​raportteja:

  1. HTML-raportti (test-output/index.html) – Yhteenveto hyväksytyistä, hylätyistä ja ohitetuista testeistä.
  2. XML-raportti – Käytetään CI/CD-työkalujen integrointiin.

Edistynyttä raportointia varten TestNG integroituu seuraavien kanssa:

  • Laajuusraportit – Tarjoaa graafisia kojelaudan näkymiä ja yksityiskohtaisia ​​lokeja.
  • Allure-raportit – Tarjoaa visuaalista analytiikkaa testivaiheilla, kuvakaappauksilla ja lokeilla.

Esimerkkiintegraatio:

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

Nämä raportit ovat välttämättömiä trendien seuraamiseksi ja testikattavuuden heikkojen alueiden tunnistamiseksi.


17) Missä tehtaat ovat TestNG, ja miten ne toimivat?

Tehtaita TestNG käytetään luomaan testiluokkien dynaamiset instanssitNe mahdollistavat luokkien parametrisoidun instanssin luomisen ennen testien suorittamista.

Esimerkiksi:

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

edut:

  • mahdollistaa parametrisoidun objektin luonti.
  • Ihanteellinen selainten välinen testaus ja moniympäristöinen toteutus.
    Tehtaat täydentävät DataProvidereja, kun tarvitset erilaisia ​​objektikonfiguraatioita pelkän metoditason datavariaation sijaan.

18) Miten väitteitä voi käyttää TestNG?

Väitteitä käytetään odotettujen ja todellisten tulosten validointiin testimenetelmissä.

Väitteiden tyypit:

  1. Kovat väitteet (väiteluokka):
    Pysäyttää testin suorituksen välittömästi epäonnistumisen jälkeen.
  2. Assert.assertEquals(actual, expected);
    Assert.assertTrue(condition);
    
  3. Pehmeät väitteet (SoftAssert-luokka):
    Jatkaa suoritusta myös epäonnistumisen jälkeen ja raportoi kaikki ongelmat lopussa.
  4. SoftAssert soft = new SoftAssert();
        soft.assertEquals(actual, expected);
        soft.assertAll();
    
  5. Milloin käyttää:
    • Käytä kovia väitteitä kriittinen validointi kuten kirjautumisen onnistuminen.
    • Käytä pehmeitä väitteitä useita vahvistuksia yhden testimenetelmän sisällä.

19) Selitä @BeforeMethodin ja @BeforeClassin välinen ero kohdassa TestNG.

Aspect @BeforeMethod @BeforeClass
Teloitus Toimii ennen jokaista testausmenetelmä Toimii kerran ennen mikä tahansa luokan metodi
Laajuus Testimenetelmää kohden Testiluokkaa kohden
Yleinen käyttö Selaimen alustaminen ennen jokaista testiä Kokoonpanon tai selaimen asetusten lataaminen kerran

Esimerkiksi:

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

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

Käyttää @BeforeMethod kun jokainen testi vaatii puhtaan ympäristön, ja @BeforeClass raskaisiin alustustehtäviin, joita voidaan käyttää uudelleen.


20) Miten TestNG Tukeeko riippuvuusinjektiota ja mitkä ovat sen käyttötapaukset?

TestNG tukee riippuvuuden injektio sisäänrakennetun konteksti- ja konfiguraatio-objektien injektoinnin kautta, kuten ITestContext, XmlTesttai Method.

Esimerkiksi:

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

Käytä koteloita:

  • Testiparametrien noutaminen dynaamisesti.
  • Konfiguraatiotietojen, kuten ohjelmistopakettien nimien tai rinnakkaissuoritusasetusten, käyttö.
  • Testien joustavuuden parantaminen ilman kovakoodattuja riippuvuuksia.

Riippuvuusinjektio antaa kehittäjille mahdollisuuden kirjoittaa modulaarisia, kontekstitietoisia testejä jotka sopeutuvat dynaamisesti ympäristön muutoksiin.


21) Mitä eroa on @Factorylla ja @DataProviderilla? TestNG?

molemmat @Factory ja @DataProvider apua parametroinnissa, mutta ne toimivat eri tasot testiarkkitehtuurissa.

Ominaisuus @Factory @DataProvider
Laajuus Luokkataso Menetelmätaso
Tarkoitus Luo useita instansseja luokasta, jossa on eri tietoja Toimittaa dataa yhdelle testimenetelmälle
Teloitus Suorittaa koko luokan jokaiselle instanssille Suorittaa yhden metodin useita kertoja
Ihanteellinen käyttökotelo Selain- tai ympäristöjen välinen testaus Datapohjainen toiminnallinen testaus

Esimerkiksi:

  • Tehdas: Suorittaa koko luokan selaintyypin mukaan.
  • Tiedontoimittaja: Suorittaa yhden testimenetelmän useilla tietojoukoilla.

Käyttää @Factory kun itse objektin instanssi vaihtelee, ja @DataProvider toiminnallisen syötteen vaihtelulle saman objekti-instanssin sisällä.


22) Miten voit yrittää epäonnistuneita testitapauksia uudelleen automaattisesti? TestNG?

TestNG tarjoaa mekanismin suorita epäonnistuneet testitapaukset uudelleen käyttäen IRetryAnalyzer käyttöliittymä.

Esimerkki toteutus:

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

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

Käyttö:

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

Hyödyt:

  • Vähentää CI-putkistojen hilseilyä.
  • Käsittelee ohimeneviä verkko- tai ympäristöongelmia.

Paras harjoitus: Yhdistä uudelleenyrityslogiikka asianmukaiseen lokikirjaukseen ja kuvakaappauksiin ajoittaisten virheiden virheenkorjausta varten.


23) Mitä hyötyä ITestContextista on? TestNG?

ITestContext tarjoaa kontekstuaalista tietoa tietoja testiajosta, mukaan lukien ohjelman nimi, testin nimi, tulostushakemisto ja parametrit.

Esimerkiksi:

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

Tärkeimmät menetelmät:

  • getSuite() – Hakee sviittitason tiedot.
  • getName() – Palauttaa testin nimen.
  • setAttribute() / getAttribute() – Jaa tietoja testien välillä.

Se mahdollistaa datan jakaminen testimenetelmien tai luokkien välillä ja helpottaa dynaamista raportointia ja lokinkirjoitusta.


24) Miten voit luoda riippuvuuksia testiryhmien välille? TestNG?

Voit määrittää ryhmien välisiä riippuvuuksia käyttämällä dependsOnGroups attribuutti kohdassa @Test merkintä.

Esimerkiksi:

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

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

Tämä varmistaa, että verifyProfile ryhmä suoritetaan vain, jos kaikki testit Login ryhmä läpäisi onnistuneesti.

Se on erityisen hyödyllinen integraatiotestaus, jossa moduulit ovat riippuvaisia ​​muiden moduulien onnistuneesta suorituksesta (esim. kirjautuminen → profiili → uloskirjautuminen).


25) Kuinka voit jättää tietyt testimenetelmät huomiotta? TestNG XML-tiedosto?

Voit nimenomaisesti poissulkemismenetelmät XML-sviittitiedoston luokan sisällä käyttämällä <exclude> tunnisteita.

Esimerkiksi:

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

Tämä antaa testaajille mahdollisuuden poista tietyt menetelmät väliaikaisesti käytöstä muokkaamatta Java lähdekoodi – hyödyllinen suurissa paketeissa, joissa tarvitaan dynaamista sisällyttämistä tai poissulkemista julkaisusyklien tai sprinttien prioriteettien perusteella.


26) Kuinka voi TestNG olla integroitu Selenium WebDriver?

TestNG ja Selenium muodostavat tehokkaan yhdistelmän käyttöliittymän automatisointiin.

Tyypillinen integraatioasennus sisältää testien järjestämisen merkintöjen avulla, asennuksen/purkamisen hallinnan ja testien suorittamisen XML- tai CI-työkaluilla.

Esimerkiksi:

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

Integraation edut:

  • mahdollistaa rinnakkaiselaintestaus.
  • yksinkertaistetaan testien ryhmittely ja raportointi.
  • Toimii saumattomasti kanssa CI / CD-putkistot kuten Jenkins tai GitHub Actions.

27) Mitä parhaita käytäntöjä on käytössä? TestNG suurissa automaatiokehyksissä?

Parhaat käytännöt:

  1. Käyttää DescriptIve-nimeäminen: Nimeä testit käyttäytymisen, älä toteutuksen perusteella.
  2. Vipuvaikutusryhmittely: Luo loogisia testiryhmiä (Savu, Regressio).
  3. Vältä kovakoodausta: Käytä testidatalle parametreja tai ominaisuustiedostoja.
  4. Minimoi riippuvuudet: Pidä testitapaukset itsenäisinä aina kun mahdollista.
  5. Keskitetty konfigurointi: Käyttää testng.xml sviitin asennusta varten.
  6. Integroi raportointi: Käytä kuuntelijoita tai kolmannen osapuolen työkaluja, kuten ExtentReportsia.
  7. Käytä uudelleenyrityslogiikkaa varoen: Vältä peittelemästä aitoja vikoja.

Näiden noudattaminen varmistaa skaalautuvuus, ylläpidettävyys ja luettavuus yritystason automaatiossa.


28) Mitä eroa on @BeforeTestin ja @BeforeSuiten välillä? TestNG?

Ominaisuus @BeforeTest @BeforeSuite
Laajuus Juoksee ennen jokaista <test> tagi XML:ssä Toimii kerran ennen koko sviittiä
Taajuus Useita kertoja (jos useita <test> lohkot) Vain kerran sviittiä kohden
Yleinen käyttö Alusta testitason kokoonpano Määritä globaalit resurssit

Esimerkiksi:

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

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

Käyttää @BeforeSuite varten globaalit kokoonpanot (esim. tietokantayhteys) ja @BeforeTest varten testikohtaiset alustukset.


29) voi TestNG voidaanko sitä käyttää API-testaukseen? Miten?

Kyllä. TestNG voidaan käyttää tehokkaasti API-testaus integroimalla HTTP-asiakaskirjastoihin, kuten RestAssured or HTTPClient.

Esimerkiksi:

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

edut:

  • mahdollistaa väitteisiin perustuva validointi vastauksista.
  • Tukee parametrisointi ja tietopohjainen testaus useille päätepisteille.
  • synnyttää strukturoidut raportit REST API -validointeja varten.

Yhdistämällä TestNG ja RestAssuredin avulla testaajat voivat ylläpitää yhtenäistä automaatiokehystä sekä käyttöliittymä- että API-testaukselle.


30) Miten komentoriviltä annetaan parametreja? TestNG?

Voit ohittaa XML-parametrit suorituksen aikana välittämällä järjestelmäominaisuudet käyttämällä -D lippu.

Komentoesimerkki:

mvn test -Dbrowser=chrome -Denv=staging

Esimerkki koodista:

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

Tämä mahdollistaa dynaaminen ympäristövalinta CI/CD-putkistoissa ilman konfiguraatiotiedostojen muuttamista, mikä parantaa testauksen joustavuutta.


31) Miten voit hallita testien suoritusjärjestystä TestNG ilman prioriteetteja?

Käyttämisen sijaan priority, TestNG mahdollistaa hallinnan riippuvuudet ja XML-metodien järjestys.

Menetelmät:

  1. Käyttäminen dependsOnMethods:
  2. @Test
    public void login() { ... }
    
    @Test(dependsOnMethods = "login")
    public void verifyDashboard() { ... }
    
  3. XML-metodisarjan käyttäminen:
  4. <classes>
      <class name="com.test.LoginTests">
        <methods>
          <include name="login"/>
          <include name="verifyDashboard"/>
        </methods>
      </class>
    </classes>
    

Paras harjoitus: Suosi monimutkaisille virroille loogisia riippuvuuksia staattisten prioriteettien sijaan, mikä varmistaa vankat ja ylläpidettävät testipaketit.


32) Miten voit suorittaa tiettyjä testimetodeja komentoriviltä? TestNG?

TestNG mahdollistaa metoditason testien suoritus suoraan komentoriviltä käyttämällä XML- tai Maven Surefire -konfiguraatioita.

Vaihtoehto 1: XML-tiedoston käyttö

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

Vaihtoehto 2: Maven-komento

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

Tämä lähestymistapa mahdollistaa valikoiva toteutus, hyödyllinen yksittäisten metodien virheenkorjaukseen tai kriittisten toimintojen validointiin nopeiden koontien aikana.


33) Miten parametrisoit testejä ulkoisen Excel-tiedoston avulla? TestNG?

Excel-pohjainen parametrisointi on yleistä datalähtöisissä kehyksissä, joissa testidata muuttuu usein.

Käyttöönoton vaiheet:

  1. Käyttää Apache POI or JExcel lukea Excel-tietoja.
  2. Syötä se @DataProvider menetelmällä.

Esimerkiksi:

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

Tämä mahdollistaa saman testimenetelmän suorittamisen useilla reaalimaailman Excel-tietojoukoilla, mikä lisää joustavuutta ja kattavuutta.


34) Kuinka voit juosta TestNG testit Jenkinsissä tai CI/CD-putkistoissa?

TestNG integroituu saumattomasti Jenkins, GitLab CItai GitHub-toiminnot Mavenin kautta tai Gradle rakentaa.

Jenkinsin vaiheet:

  1. install Maven-integraatiolaajennus.
  2. Luo Freestyle- tai Pipeline-työ.
  3. Lisää mvn clean test rakennusvaiheena.
  4. HTML-raporttien konfigurointi koonnin jälkeen:
    • Raporttihakemisto: test-output
    • Indeksitiedosto: index.html

Hyödyt:

  • Mahdollistaa automatisoidun regressiotestauksen.
  • Tarjoaa ajoitettuja testiajoja ja trendien seurantaa.
  • Varmistaa testien yhdenmukaisen suorittamisen eri ympäristöissä.

35) Mikä on @Parameters-parametrin tarkoitus ja miten se eroaa @Optional-parametrista?

Molemmat merkinnät käsittelevät parametrisointia, mutta niillä on eri tarkoitukset.

Ominaisuus @Parameters @Optional
Tarkoitus Välittää parametrit XML-tiedostosta Tarjoaa oletusarvon, jos parametri puuttuu
Ilmoitus Käytetään XML:n kanssa <parameter> Käytetään testimenetelmän sisällä
Käyttäytyminen Heittää virheen, jos arvo puuttuu Käyttää vara-arvoa

Esimerkiksi:

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

Käyttäminen @Optional varmistaa testivakaus kun XML-määritykset ovat puutteellisia.


36) Miten käsittelet testiriippuvuuksia eri luokkien välillä? TestNG?

Luokkien välisten riippuvuuksien luomiseksi TestNG mahdollistaa sen käytön dependsOnGroups määrite.

Esimerkiksi:

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

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

Tämä lähestymistapa auttaa hallitsemaan monimoduuliriippuvuudet jossa jokainen luokka edustaa yhtä moduulia (Kirjautuminen, Kojelauta, Maksu jne.).

Se varmistaa, että riippuvat moduulit suoritetaan vain, jos edellytystestit onnistuvat, säilyttäen testien eheyden.


37) Mitä ovat konfigurointivirheet TestNG, ja miten niitä voidaan käsitellä?

Konfiguraatiovirheitä esiintyy, kun asennus- tai purkumenetelmiin on merkitty @Before* or @After* epäonnistua.

Ne voivat aiheuttaa riippuvat testit ohitettavaksivaikka nuo testit pitäisivätkin paikkansa.

Yleisiä syitä:

  • Virheellinen WebDriver-alustus.
  • Tietokannan tai ympäristön asennusongelmat.
  • Parametrin virheellinen määritys.

Ratkaisut:

  • Käyttää yritä saada kiinni lohkot asennusmenetelmissä.
  • käyttää alwaysRun = true varmistaakseen, että puhdistus toimii virheistä huolimatta.

Esimerkiksi:

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

Tämä varmistaa, että purkumenetelmäsi toimivat edelleen ja testiympäristön vakaus säilyy.


38) Mitä hyötyä on invocationCount- ja threadPoolSize-attribuuteista? TestNG?

Nämä ominaisuudet mahdollistavat toistettujen ja rinnakkaisten testien suorittaminen samalla menetelmällä.

Esimerkiksi:

@Test(invocationCount = 5, threadPoolSize = 2)
public void loadTest() {
    System.out.println("Running load test...");
}
Ominaisuus Tuotetiedot
invocationCount Metodin suorituskertojen määrä
threadPoolSize Samanaikaisten säikeiden määrä

Käyttötapa: Suorituskykytestaus, vakauden varmentaminen tai epätasaisen käyttäytymisen toistaminen useissa ajoissa.


39) Miten ajat vain epäonnistuneita testitapauksia TestNG?

Sviittiajon jälkeen TestNG luo tiedoston nimeltä testng-failed.xml vuonna test-output hakemistoon.

Voit suorittaa uudelleen vain epäonnistuneet testit suorittamalla:

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

edut:

  • Säästää aikaa ohittamalla onnistuneet testit.
  • Helpottaa virheenkorjausta suurissa paketeissa.
  • Yleisesti käytetty CI-putkistoissa nopeisiin uudelleentestauksiin.

Voit myös integroida tämän Jenkinsin kanssa käyttämällä uudelleensuorituksia varten tarkoitettua jälkikäteisskriptiä.


40) Mitä rajoituksia on TestNG ja miten niitä voidaan lieventää?

Kestävyydestään huolimatta, TestNG on muutamia rajoituksia.

rajoitus Lieventämisstrategia
XML-konfiguraation monimutkaisuus Käytä merkintöihin perustuvaa konfigurointia ja rakentajia
Rajoitettu natiiviraportointi Integroi ExtentReports tai Allure
Ei sisäänrakennettua uudelleenyritysten hallintaa Toteuttaa IRetryAnalyzer
Säikeiden turvallisuusongelmat rinnakkaisajossa Käytä säikeittäin luotuja WebDriver-instansseja
Oppimiskäyrä aloittelijoille Säilytä mallipohjaiset projektirakenteet

Asianmukaisella kehyssuunnittelulla ja parhailla käytännöillä näitä rajoituksia voidaan minimoida, mikä varmistaa vakaat ja ylläpidettävät automaatioratkaisut.


41) Miten käytät kuuntelijoita lokinnukseen ja kuvakaappausten ottamiseen? Selenium-TestNG?

Kuuntelijat sisään TestNG auttavat valvomaan testien suoritusta ja suorittamaan toimintoja, kuten lokin kirjaamista, kuvakaappausten ottamista tai tulosten dynaamista raportointia.

Esimerkki toteutus:

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

Käyttö:

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

Hyödyt:

  • Tallentaa virheet automaattisesti.
  • Parantaa virheenkorjausta visuaalisen todistusaineiston avulla.
  • Vähentää lokien ylläpidon manuaalista vaivaa.

Tämä tekniikka on ratkaisevan tärkeä CI/CD-automaatioputkissa, erityisesti epäonnistuneiden koontien etädiagnosoinnissa.


42) Mitä eroa on IReporterilla ja ITestListenerilla? TestNG?

Ominaisuus IReporter ITestListener
Tarkoitus Luo mukautettuja raportteja testin suorittamisen jälkeen Seuraa ja reagoi ajonaikaisiin testitapahtumiin
rukous Kaikkien testien jälkeen Testin elinkaaren aikana (aloitus, onnistuminen, epäonnistuminen)
ulostulo HTML/XML/JSON-raportit Lokitiedostot, kuvakaappaukset, reaaliaikaiset kojelaudat
Yleinen käyttö ExtentReports, Allure-integraatio Lokikirjaus, virheiden käsittely, uudelleenyritysmekanismit

Esimerkiksi:

  • Käyttää IReporter rakentamiseen kattavat raportit testin valmistumisen jälkeen.
  • Käyttää ITestListener varten reaaliaikainen lokikirjaus tai kuvakaappaukset.

Ne voivat myös olla yhdistetty rakentaa kokonaisvaltaisia ​​automaatioanalytiikkajärjestelmiä.


43) Miten suoritat selainten välisen testauksen käyttämällä TestNG XML-konfiguraatio?

Selainrajat ylittävä testaus varmistaa, että sama toiminnallisuus toimii eri selaimissa.

Esimerkki kokoonpanosta:

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

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

Tämä lähestymistapa mahdollistaa rinnakkainen, usean selaimen suoritus, nopeuttaen testien kattavuutta eri alustoilla.


44) Miten integroit TestNG Dockerin tai Selenium Verkko?

TestNG integroituu saumattomasti Dockerisoitu Selenium ruudukko hajautetun rinnakkaistestauksen mahdollistamiseksi.

Vaiheet:

  1. Perustaa Selenium Ruudukko Dockerissa käytä virkamiestä Selenium kuva:
    docker run -d -p 4444:4444 --name selenium-grid selenium/standalone-chrome
  2. Päivitykset TestNG setup:
  3. DesiredCapabilities caps = new DesiredCapabilities();
    caps.setBrowserName("chrome");
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), caps);
    
  4. Suorita pakettisi Jenkinsin tai CI-putken kautta.

Hyödyt:

  • mahdollistaa skaalautuva rinnakkaistestaus.
  • Vähentää ympäristön asennuskustannuksia.
  • Tarjoaa johdonmukainen testien suorittaminen hajautettujen konttien kautta.

45) Mitä eroa on rinnakkaissuorituksella sarja-, testi- ja metoditasolla? TestNG?

Taso Rinnakkaisattribuutti Suorituskäyttäytyminen
Sviitti parallel="suites" Suorittaa useita sviittejä samanaikaisesti
Testi parallel="tests" Toimii <test> lohkoja samanaikaisesti
luokka parallel="classes" Suorittaa testiluokkia rinnakkain
Menetelmä parallel="methods" Suorittaa yksittäisiä testimenetelmiä rinnakkain

Esimerkiksi:

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

Paras harjoitus:Käyttää parallel="classes" vakautta varten Selenium testit jaettujen kuljettajien konfliktien välttämiseksi.


46) Miten voit jakaa dataa testien välillä käyttämättä globaaleja muuttujia? TestNG?

TestNG tarjoaa ITestContext ja riippuvuuden injektio jakaa dataa dynaamisesti.

Esimerkiksi:

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

Tämä välttää staattisia muuttujia, ylläpitää säikeiden turvallisuutta ja varmistaa datan eristäminen testien välillä.


47) Miten ohitetut testit tallennetaan ja kirjataan? TestNG?

Voit tallentaa ohitetut testit käyttämällä onTestSkipped() vuonna ITestListener käyttöliittymä.

Esimerkiksi:

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

Syyt ohittamiseen:

  • Riippuvainen testin epäonnistuminen.
  • Ehdollinen ohitus kautta SkipException.
  • Ympäristö ei ole käytettävissä.

Paras harjoitus:
Kirjaa ohitussyyt ja pinonjäljet ​​jäljitettävyyttä varten CI-raporteissa tai koontinäytöissä.


48) Selitä, miten REST API -testejä parametrisoidaan käyttämällä TestNG ja RestAssured.

TestNG'S @DataProvider integroituu tyylikkäästi RestAssured API-parametrointia varten.

Esimerkiksi:

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

edut:

  • Suorittaa saman API-kutsun useille päätepisteille tai hyötykuormille.
  • Yksinkertaistaa regressiotestausta API-rajapinnoille, joissa on vaihtelevia syöttöjoukkoja.
  • Integroituu saumattomasti CI-työkaluihin ja -raportteihin.

49) Miten luot mukautettuja merkintöjä TestNG uudelleenkäytettäviä testausmalleja varten?

Mukautetut merkinnät voivat standardoida toistuvia testikonfiguraatioita tai validointeja.

Esimerkiksi:

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

Käyttö:

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

Yhdessä reflektion kanssa voit lukea näitä merkintöjä dynaamisesti ryhmitelläksesi testejä tai ohjataksesi ehdollista suoritusta.

Tätä tekniikkaa käytetään laajalti viitekehyksen metaohjelmointi rakentaa itsedokumentoivia testejä.


50) Miten voit yhdistää Cucumber ja TestNG hybridi-testauskehyksille?

TestNG voi toimia kuten testijuoksija varten Cucumber BDD-skenaariot, jotka tarjoavat tehokasta raportointia ja rinnakkaistamista.

Esimerkki juoksijasta:

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

edut:

  • hyödyntää TestNG'S merkinnät, kuuntelijat ja raportointi.
  • Tukee rinnakkaisominaisuuksien suorittaminen.
  • Integroituu viehättää ja Laajuusraportit helposti.

Tämä hybridilähestymistapa yhdistää BDD-luettavuus TestNG joustavuus, ihanteellinen yritystason kehyksille.


🔍 Huippu TestNG Haastattelukysymykset tosielämän skenaarioilla ja strategisilla vastauksilla

Alla on 10 realistista, toimialaan liittyvää TestNG haastattelukysymykset sekä selkeät odotukset ja vahvat esimerkkivastaukset.

1) Voitko selittää tärkeimmät käytön edut TestNG verrattuna JUnit?

Ehdokkaalta odotetaan: Osoita ymmärrystä TestNGn parannetut ominaisuudet ja miksi sitä usein suositaan yritysten automatisoinnissa.

Esimerkki vastauksesta: "TestNG tarjoaa useita etuja, kuten joustavan testikonfiguraation, rinnakkaissuorituksen tuen, riippuvaiset testimenetelmät, datalähtöisen testauksen DataProviders-palveluilla ja sisäänrakennetun raportoinnin. Nämä ominaisuudet tekevät TestNG tehokkaampi monimutkaisille automaatiokehyksille, jotka vaativat skaalautuvuutta.”


2) Miten käytät TestNG merkintöjä testin suoritusvirran ohjaamiseksi?

Ehdokkaalta odotetaan: Tieto merkintöjen tarkoituksesta ja järjestyksestä.

Esimerkki vastauksesta: "TestNG tarjoaa merkintöjä, kuten @BeforeSuite, @BeforeClass, @BeforeMethod, @Test, ja niitä vastaavat purkumerkinnät. Nämä mahdollistavat testien asetusten ja siivouksen jäsennellyn organisoinnin. Esimerkiksi @BeforeMethod suoritetaan ennen jokaista testimetodia, mikä on hyödyllistä selaimen tilan alustamisessa.”


3) Kuvaile haastavaa automaatioprojektia, jossa TestNG oli avainasemassa.

Ehdokkaalta odotetaan: Kokemusta aidoista projektitöistä ja kykyä ilmaista ongelmanratkaisukykyä.

Esimerkki vastauksesta: ”Edellisessä roolissani työskentelin projektin parissa, joka vaati laajaa regressiotestausta useissa eri ympäristöissä.” TestNGn rinnakkaissuoritus- ja ryhmittelyominaisuudet mahdollistivat kriittisten pakettien samanaikaisen suorittamisen, mikä lyhensi suoritusaikaa merkittävästi ja säilytti samalla luotettavuuden.”


4) Miten TestNG Auttavatko ryhmät testien tehokkaassa järjestämisessä ja suorittamisessa?

Ehdokkaalta odotetaan: Ryhmittelyn ymmärtäminen, mukaan lukien sisällyttämis-/poissulkemismekanismit.

Esimerkki vastauksesta: "Ryhmät sisään TestNG mahdollistavat testitapausten luokittelun, kuten savu-, regressio- ja integrointitestit. Käyttämällä testng.xml:ää voin valikoivasti suorittaa ryhmiä, sulkea pois epävakaita testejä ja hallita eri testisarjoja muokkaamatta itse koodia.”


5) Kuvaile tilannetta, jossa jouduit debugaamaan virheen. TestNG testit. Mikä oli lähestymistapasi?

Ehdokkaalta odotetaan: Kriittinen ajattelu ja vianmääritystaidot.

Esimerkki vastauksesta: "Edellisessä työpaikassani kohtasin joukon epäonnistumisia TestNG testejä, jotka näyttivät läpäisevän paikallisesti, mutta epäonnistuivat CI:ssä. Otin käyttöön yksityiskohtaisen lokikirjauksen, tarkistin suoritusjärjestyksen ja havaitsin, että jaettua resurssia ei nollattu testien välillä. Sitten toteutin asianmukaiset purkamisvaiheet käyttämällä @AfterMethod-työkalua varmistaakseni testien eristämisen.”


6) Miten toteutat datalähtöisen testauksen käyttämällä TestNG?

Ehdokkaalta odotetaan: Tietojen tarjoajien ja käyttötapausten ymmärtäminen.

Esimerkki vastauksesta: ”Luon @DataProvider-metodin, joka palauttaa dataa Object-taulukoissa, ja sidon sen sitten @Test-metodiin dataProvider-attribuutin avulla. Tämä mahdollistaa saman testin useiden iteraatioiden suorittamisen eri syötejoukoilla, mikä on hyödyllistä lomakkeiden lähetysten tai API-hyötykuorman muunnelmien validoinnissa.”


7) Miten hallitset testiriippuvuuksia TestNG?

Ehdokkaalta odotetaan: dependsOnMethods- tai dependsOnGroups-metodien asianmukainen käyttö.

Esimerkki vastauksesta: "TestNG sallii testiriippuvuudet dependsOnMethods- ja dependsOnGroups-attribuuttien kautta. Käytän riippuvuuksia, kun testi on suoritettava vasta toisen suorituksen jälkeen, kuten tilauksen varmentamisessa vasta sen luomisen jälkeen.”


8) Kuvaile, miten olet käyttänyt TestNG jatkuvan integraation työkaluilla.

Ehdokkaalta odotetaan: Kokemusta reaalimaailman automaatioputkesta.

Esimerkki vastauksesta: "Edellisessä työssäni integroin TestNG Jenkinsin kanssa määrittämällä Maven-koontiversion luomaan TestNG HTML- ja XML-raportit. Jenkins arkistoi sitten raportit ja näytti tulokset jokaisen koontijakson jälkeen. Tämä integraatio auttoi tiimiä seuraamaan virheitä nopeasti ja ylläpitämään julkaisun vakautta.”


9) Kerro minulle tilanteesta, jossa jouduit työskentelemään tiukkojen aikarajojen puitteissa ja samalla hallinnoimaan useita automaatiotehtäviä.

Ehdokkaalta odotetaan: Ajanhallinta ja kyky priorisoida.

Esimerkki vastauksesta: "Viimeisimmässä roolissani minun piti päivittää olemassa olevia TestNG testipaketteja ja samalla luon uusia tulevaa julkaisua varten. Priorisoin tehtävät liiketoimintavaikutusten perusteella, automatisoin riskialttiimmat alueet ensin ja käytin TestNG ryhmittely eristääkseen valmiit osiot varhaista tarkistusta varten. Tämä varmisti oikea-aikaisen toimituksen laadusta tinkimättä.”


10) Miten suunnittelisit skaalautuvan TestNG kehys suurelle sovellukselle?

Ehdokkaalta odotetaan: Architekstuurien ymmärtäminen, mallit ja parhaat käytännöt.

Esimerkki vastauksesta: "Suunnittelisin modulaarisen kehyksen käyttäen Page Object Modelia, integroisin TestNG suorituksen hallintaan ja DataProviders-palveluita datalähtöisissä skenaarioissa. Konfiguroisin myös rinnakkaissuorituksen, keskittäisin apuohjelmat ja ulkoistaisin määritysasetukset, jotta kehys pysyy skaalautuvana ja ylläpidettävänä sovelluksen kasvaessa.”

Tiivistä tämä viesti seuraavasti: