Grupe u TestNG

โšก Pametni saลพetak

Grupe u TestNG omoguฤ‡uju vam oznaฤavanje metoda testiranja logiฤkim oznakama, a zatim njihovo ukljuฤivanje ili iskljuฤivanje putem XML paketa. Ovaj pristup pojednostavljuje izvrลกavanje testa voฤ‘eno dimom, regresijom i ovisnostima bez prepisivanja. Java kodirati.

  • ๐Ÿท๏ธ Sintaksa anotacije: Koristiti @Test(groups = {"smoke","regression"}) oznaฤiti bilo koju metodu s jednim ili viลกe logiฤkih naziva grupa.
  • ๐Ÿ“œ XML kontrola: The <groups><run><include> i <exclude> Oznake unutar datoteke testng.xml odreฤ‘uju koje ฤ‡e se oznaฤene metode zapravo izvrลกiti.
  • ๐Ÿ”— ovisnosti: The dependsOnGroups Atribut nameฤ‡e redoslijed tako da grupe preduvjeta uvijek zavrลกe prije poฤetka ovisnih testova.
  • ๐Ÿค– Odabir umjetne inteligencije: Alati za testiranje utjecaja umjetne inteligencije mapiraju promjene koda u relevantne grupe, tako da se samo pogoฤ‘eni paketi pokreฤ‡u pri svakom commitu.
  • ๐Ÿงช TestNG 7.x: Moderna izdanja odrลพavaju grupe potpuno kompatibilnima s paralelnim izvrลกavanjem, sluลกateljima i Maven Surefire cjevovodima.

Grupe u TestNG

TestNG je okvir za testiranje koji pokriva jediniฤne, funkcionalne, end-to-end, UI i integracijske testove za Java projektima.

Moลพete pokrenuti jedan paket ili viลกe paketa (paket enkapsulira povezane klase u definiranom rasporedu direktorija) stvaranjem XML paketa i njegovim pokretanjem putem Mavena.

TestNG Grupe s primjerom

Koristite grupe u TestNG kada:

  • Ne ลพelite rasprลกiti metode testiranja po mnogim klasama iskljuฤivo prema funkcionalnom podruฤju, i
  • ลฝelite preskoฤiti (ne izvrลกiti) odabrane testne sluฤajeve kao da ih nema u kodnoj bazi.
  • Da biste postigli oba cilja, metode oznaฤavate u logiฤke grupe. TestNG zatim poลกtuje filtere โ€žukljuฤiโ€œ i โ€žiskljuฤiโ€œ deklarirane u XML paketu.

Donji isjeฤak prikazuje sintaksu oznaฤavanja grupa koja se koristi u testnoj metodi.

@Test (skupine = { "povezivanje", "jake_veze" })

Ovdje se koriste dva naziva grupa, i to bonding i strong_tiesTo su logiฤke oznake koje moลพete preimenovati kako bi odgovarale vaลกem projektu.

The <groups> Oznaka oznaฤava poฤetak grupnih filtera unutar XML paketa.

Zatim prilagoฤ‘avate XML kako biste odabrali odabranu grupu iz oznaฤenih klasa. Primjer u nastavku prikazuje sintaksu deklaracije grupe.

<skupine>
<trฤanje>
<ukljuฤiti ime="povezivanje" />
</trฤanje>
</skupine>

Pretpostavimo da jedna klasa sadrลพi 10 metoda testiranja.

Od tih metoda:

  • 6 metode nose bonding grupa i
  • 4 metode nose strong_ties skupina.

Zatim postavljate Maven i Java staze i koristite Eclipse IDE za demonstraciju grupne upotrebe putem XML datoteka unutar Javaprojekt temeljen na Mavenu.

Stvorite XML za TestNG s oznakama

  • XML (Extensible Markup Language) datoteka u Maven frameworku pohranjuje konfiguraciju za jedan ili viลกe testova, deklariranih unutar oznaka.
  • Svaki testni unos je omotan u oznaku i moลพe sadrลพavati jednu ili viลกe TestNG klase.
  • A Java razred s jednim ili viลกe @Test anotacije o njegovim metodama tretiraju se kao TestNG klase.

Viลกe oznaka se pojavljuje u nizu kako bi se izgradila radna datoteka testng.xml, naime , i .

  • The oznaka sadrลพi naziv na razini paketa koji se koristi u TestNG izvjeลกฤ‡a za saลพetke izvrลกenja.
  • The <test name=โ€Guru 99 Demo testa dimaโ€> Oznaka sadrลพi logiฤan naziv testa; izvjeลกฤ‡e ga koristi za broj prolaza, neuspjeha i preskoka plus ukupno vrijeme izvrลกavanja i metapodatke grupe.
  • The oznaka pokazuje na testnu klasu, gdje com.group.guru99 je paket i TC_Class1 je naziv klase.

<!DOCTYPE apartman SUSTAV โ€žhttp://testng.org/testng-1.0.dtdโ€œ>
<apartman ime="Apartman">
<test ime="Guru 99 Demo testa dimaโ€>
<skupine>
<trฤanje>
<ukljuฤiti ime="jake_veze" />
</trฤanje>
</skupine>
<Nastava>
<razred ime=โ€žcom.group.guru99.TC_Class1โ€œ />
</Nastava>
</test>
</apartman>

Ova XML konfiguracija navedena je u video uputama u sljedeฤ‡im odjeljcima.

"iskljuฤi" ili "ukljuฤi" u testni XML

Ako vam se mehanizam grupiranja ฤini preteลพak za mali filter, paket testng.xml vam takoฤ‘er omoguฤ‡uje iskljuฤivanje ili ukljuฤivanje pojedinaฤnih metoda testiranja po imenu.

Iskljuฤi oznakuSintaksa za oznaku izuzeฤ‡aiskljuฤiti ime="${TEST_CASE_NAME}" />
Ukljuฤi oznakuSintaksa za oznaku ukljuฤivanjaukljuฤiti ime="${TEST_CASE_NAME}" />

Biljeลกka: Moลพete ukljuฤiti ili iskljuฤiti viลกe testnih sluฤajeva u jednom pokretanju, a ista sintaksa vrijedi i za grupne filtere.

Koriลกtenje dependsOnGroups za naruฤeno izvrลกavanje

Osim obiฤne inkluzije, TestNG omoguฤ‡uje jednoj grupi da ovisi o drugoj koristeฤ‡i dependsOnGroups atribut. Izvrลกitelj osigurava da se svaka metoda u roditeljskoj grupi zavrลกi prije nego ลกto se pokrene bilo koja ovisna metoda, ลกto odrลพava preduvjete pouzdanima.

  • Prvo prijava, zatim transakcije: Oznaฤi metode prijave s group = "auth"i testove prijenosa oznaka s dependsOnGroups = {"auth"}Testovi prijenosa pokreฤ‡u se tek nakon ลกto je prijava uspjeลกna.
  • Preskoฤi u sluฤaju neuspjeha: Ako metoda u roditeljskoj grupi ne uspije, TestNG oznaฤava ovisne metode kao preskoฤene umjesto da ih odmah oznaฤi kao neuspjeลกne, ลกto izvjeลกฤ‡a odrลพava iskrenima.
  • Kombinirajte s alwaysRun: Treba postaviti metode ฤiลกฤ‡enja alwaysRun = true tako da se rastavljanje i dalje provodi ฤak i kada uzvodna grupa zakaลพe.

Ovaj je obrazac uobiฤajen za end-to-end pakete gdje postavljanje API-ja mora biti dovrลกeno prije nego ลกto se pokrenu tvrdnje korisniฤkog suฤelja.

trฤanje TestNG Grupiraj, ukljuฤi, iskljuฤi kod (video demo)

U nastavku slijedi vodiฤ za Java kod i XML paket koji pokreฤ‡u grupirati, iskljuฤiti i ukljuฤiti ponaลกanje.

Testni scenarij: Pokrenite Guru99 demo bankarsku stranicu, provjerite nekoliko elemenata na stranici za prijavu, unesite vjerodajnice i ponovno provjerite nekoliko stavki na nadzornoj ploฤi nakon prijave.

trฤanje TestNG Grupiraj, Ukljuฤi, Iskljuฤi Code

Biljeลกka: Svaki korak postoji u svojoj vlastitoj metodi, ali za vrijeme izvoฤ‘enja redoslijed ovisi o unosima u XML paketu.

  • Metoda 1: Inicijalizirajte preglednik i pokrenite URL (tc01LaunchURL()).
  • Metoda 2: Provjerite zaglavlje stranice za prijavu (tc02VerifyLaunchPage()).
  • Metoda 3: Unesite korisniฤko ime i lozinku u obrazac za prijavu (tc03EnterCredentials()).
  • Metoda 4: Provjerite prisutnost ID-a upravitelja na korisniฤkoj nadzornoj ploฤi (tc04VerifyLoggedInPage()).
  • Metoda 5: Provjerite dodatne poveznice na korisniฤkoj nadzornoj ploฤi (tc05VerifyHyperlinks()).

Code za scenarij:

paket com.group.guru99;

uvoz java.util.concurrent.TimeUnit;

uvoz org.openqa.selenium.By;
uvoz org.openqa.selenium.WebDriver;
uvoz org.openqa.selenium.firefox.FirefoxVozaฤi;
uvoz org.testng.Assert;
uvoz org.testng.annotations.Test;

javni staleลพ TC_Class1 {
javni statiฤki konaฤni webdriver webDriver = novi Firefoxvozaฤ();

Niz launchPageHeading = โ€ž//h3[tekst()='Guru99 Bank]โ€;
konaฤna Niz element_korisniฤkog_Namena = โ€ž//ulaz[@naziv='uid']โ€, element_lozinke = โ€ž//unos[@name='lozinka']โ€,
element_prijave = โ€ž//ulaz[@name='btnLogin']โ€;
konaฤna Niz vrijednost_korisniฤkog_Name = โ€žmngr28642โ€œ, vrijednost_lozinke = โ€žydAnateโ€œ;
konaฤna Niz ID upravitelja = โ€ž//td[sadrลพi(tekst(),'Id upravitelja')]โ€œ;
konaฤna Niz noviKupac = โ€ž//a[@href='addcustomerpage.php']โ€, Prijenos sredstava = โ€ž//a[@href='FundTransInput.php']โ€;

/** Ovaj testni sluฤaj inicijalizira webDriver */
@Test(skupine = { "povezivanje", "jake_veze" })
javna praznina tc01PokretanjeURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, VremenskaJedinica.SEKUNDE);
webDriver.get(โ€œhttps://www.demo.guru99.com/V4/โ€);
}

/** Provjerava prisutnost zaglavlja na stranici za prijavu */
@Test(skupine = { "povezivanje" })
javna praznina tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
"Naslov poฤetne stranice se ne prikazuje");
System.out.println("Prikazuje se zaglavlje poฤetne stranice");
}

/** Unosi korisniฤko ime, lozinku, a zatim klikne Prijava */
@Test(skupine = { "povezivanje", "jake_veze" })
javna praznina tc03UnesiVjerodajnice() {
webDriver.findElement(By.xpath(element_korisniฤkog_ime)).sendKeys(vrijednost_korisniฤkog_imena);
webDriver.findElement(By.xpath(element_lozinke)).sendKeys(vrijednost_lozinke);
webDriver.findElement(By.xpath(element_prijave)).click();
}

/** Provjerava ID upravitelja na nadzornoj ploฤi */
@Test(skupine = { "jake_veze" })
javna praznina tc04ProvjeriPrijavljenuStranicu() {
Assert.assertTrue(webDriver.findElement(By.xpath(IDUpravljaฤa)).isPrikazan(),
"Oznaka ID-a upravitelja nije prikazana");
System.out.println("Prikazuje se oznaka ID-a upravitelja");
}

/** Provjerava poveznicu za novog korisnika i poveznicu za prijenos sredstava na nadzornoj ploฤi */
@Test(skupine = { "povezivanje" })
javna praznina tc05ProvjeriHyperlinkove() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
"Hiperveza za novog kupca se ne prikazuje");
System.out.println(โ€žPrikazuje se nova hiperveza za kupcaโ€œ);

Assert.assertTrue(webDriver.findElement(By.xpath(transferfunda)).isEnabled(),
โ€žHiperveza za prijenos sredstava nije prikazanaโ€œ);
System.out.println(โ€žPrikazuje se hiperveza za prijenos sredstavaโ€œ);
}
}

Napomena: demo bankovne vjerodajnice ostaju vaลพeฤ‡e otprilike 20 dana, tako da lokalno pokretanje moลพe prikazati greลกku nevaลพeฤ‡ih vjerodajnica nakon isteka tog razdoblja.

Objaลกnjenje koda:

Pet metoda ispitivanja, jedna po radnji, svaka nosi groups atribut na @Test komentarima.

Dvije logiฤke oznake grupa su strong_ties i bonding.

  • Prva i treฤ‡a metoda nose oboje bonding i strong_ties, pa se pokreฤ‡u kad god je bilo koja grupa ukljuฤena u paket. Ovo je uobiฤajeni obrazac za dijeljene testni sluฤaj stepenice.
  • Druga metoda je oznaฤena samo sa bonding, pa se pokreฤ‡e samo kada je bonding grupa je ukljuฤena.
  • ฤŒetvrta metoda je oznaฤena samo sa strong_ties, pa se pokreฤ‡e samo kada je ta grupa ukljuฤena.
  • Peta metoda je oznaฤena samo sa bonding, pa se pokreฤ‡e samo kada je bonding grupa je ukljuฤena.

Slijede ฤetiri scenarija izvrลกenja:

Scenarij 1: Pokrenite svaku metodu ispitivanja bez obzira na grupu. Uklonite <groups> blok iz pokrenutog XML-a.

Scenarij 2: Pokreni samo metode vezane za odabranu grupu, tj. strong_ties or bondingMolimo pogledajte videozapis u nastavku.

  • U prvom dijelu videa, <groups> blok je komentiran, tako da se svaka testna metoda izvrลกava.
  • U drugom dijelu, grupni filter se vraฤ‡a u prvobitni oblik i izvode se samo odgovarajuฤ‡e metode.

Scenarij 3: Primijenite filtar za izuzimanje kako biste preskoฤili odabrane testne sluฤajeve. Pogledajte videozapis.

  • Demo verzija iskljuฤuje tc02 po imenu u pokrenutom XML-u, a izvjeลกฤ‡e o rezultatima potvrฤ‘uje da se iskljuฤena metoda ne izvodi.

Scenarij 4: Primijeni filtar ukljuฤivanja samo za pokretanje tc01LaunchURL, tc03EnterCredentialsi tc05VerifyHyperlinksMolimo pogledajte video.

U ovom pokretanju, izvrลกavaju se samo metode navedene u filteru za ukljuฤivanje, toฤno onako kako je konfigurirano.

Preuzmite primjer projekta s donje poveznice.

Preuzmite gore navedeno Code

Zakljuฤak

Grupe u TestNG poveฤ‡ati strukturu Selenium i pakete jedinica zamjenom jednokratnih podjela klasa deklarativnim XML filterima.

Oznaฤite svoje metode s @Test(groups = {...}), a zatim upotrijebite <include>, <exclude>i dependsOnGroups za pokretanje dima, regresije i end-to-end izvrลกavanja iz istog Maven projekta na TestNG 7.x.

Pitanja i odgovori

Grupa je logiฤka oznaka pridruลพena metodi testiranja putem groups atribut ukljuฤen @TestXML paket zatim odabire grupe pomoฤ‡u filtera za ukljuฤivanje i iskljuฤivanje, tako da tijekom izvoฤ‘enja odluฤujete koje ฤ‡e se oznaฤene metode izvrลกiti.

Iznutra <groups><run> je <include name="..."> oznake stavlja grupe na bijelu listu za pokretanje i <exclude name="..."> blokira ih. TestNG primjenjuje se iskljuฤuje nakon ukljuฤenih, tako da se iskljuฤena grupa uvijek preskaฤe, ฤak i kada je navedena i u ukljuฤenim.

The dependsOnGroups atribut ukljuฤen @Test snage TestNG pokrenuti svaku metodu u navedenoj grupi prije pokretanja ovisne metode. Ako bilo koja preduvjetna metoda ne uspije, TestNG oznaฤava zavisnu metodu kao preskoฤenu, a ne kao neuspjelu.

Da. groups atribut prihvaฤ‡a niz, dakle @Test(groups = {"smoke", "regression"}) svrstava jednu metodu u obje skupine. TestNG pokreฤ‡e tu metodu kad god je bilo koja grupa ukljuฤena u paket, ลกto dijeljene korake drลพi SUHIM.

TestNG 7.x je odrลพavana linija, s izdanjima pod org.testng:testng Maven koordinira. Odrลพava grupe, paralelno izvrลกavanje i sluลกatelje potpuno kompatibilnima s modernim Selenium 4 i JDK 17 projekata.

Alati za testiranje utjecaja umjetne inteligencije analiziraju razlike u kodu, a zatim mapiraju promijenjene klase na grupe koje ih pokrivaju. Cjevovod pokreฤ‡e samo oznaฤene grupe na svakom zahtjevu za povlaฤenjem, smanjujuฤ‡i vrijeme povratnih informacija uz odrลพavanjeping riziฤne staze na ispitu.

Da. Algoritmi AI klasteriranja ฤitaju zapisnike o povijesnim greลกkama, oznaฤavaju nestabilne testove i predlaลพu stabilan podskup oznaฤen kao regressionInลพenjeri odobravaju popis, a zatim TestNG vodi tu grupu svake veฤeri, ลกto osigurava da apartman bude u dobrom stanju bez gubitka pokrivenosti.

Saลพmite ovu objavu uz: