Grupper i TestNG

โšก Smart oppsummering

Grupper i TestNG lar deg merke testmetoder med logiske etiketter, og deretter inkludere eller ekskludere dem gjennom en XML-pakke. Denne tilnรฆrmingen forenkler rรธyk-, regresjons- og avhengighetsdrevne kjรธringer uten omskriving. Java kode.

  • ๐Ÿท๏ธ Annotasjonssyntaks: Bruk @Test(groups = {"smoke","regression"}) รฅ merke en hvilken som helst metode med ett eller flere logiske gruppenavn.
  • ๐Ÿ“œ XML-kontroll: Ocuco <groups><run><include> og <exclude> Tagger i testng.xml bestemmer hvilke taggede metoder som faktisk kjรธres.
  • ๐Ÿ”— avhengig~~POS=TRUNC: Ocuco dependsOnGroups Attributtstyrker rekkefรธlge slik at nรธdvendige grupper alltid fullfรธres fรธr avhengige tester starter.
  • ๐Ÿค– AI-valg: AI-testpรฅvirkningsverktรธy tilordner kodeendringer til relevante grupper, slik at bare berรธrte programserier kjรธrer pรฅ hver commit.
  • ๐Ÿงช TestNG 7.x: Moderne utgivelser holder grupper fullt kompatible med parallell utfรธrelse, lyttere og Maven Surefire-pipelines.

Grupper i TestNG

TestNG er et testrammeverk som dekker enhetstester, funksjonstester, ende-til-ende-tester, brukergrensesnitt- og integrasjonstester for Java prosjekter.

Du kan kjรธre en enkelt pakke eller mange pakker (en pakke innkapsler relaterte klasser i et definert katalogoppsett) ved รฅ opprette en XML-pakke og utlรธse den gjennom Maven.

TestNG Grupper med eksempel

Du bruker grupper i TestNG nรฅr:

  • Du รธnsker ikke รฅ spre testmetoder over mange klasser utelukkende etter funksjonsomrรฅde, og
  • Du vil hoppe over (ikke kjรธre) valgte testtilfeller som om de var fravรฆrende i kodebasen.
  • For รฅ oppnรฅ begge mรฅlene, tagger du metoder inn i logiske grupper. TestNG respekterer deretter filtrene ยซinkluderยป og ยซekskluderยป som er deklarert i XML-pakken.

Kodeutdraget nedenfor viser gruppemerkingssyntaksen som brukes pรฅ en testmetode.

@Test (grupper = { ยซbindingยป, ยซsterke_bรฅndยป })

To gruppenavn brukes her, nemlig bonding og strong_tiesDette er logiske etiketter som du kan gi nytt navn slik at de passer til prosjektet ditt.

Ocuco <groups> taggen markerer starten pรฅ gruppefiltre i XML-pakken.

Deretter tilpasser du XML-filen for รฅ velge en valgt gruppe fra de merkede klassene. Eksemplet nedenfor viser syntaksen for gruppedeklarasjonen.

<grupper>
<lรธpe>
<inkludere navn=ยซbindingยป />
</lรธpe>
</grupper>

Anta at en enkelt klasse inneholder 10 testmetoder.

Av disse metodene:

  • 6 metoder bรฆrer bonding gruppe, og
  • 4 metoder bรฆrer strong_ties gruppen.

Deretter setter du opp Maven og Java stier og bruk Eclipse IDE for รฅ demonstrere gruppebruk gjennom XML-filer i en Java-basert Maven-prosjekt.

Lag XML for TestNG med Tags

  • XML-filen (Extensible Markup Language) i Maven-rammeverket lagrer konfigurasjonen for รฉn eller flere tester, deklarert i tag.
  • Hver testoppfรธring er pakket inn i en merkelapp og kan holde รฉn eller flere TestNG klasser.
  • A Java klasse med รฉn eller flere @Test annoteringer pรฅ metodene behandles som en TestNG klasse.

