i det här inlägget, Vi ger dig några av de verkliga TestNG intervjufrågor. Vårt mål är inte bara att hjälpa dig att behärska ämnet utan att se dig göra det bra under intervjuerna. Det är därför våra experter har skrivit svar med en absolut enkelhet för att göra lärandet mer effektivt.

TestNG är främst ett enhetstestramverk för Java-utvecklare. Det är dock ganska enkelt att integrera TestNG med selen så att testarna också kan använda den för funktionell och regressionstestning.

om du redan använder TestNG i dina projekt, vänligen fortsätt direkt till TestNG-intervjufrågorna. För dem som just har börjat lära sig TestNG, rekommenderar vi dem att följa nedanstående två tutorials.

  • TestNG handledning för nybörjare
  • Selenium Webdriver handledning

Real TestNG intervjufrågor

Real TestNG Intervju Frågor Svar

Q-1: Berätta för mig kort vad som är TestNG och varför ska du använda det?

TestNG är ett innovativt testramverk byggt ovanpå JUnit-ramverket. Dess primära konsumenter är Java-utvecklare som använder den för enhetstestningsändamål.

den levereras med många användbara funktioner som TestNG-anteckningar och TestNG-påståenden som ger mycket flexibilitet för testare. Det finns också ett par solida skäl att använda TestNG för automatiseringstestning.

  • rapporteringen i TestNG-ramverket är en av dess hörnstensfunktioner. Det kan generera rapporter både i HTML och XML-format. Rapporten ger många indikatorer för att förutsäga projektets hälsa. Det inkluderar räkningen av godkända / misslyckade fall, åldern på en defekt och mycket mer.
  • eftersom selen inte har en inbyggd rapportgenerator är TestNG-rapporten en idealisk kandidat som ska användas för generering av Selenrapporter.
  • TestNG ger en utmärkt undantagshanteringsmekanism för att säkerställa sömlöst genomförande av ditt testautomatiseringsprojekt.

Q-2: Vilka är kärnfunktionerna i TestNG framework?

några av de anmärkningsvärda funktionerna i TestNG är följande.

  • samtidighet-TestNG kan köra flera tester parallellt. Det skapar en tråd för varje test och utför dem på ett trådsäkert sätt.
  • beroende-I TestNG kan vi lägga till en testmetod som beror på en enda eller en grupp testmetoder. Denna funktion säkerställer utförandet av beroendemetoderna före det faktiska testet.
  • prioritering-vi kan ange testordningen med parametern” prioritet ” i @Test-anteckningen.
  • gruppering-det är en unik egenskap hos TestNG som inte fanns i JUnit-ramverket. Vi kan använda den för smart/effektiv distribution av tester. Det låter oss skapa grupper med egna testmetoder och grupper som har andra grupper. Observera att vi bara kan ange grupper i ”TestNG.XML ” – fil. Även taggarna inkludera / utesluta kan hjälpa oss att anpassa testkörningen i grupper.
  • parameterisering-TestNG har en parameteranteckning som tillåter värden att passera som argument för att testa metoder.
  • Data Sourcing-TestNG introducerar data provider annotation att ta input från externa källor som excel.

Q-3: Vilka är de vanliga anteckningarna tillgängliga i TestNG?

TestNG-anteckningar styr hur testmetoden under dem kommer att köras. De börjar med symbolen”@”.

//TestNG annotation [email protected]<annotation-name>(<attribute-name>=<value>)public void SampleTest() {...}

TestNG stöder femton olika anteckningar.

  1. Test
  2. Föremetod
  3. Eftermetod
  4. Föreklass
  5. Efterklass
  6. Efterklass
  7. Företest
  8. Eftertest
  9. Föresuite
  10. aftersuite
  11. Beforegroups
  12. Aftergroups
  13. Dataprovider
  14. Factory
  15. lyssnare
  16. parametrar

Q-4: Vilka är standard påståenden tillgängliga i TestNG?

påståenden låt oss inte bara lägga till validering i testen utan också hjälpa till att bestämma deras tillstånd (godkänd/misslyckad).

  • assertEquals-passerar om argumenten matchar annars misslyckas.
  • assertNotEquals-om de faktiska och förväntade värdena matchar, misslyckas påståendet.
  • assertTrue-passerar om inmatningsvillkoret är sant annars kastar AssertionError.
  • assertFalse-passerar om ingångs villkoret är falskt annat kastar AssertionError.
  • assertNull-utför null-testet på ett objekt. Vid en null avbryts testet med ett undantag.
  • assertNotNull-det gör motsatsen till ” asserNull.”Testmetoden bryts med ett undantag när man upptäcker ett icke-null-objekt.

Q-5: Vad är TestNG hårda och mjuka påståenden och hur skiljer de sig?

hårda påståenden bryter ett test omedelbart med en AssertException efter att assert method rapporterar fel. Om ett av de många testfallen misslyckas fortsätter körningen med de återstående testerna.

men i vissa fall vill vi att testet ska slutföra alla steg även om en av dem misslyckas. TestNG erbjuder att använda en mjuk påstående i sådana scenarier.

en mjuk påstående kastar inte ett undantag på misslyckande istället samlar det alla fel tills det är klart. Och det är så vi kunde klara av att köra alla steg i ett test.

du kan läsa mer om dessa och se exempel från nedanstående handledning.

  • hårda påståenden i TestNG
  • mjuka påståenden i TestNG

Q-6: Vad är syftet med ”TestNG.XML ” fil?

Den ” TestNG.XML ” är en konfigurationsfil som innehåller TestNG-projektinställningarna. Det representerar också en TestNG-svit som kan innehålla en eller flera tester.

vi kan göra flera anpassningar med den här filen. Listan är som följer.

  • Ställ in flera tester för att köra med ett enda klick.
  • inkludera / utesluta testfall.
  • välj en eller flera specifika grupper.
  • Försörjningsparametrar för tester.
  • introducera beroenden på gruppnivå.
  • Setup testa parallellisering.
  • konfigurera lyssnare för tester.

Q-7: kan du köra ett TestNG-test utan ” TestNG.XML ” fil? Om ja, hur då?

Ja, Vi kan köra testet direkt från kommandoraden med ant eller maven. Vi kan behöva skicka önskad klass, metod eller gruppnamn i kommandot.

vi kan dock bara använda en begränsad uppsättning TestNG-funktioner utan ” TestNG.XML ” – fil.

Q-8: Hur man skickar ett strängvärde till ett test med ” TestNG.XML ” fil?

vi kan leverera ett strängvärde med parametertaggen till önskat testfall inuti ” TestNG.XML.”

<suite name="TestNG Param Suite" verbose="1"> <parameter name="my-string-param" value="my string value" /> <test name="Param Test"> <classes> <class name="com.techbeamers.test.ParamTest"> <methods> <include name="paramTest" /> </methods> </class> </classes> </test></suite>

Därefter måste vi komma åt strängvärdet med parameteranteckningen precis ovanför testet i Java-koden.

package com.techbeamers.test;import org.testng.annotations.Parameters;import org.testng.annotations.Test;public class ParamTest {/** * * Following method takes one param as input argument. * Its value is set * at the suite level. */@Parameters({ "my-string-param" })@Testpublic void paramTest(String strValue) {System.out.println("The input parameter is: " + strValue);}}

Q-9: Hur man skickar en valfri parameter till ett test med ”TestNG.XML ” fil?

vi kan leverera en valfri parameter med hjälp av” @Optional ” anteckning.

nedan är provet ” TestNG.XML ” – fil.

<suite name="Optional Param Suite" verbose="1"> <test name="Optional Param"> <parameter name="opt-value" value="optional text" /> <classes> <class name="com.techbeamers.test.OptionalParam" /> </classes> </test></suite>

här är Java-koden för att komma åt den valfria parametern.

package com.techbeamers.test; import org.testng.annotations.Optional;import org.testng.annotations.Parameters;import org.testng.annotations.Test; public class OptionalParam{ @Parameters({ "opt-value" }) @Test public void optionTest(@Optional(opt-value") String strValue) { System.out.println("The value is: " + strValue); }}

Q-10: Hur man kör flera TestNG tester parallellt?

TestNG stöder samtidiga avrättningar av tester. Vi kan använda den här funktionen för att köra testerna i olika webbläsare samtidigt.

i TestNG XML finns en” suite ”- tagg som har ett” parallellt ” – attribut. Denna tagg kan parallellisera testkörningen på olika nivåer.

vi kan ställa in attributet ”parallell” med något av följande värden.

  • Test-utför alla tester parallellt som faller under” test ” – taggen.
  • klasser-utför alla tester parallellt motsvarande de ” klasser ”som nämns i” klasser ” – taggen
  • metoder-utför alla tester parallellt specificerade med @Test-anteckningen.
  • instanser-utför de tester parallellt som har samma InstanceId annat kommer att köra dem i en annan tråd.

Q-11: Hur blockerar du en testmetod från körning i TestNG?

vi kan ställa in attributet ”enabled” till ”false” för att en testmetod ska blockeras. Dess standardvärde är ” sant.”

att vrida denna flagga till” false ” kommer att blockera testet från körning.

package com.techbeamers.test;import org.testng.annotations.Test;public class SimpleTest {@Test(enabled = false) public void testOne() { System.out.println("Test one."); }@Test(enabled = true) public void testTwo(String strValue) { System.out.println("Test two."); }}

Q-12: Hur blockerar du ett TestNG-test beroende på ett tillstånd?

vi kan använda TestNG: s annotation transformer för att initiera den inaktiverade egenskapen för en @Test annotation med ett ”sant” eller ”falskt” värde.

public class TestNGTest implements IAnnotationTransformer { public void transform(ITest annotation, Class myClass, Constructor myConstructor, Method myMethod){if (is_test_disabled(myMethod.getName()))) { annotation.setEnabled(false); } }public boolean is_test_disabled(String strName){ // Check if the test is disabled or not. }}

Q-13: hur man gör ett test beroende av en annan i TestNG?

vi kan genomdriva TestNG: s beroendefunktion i ett sådant fall. Det ger attributet ”dependsOnMethods” för att deklarera beroenden av en testmetod. Följ nedanstående exempel.

package com.techbeamers.test;import org.testng.annotations.Test;public class TestNGDependency {@Testpublic void stepOne() {System.out.println("Executing stepOne");}@Test(dependsOnMethods = { "stepOne" })public void stepTwo() {System.out.println("Executing stepOne->stepTwo");}@Test(dependsOnMethods = { "stepOne", "stepTwo" })public void stepThree() {System.out.println("Executing stepOne->stepTwo->stepThree");}}

Q-14: hur man kontrollerar ordningen för testkörning i TestNG?

vi kan ställa in attributet ”preserve-order” till ”true” i ”TestNG.XML.”

<test name="MyTestOrder" preserve-order="true"> <classes> <class name="TestNGOrder"> <methods> <include name="stepOne" /> <include name="stepTwo" /> </methods> </class> </classes></test>

Alternativt kan vi ange ett fördefinierat sekvensvärde i attributet ”prioritet” för varje test.

package com.techbeamers.test;import org.testng.annotations.Test;public class TestNGOrder {@Test(priority = 1)public void stepOne() {System.out.println("Executing stepOne");}@Test(priority = 2)public void stepTwo() {System.out.println("Executing stepOne->stepTwo");}@Test(priority = 3)public void stepThree() {System.out.println("Executing stepOne->stepTwo->stepThree");}}

Q-15: Vad händer om prioriteten för ett testfall i TestNG är noll?

som standard får varje testfall i TestNG nollprioritet.

låt oss anta: om det finns två fall – ett med prioritet 1 och ett annat med standardvärdet, kommer det senare att köras först.

observera – ett testfall med lägre prioritetsvärde kommer alltid att ha högre prioritet.

Q-16: Vad är Dataprovider annotation i TestNG och varför använder du det?

TestNG framework introducerade data provider annotation för att stödja datadriven testning. Det gör att vi kan använda både interna och externa ingångskällor.

om ingångsstorleken är liten kan vi behålla data i projektfilerna. Men i de flesta fall är behovet att ha en stor dataset för att mata in testfallen. Och ingen testare eller en utvecklare skulle vilja svälla sin kod med en så stor uppsättning inmatning.

därför är lösningen att använda TestNG” @DataProvider ” – anteckningen. Det kan tillåta ett test att acceptera inmatning från externa datakällor som CSV, MS Excel och många andra.

nedan hittar du ett enkelt exempel på att använda anteckningen” @DataProvider ” för att läsa indata från en 2-D-array.

package com.techbeamers.test;import org.testng.annotations.Test;import org.testng.annotations.DataProvider;public class DataDrivenTest {@Test(dataProvider="empSalary")public void processSalary(String empName, int empSal) {System.out.println("Employee: " + empName);System.out.println("Salary: " + empSal);}@DataProviderpublic Object empSalary() {return new Object{{"John", 15000}, {"Andi", 18000}};}}

Q-17: Vad är Fabriksanteckning i TestNG och varför använder du den?

”@ Factory ” som namnet antyder är en anteckning som kan producera tester vid körning med de angivna datamängderna/förhållandena.

denna anteckning löser ett vanligt problem med att utföra tester med olika datamängder utan att uttryckligen skapa dem.

en annan fördel det medför är att låta parametrarna passera för att testa klasser medan de instansieras.

kolla in exemplet nedan för att förstå det på djupet.

package com.techbeamers.test;import org.testng.TestNG;public class TestClass{ private int arg; public TestClass(int arg) { this.arg = arg; } @Test public void firstTest() { int param = arg + 1; System.out.println("firstTest(): " + param); } @Test public void secondTest() { int param = arg + 2; System.out.println("secondTest(): " + param); }} public class TestFactory{ @Factory public Object factoryMethod() { return new Object { new TestClass(0), new TestClass(1) }; }}
  • måste läsa – hur man använder TestNG Fabriksmetod?

Q-18: hur skiljer sig @ Factory-anteckningen från @DataProvider?

@Factory-anteckningen leder till följande åtgärder.

  • det skapar instanser av en testklass vid körning.
  • alla testmetoder i TestNG-klassen körs med den givna datauppsättningen.

om vi använder @DataProvider, händer följande.

  • dataleverantören är endast tillämplig för de testmetoder som kommer omedelbart efter det.
  • det kan köra en specifik metod no. antal gånger är lika med radräkningen som returneras av dataleverantörens hanterare.

Q-19: Vad är lyssnare i TestNG och varför använder du dem?

TestNG framework definierar en uppsättning klasser som kallas lyssnare för att övervaka testens olika tillstånd.

lyssnarna utökar följande markörgränssnitt – ” org.testng.ITestListener”. Med hjälp av dem kan vi improvisera beteendet hos ett TestNG-test.

nedan är listan över lyssnare som TestNG implementerar.

  • iexecutionlistener-det håller reda på en TestNG kör från början till slut.
  • IAnnotationTransformer-det kan anpassa en TestNG anteckning och få det att fungera därefter.
  • ISuiteListener-den övervakar start och slut på en testsvit.
  • ITestListener-det håller kontroll på olika tillstånd av en TestNG test.
  • IConfigurationListener – det spårar de händelser som utlöses w.r.t. konfigurationsmetoder.
  • IMethodInterceptor-det ger oss möjlighet att ändra listan över testmetoder under en TestNG-körning.
  • IInvokedMethodListener – det lägger hanterare att åberopa innan du ringer TestNG före och efter metoder.
  • IHookable-det gör det möjligt att ställa in en återuppringningsmetod för att utlösa före en testmetod.
  • IReporter-det låter oss producera en testrapport för övergripande utförande.

Q-20: vilka är de metoder som finns i TestNG s itestlistener gränssnitt?

itestlistener gränssnitt kan fånga följande händelser/metoder.

  • onStart – det utlöses efter instantiering av testklassen och före samtalet till någon konfigurationsmetod.
  • onTestSuccess-det utlöses om ett test lyckas.
  • onTestFailure-det utlöses om ett test misslyckas.
  • onTestSkipped – det utlöses för varje test som ignoreras.
  • onTestFailedButWithinSuccessPercentage – det utlöses för varje test som misslyckas men förblir under framgångsprocenten.
  • onFinish – det utlöses efter att alla tester har slutförts och ingen konfigurationsmetod finns kvar.

Q-21: hur grupperar man tester på metodnivå i TestNG?

vi kan ange gruppnamnen i attributet ”grupper” för @Test annotation strax före testmetoderna.

det är användbart för att utföra alla tester bara genom att nämna gruppen.

i exemplet nedan har vi en episk, två berättelser och ett nej. av tester under dem. Vi har skapat berättelsecentrerade grupper och specificerat dem på metodnivå.

package com.techbeamers.test;import org.testng.annotations.Test;public class TestEpic{ @Test(groups={"story1","story2"}) public void funcTest1() { System.out.println("test1"); } @Test(groups="story1") public void funcTest2() { System.out.println("test2"); } @Test(groups="story2") public void funcTest3() { System.out.println("test3"); }}

Q-22: Hur grupperar man tester på klassnivå i TestNG?

om de flesta av våra tester faller under samma grupp, behöver du inte upprepa attributet ”grupper” för varje testmetod. Vi kan kommentera klassen med @Test och använda attributet ”grupper”. Det kommer då att gälla för alla offentliga metoder i klassen.

till exempel i nedanstående testklass ”TestEpic” kommer gruppen ”story1” definierad på klassnivå att kaskad till alla sina offentliga testmetoder.

package com.techbeamers.test;import org.testng.annotations.Test;@Test(groups="story1")public class TestEpic{ @Test public void funcTest1() { System.out.println("test1"); } @Test public void funcTest2() { System.out.println("test2"); } @Test(groups="story2") public void funcTest3() { System.out.println("test3"); }}

Q-23: Hur kommer du att utföra tester från en TestNG-grupp?

vi kan följa någon av de två metoderna för att köra en specifik grupp i TestNG.

  • kör via TestNG XML-fil.
  • kör från Eclipse IDE.

i TestNG XML finns en” grupper ”- tagg som har undertaggar, nämligen ”inkludera” / ” exkludera.”vi kan lägga till våra grupper i taggen ”inkludera” för att meddela TestNG för att köra alla tester inuti den.

ramverket söker efter de inkluderade grupperna i testklasserna som läggs till i taggen ”klasser”. Vi kan också ignorera en grupp genom att lägga till den i ”Uteslut” – elementet.

i exemplet nedan körs tester för gruppen” story1″.

<?xml version="1.0" encoding="UTF-8"?><suite name="Suite"> <test name="story1"> <groups> <run> <include name="story1" /> <exclude name="story2" /> </run> </groups> <classes> <class name="com.techbeamers.test.TestEpic" /> </classes> </test></suite>

för att utföra grupper från Eclipse kan vi följa stegen nedan.

  • starta Eclipse, klicka på” Kör ”- menyn och tryck på ” Kör konfigurationer.”
  • klicka på TestNG, sedan på” ny konfiguration ” och ange en etikett.
  • Under projektmenyn trycker du på knappen ”Bläddra” och väljer projektet.
  • flytta till avsnittet ”grupper”, tryck igen på” Bläddra ” – knappen för att lista grupperna.
  • välj en grupp att köra.
  • tryck på” Apply ”- knappen och fortsätt sedan till ” Run.”

Q-24: hur man kör ett enda TestNG-test med maven?

för att köra ett enda TestNG-test bör vi använda följande Maven-kommando.

mvn -Dtest=<Test Class>#<Test Method> test

ovanstående kommando stöder också jokertecken i klass/metodnamn.

Q-25: Hur kör man en uppsättning TestNG-grupper med maven?

om vi har flera testgrupper, t.ex. story1, story2, story3, kan vi köra dem alla med ett enda kommando.

mvn test -Dgroups=story1,story2,story3

Quick wrap up-Real TestNG intervjufrågor & svar

ovanstående TestNG intervjufrågor skulle utan tvekan hjälpa dig under en realtid faceoff med intervjuaren. Vi rekommenderar att du läser dem noggrant och gör det minst 2-3 gånger.

du kan följa oss på våra sociala medier (Facebook/Twitter) konton för att se mer tekniska och praktiska saker.

Bäst,

TechBeamers

Lämna ett svar

Din e-postadress kommer inte publiceras.