Flere tagger vises i rekkefรธlge for รฅ bygge en fungerende testng.xml-fil, nemlig , , og .

  • Ocuco taggen inneholder navnet pรฅ suite-nivรฅ som brukes i TestNG rapporter for utfรธrelsessammendrag.
  • Ocuco <test name=โ€Guru 99 Rรธyktestdemoยป> Taggen inneholder et logisk testnavn; rapporten bruker det for antall bestรฅtte, ikke bestรฅtte og utelatte testresultater, pluss total utfรธrelsestid og gruppemetadata.
  • Ocuco taggen peker til testklassen, hvor com.group.guru99 er pakken og TC_Class1 er klassenavnet.

<!DOKTYPE suite SYSTEM ยซhttp://testng.org/testng-1.0.dtdยป>
<suite navn=ยซSuiteยป>
<test navn="Guru 99 Rรธyktestdemo>
<grupper>
<lรธpe>
<inkludere navn=ยซsterke_bรฅndยป />
</lรธpe>
</grupper>
<klasser>
<klasse navn=ยซcom.group.guru99.TC_Class1ยป />
</klasser>
</test>
</suite>

Denne XML-konfigurasjonen refereres til i videogjennomgangene i de neste avsnittene.

"ekskludere" eller "inkludere" i test-XML

Hvis gruppemekanismen fรธles tung for et lite filter, lar testng.xml-pakken deg ogsรฅ ekskludere eller inkludere individuelle testmetoder etter navn.

Ekskluder taggSyntaks for ekskluderingstaggenekskludere navn=ยซ${TEST_CASE_NAME}ยป />
Inkluder taggSyntaks for inkluderingstaggeninkludere navn=ยซ${TEST_CASE_NAME}ยป />

OBS: Du kan inkludere eller ekskludere mange testtilfeller i รฉn kjรธring, og den samme syntaksen gjelder for gruppefiltre.

Bruk av dependsOnGroups for bestilt utfรธrelse

Utover vanlig inkludering, TestNG lar รฉn gruppe vรฆre avhengig av en annen ved hjelp av dependsOnGroups Attributtet. Lรธperen sรธrger for at alle metoder i den overordnede gruppen fullfรธres fรธr noen avhengig metode starter, noe som holder forhรฅndsvilkรฅrene pรฅlitelige.

  • Logg inn fรธrst, deretter transaksjoner: Tagg innloggingsmetoder med group = "auth", og tagoverfรธringstester med dependsOnGroups = {"auth"}Overfรธringstestene kjรธres bare etter at pรฅloggingen er bestรฅtt.
  • Hopp over ved feil: Hvis en metode i den overordnede gruppen feiler, TestNG markerer de avhengige metodene som hoppet over i stedet for รฅ feile dem direkte, noe som holder rapportene รฆrlige.
  • Kombiner med alwaysRun: Oppryddingsmetoder bรธr angis alwaysRun = true sรฅ nedbrytningen fortsetter selv nรฅr en oppstrรธms gruppe mislykkes.

Dette mรธnsteret er vanlig for ende-til-ende-pakker der API-oppsettet mรฅ fullfรธres fรธr brukergrensesnittpรฅstander starter.

Kjรธr TestNG Grupper, inkluderer, ekskluder kode (videodemo)

Nedenfor er en gjennomgang av Java koden og XML-pakken som driver gruppere, ekskludere og inkludere adferd.

Testscenario: Start Guru99 demobanknettsted, bekreft noen elementer pรฅ innloggingssiden, skriv inn pรฅloggingsinformasjon og bekreft noen elementer pรฅ dashbordet pรฅ nytt etter innlogging.

Kjรธr TestNG Grupper, inkluder, ekskluder Code

OBS: Hvert trinn har sin egen metode, men rekkefรธlgen under kjรธring avhenger av oppfรธringene i XML-pakken.

  • Metode 1: Initialiser nettleseren og start den URL (tc01LaunchURL()).
  • Metode 2: Bekreft overskriften pรฅ innloggingssiden (tc02VerifyLaunchPage()).
  • Metode 3: Skriv inn brukernavn og passord pรฅ innloggingsskjemaet (tc03EnterCredentials()).
  • Metode 4: Bekreft tilstedevรฆrelsen av leder-ID-en pรฅ brukerdashbordet (tc04VerifyLoggedInPage()).
  • Metode 5: Bekreft flere lenker pรฅ brukerdashbordet (tc05VerifyHyperlinks()).

Code for scenariet:

pakke com.gruppe.guru99;

importere java.util.concurrent.TimeUnit;

importere org.openqa.selenium.By;
importere org.openqa.selenium.WebDriver;
importere org.openqa.selenium.firefox.FirefoxDrivere;
importere org.testing.Assert;
importere org.testng.annotations.Test;

offentlig klasse TC_Klasse1 {
offentlig statisk finale webdriver webDriver = nytt FirefoxDriver();

String lanseringssideOverskrift = ยซ//h3[tekst()='Guru99 Bank]โ€;
slutt~~POS=TRUNC String brukernavn_element = ยซ//input[@name='uid']ยป, passordelement = ยซ//skriv inn[@navn='passord']ยป,
pรฅloggingselement = ยซ//inndata[@navn='btnLogin']ยป;
slutt~~POS=TRUNC String brukernavn_verdi = ยซmngr28642ยป, passordverdi = ยซydAnateยป;
slutt~~POS=TRUNC String leder-ID = ยซ//td[inneholder(tekst(),'Sjefs-ID')]ยป;
slutt~~POS=TRUNC String nyKunde = ยซ//a[@href='leggtilkundeside.php']ยป, fondsoverfรธring = ยซ//a[@href='FundTransInput.php']ยป;

/** Denne testtilfellet initialiserer webDriveren */
@Test(grupper = { ยซbindingยป, ยซsterke_bรฅndยป })
offentlig ugyldighet tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implisittVent(20, Tidsenhet.SEKUNDER);
webDriver.get("https://www.demo.guru99.com/V4/");
}

/** Sjekker tilstedevรฆrelsen av overskriften pรฅ innloggingssiden */
@Test(grupper = { ยซbindingยป })
offentlig ugyldighet tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
ยซOverskriften pรฅ hjemmesiden vises ikkeยป);
System.out.println(ยซOverskriften pรฅ hjemmesiden visesยป);
}

/** Skriver inn brukernavn og passord, og klikker deretter pรฅ logg inn */
@Test(grupper = { ยซbindingยป, ยซsterke_bรฅndยป })
offentlig ugyldighet tc03EnterCredentials() {
webDriver.findElement(By.xpath(brukernavn_element)).sendKeys(brukernavn_verdi);
webDriver.findElement(By.xpath(passordelement)).sendKeys(passordverdi);
webDriver.findElement(By.xpath(signIn_element)).klikk();
}

/** Verifiserer leder-ID-en pรฅ dashbordet */
@Test(grupper = { ยซsterke_bรฅndยป })
offentlig ugyldighet tc04VerifyLoggtInnSide() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
ยซLeder-ID-etiketten vises ikkeยป);
System.out.println(ยซLeder-ID-etiketten visesยป);
}

/** Sjekker Ny kunde-lenke og FundTransfer-lenke pรฅ dashbordet */
@Test(grupper = { ยซbindingยป })
offentlig ugyldighet tc05VerifyHyperlinks() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
ยซNy kundehyperlenke vises ikkeยป);
System.out.println(ยซNy kundehyperlenke visesยป);

Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
ยซHyperkoblingen til pengeoverfรธring vises ikkeยป);
System.out.println(ยซHyperkobling til pengeoverfรธring visesยป);
}
}

Merk: Demobanklegitimasjonen er gyldig i omtrent 20 dager, sรฅ en lokal kjรธring kan vise en feilmelding om ugyldig legitimasjon etter at dette vinduet utlรธper.

Forklaring av koden:

Fem testmetoder, รฉn per handling, har hver en groups attributt pรฅ @Test merknad.

De to logiske gruppeetikettene er strong_ties og bonding.

  • Den fรธrste og tredje metoden bรฆrer begge deler bonding og strong_ties, slik at de kjรธrer nรฅr en av gruppene er inkludert i suiten. Dette er et vanlig mรธnster for delte testforsรธk trinn.
  • Den andre metoden er bare merket med bonding, sรฅ den kjรธrer bare nรฅr bonding gruppen er inkludert.
  • Den fjerde metoden er kun merket med strong_ties, sรฅ den kjรธrer bare nรฅr den gruppen er inkludert.
  • Den femte metoden er kun merket med bonding, sรฅ den kjรธrer bare nรฅr bonding gruppen er inkludert.

Fire utfรธrelsesscenarier fรธlger:

Scenario 1: Kjรธr alle testmetoder uavhengig av gruppe. Fjern <groups> blokk fra den kjรธrende XML-filen.

Scenario 2: Kjรธr kun metoder knyttet til en valgt gruppe, nemlig strong_ties or bondingSe videoen nedenfor.

  • I den fรธrste delen av videoen, <groups> blokken blir kommentert ut, slik at alle testmetoder kjรธrer.
  • I den andre delen gjenopprettes gruppefilteret, og bare de samsvarende metodene kjรธrer.

Scenario 3: Bruk ekskluderingsfilteret for รฅ hoppe over valgte testtilfeller. Se videoen.

  • Demoen ekskluderer tc02 etter navn i den kjรธrende XML-filen, og resultatrapporten bekrefter at den ekskluderte metoden ikke kjรธrer.

Scenario 4: Bruk inkluderingsfilteret for รฅ bare kjรธre tc01LaunchURL, tc03EnterCredentialsog tc05VerifyHyperlinksSe videoen.

I denne kjรธringen kjรธres bare metodene som er oppfรธrt i include-filteret, nรธyaktig som konfigurert.

Last ned eksempelprosjektet fra lenken nedenfor.

Last ned ovenstรฅende Code

Konklusjon

Grupper i TestNG bringe struktur til det store Selenium og enhetssuiter ved รฅ erstatte engangsklasseoppdelinger med deklarative XML-filtre.

Merk metodene dine med @Test(groups = {...}), bruk deretter <include>, <exclude>og dependsOnGroups รฅ drive rรธyk, regresjon og ende-til-ende-kjรธringer fra det samme Maven-prosjektet pรฅ TestNG 7.x.

Spรธrsmรฅl og svar

En gruppe er en logisk etikett knyttet til en testmetode gjennom groups attributt pรฅ @TestXML-pakken velger deretter grupper ved hjelp av inkluderings- og ekskluderingsfiltre, slik at du bestemmer under kjรธring hvilke taggede metoder som skal kjรธres.

Innsiden <groups><run>den <include name="..."> tagg hvitelistegrupper for kjรธringen, og <exclude name="..."> blokkerer dem. TestNG bruker ekskluderinger etter inkluderinger, slik at en ekskludert gruppe alltid hoppes over, selv nรฅr den ogsรฅ er oppfรธrt i inkludering.

Ocuco dependsOnGroups attributt pรฅ @Test krefter TestNG รฅ kjรธre alle metodene i den oppfรธrte gruppen fรธr den avhengige metoden starter. Hvis en av de nรธdvendige metodene mislykkes, TestNG markerer den avhengige metoden som hoppet over i stedet for mislyktes.

Ja. De groups Attributtet aksepterer en matrise, sรฅ @Test(groups = {"smoke", "regression"}) plasserer รฉn metode i begge gruppene. TestNG kjรธrer den metoden nรฅr en av gruppene er inkludert i suiten, noe som holder delte trinn Tร˜RRE.

TestNG 7.x er den vedlikeholdte linjen, med utgivelser under org.testng:testng Maven-koordinat. Den holder grupper, parallell utfรธrelse og lyttere fullt kompatible med moderne Selenium 4- og JDK 17-prosjektene.

AI-testpรฅvirkningsverktรธy analyserer kodeforskjeller og tilordner deretter endrede klasser til gruppene som dekker dem. Pipelinen kjรธrer bare de merkede gruppene pรฅ hver pull-forespรธrsel, noe som reduserer tilbakemeldingstiden samtidig som den holderping risikable stier under utprรธving.

Ja. AI-klyngealgoritmer leser historiske feillogger, flagger ustabile tester og foreslรฅr et stabilt delsett merket som regressionIngeniรธrene godkjenner listen, deretter TestNG kjรธrer den gruppen hver natt, noe som holder suiten tett uten รฅ miste dekningen.

Oppsummer dette innlegget med: