Skupiny v TestNG

โšก Chytrรฉ shrnutรญ

Skupiny v TestNG Umoลพลˆuje oznaฤit testovacรญ metody logickรฝmi popisky a potรฉ je zahrnout nebo vylouฤit pomocรญ sady XML. Tento pล™รญstup zjednoduลกuje bฤ›hy ล™รญzenรฉ kouล™ovรฝmi testy, regresรญ a zรกvislostmi bez nutnosti pล™episovรกnรญ. Java kรณd.

  • ???? ๏ธ Syntaxe anotace: Pouลพijte @Test(groups = {"smoke","regression"}) oznaฤit libovolnou metodu jednรญm nebo vรญce logickรฝmi nรกzvy skupin.
  • ๐Ÿ“œ Ovlรกdacรญ prvek XML: Jedno <groups><run><include> a <exclude> Tagy uvnitล™ souboru testng.xml urฤujรญ, kterรฉ tagovanรฉ metody se skuteฤnฤ› provedou.
  • ๐Ÿ”— Zรกvislosti: Jedno dependsOnGroups Atribut vynucuje ล™azenรญ, takลพe skupiny pล™edpokladลฏ vลพdy skonฤรญ pล™ed zahรกjenรญm zรกvislรฝch testลฏ.
  • ๐Ÿค– Vรฝbฤ›r umฤ›lรฉ inteligence: Nรกstroje pro testovรกnรญ dopadu umฤ›lรฉ inteligence mapujรญ zmฤ›ny kรณdu do relevantnรญch skupin, takลพe pล™i kaลพdรฉm commitu se spustรญ pouze dotฤenรฉ sady.
  • ๐Ÿงช TestNG 7.x: Modernรญ verze udrลพujรญ skupiny plnฤ› kompatibilnรญ s paralelnรญm spouลกtฤ›nรญm, posluchaฤi a kanรกly Maven Surefire.

Skupiny v TestNG

TestNG je testovacรญ framework, kterรฝ zahrnuje jednotkovรฉ, funkฤnรญ, end-to-end, UI a integraฤnรญ testy pro Java projektลฏ.

Mลฏลพete spustit jeden balรญฤek nebo vรญce balรญฤkลฏ (balรญฤek zapouzdล™uje souvisejรญcรญ tล™รญdy v definovanรฉm rozvrลพenรญ adresรกล™ลฏ) vytvoล™enรญm sady XML a jejรญm spuลกtฤ›nรญm pomocรญ Mavenu.

TestNG Skupiny s pล™รญkladem

Pouลพรญvรกte skupiny v TestNG kdy:

  • Nechcete rozptรฝlit testovacรญ metody do mnoha tล™รญd ฤistฤ› podle funkฤnรญ oblasti a
  • Chcete pล™eskoฤit (nespustit) vybranรฉ testovacรญ pล™รญpady, jako by v kรณdovรฉ zรกkladnฤ› chybฤ›ly.
  • Abyste dosรกhli obou cรญlลฏ, seskupรญte metody do logickรฝch skupin. TestNG pak respektuje filtry โ€žzahrnoutโ€œ a โ€žvylouฤitโ€œ deklarovanรฉ v sadฤ› XML.

Nรกsledujรญcรญ รบryvek ukazuje syntaxi skupinovรฉho oznaฤovรกnรญ pouลพitou v testovacรญ metodฤ›.

@Test (skupiny = { โ€žspojenรญโ€œ, โ€žsilnรฉ vazbyโ€œ })

Zde se pouลพรญvajรญ dva nรกzvy skupin, a to bonding a strong_tiesToto jsou logickรฉ popisky, kterรฉ mลฏลพete pล™ejmenovat tak, aby vyhovovaly vaลกemu projektu.

Jedno <groups> Znaฤka oznaฤuje zaฤรกtek skupinovรฝch filtrลฏ v rรกmci sady XML.

Pak upravรญte XML tak, aby vybral zvolenou skupinu z oznaฤenรฝch tล™รญd. Nรกsledujรญcรญ pล™รญklad ukazuje syntaxi deklarace skupiny.

<skupiny>
<bฤ›h>
<obsahovat nรกzev=โ€žspojenรญโ€œ />
</bฤ›h>
</skupiny>

Pล™edpoklรกdejme, ลพe jedna tล™รญda obsahuje 10 testovacรญch metod.

Z tฤ›chto metod:

  • 6 metody nesou bonding skupina a
  • 4 metody nesou strong_ties skupina.

Dรกle nastavรญte Maven a Java cesty a pouลพijte Eclipse IDE pro demonstraci pouลพitรญ ve skupinรกch pomocรญ XML souborลฏ uvnitล™ Javaprojekt zaloลพenรฝ na Mavenu.

Vytvoล™it XML pro TestNG se znaฤkami

  • Soubor XML (Extensible Markup Language) v Maven frameworku uklรกdรก konfiguraci pro jeden nebo vรญce testลฏ deklarovanรฝch uvnitล™ ลกtรญtek.
  • Kaลพdรฝ testovacรญ zรกznam je zabalen v ลกtรญtek a mลฏลพe pojmout jeden nebo vรญce TestNG tล™รญdy.
  • A Java tล™รญda s jednรญm nebo vรญce @Test anotace k jeho metodรกm se povaลพujรญ za TestNG tล™รญda.

Vรญce znaฤek se postupnฤ› zobrazuje pro vytvoล™enรญ funkฤnรญho souboru testng.xml, konkrรฉtnฤ› , a .

  • Jedno tag obsahuje nรกzev na รบrovni sady pouลพitรฝ v TestNG zprรกvy pro souhrny provedenรญ.
  • Jedno <test name=โ€Guru 99 Demo kouล™ovรฉho testuโ€œ> Tag obsahuje logickรฝ nรกzev testu; sestava jej pouลพรญvรก pro poฤet รบspฤ›ลกnรฝch, neรบspฤ›ลกnรฝch a pล™eskoฤenรฝch testลฏ a takรฉ pro celkovรฝ ฤas provedenรญ a metadata skupiny.
  • Jedno tag odkazuje na testovacรญ tล™รญdu, kde com.group.guru99 je balรญฤek a TC_Class1 je nรกzev tล™รญdy.

<!DOCTYPE souprava SYSTร‰M โ€žhttp://testng.org/testng-1.0.dtdโ€œ>
<souprava nรกzev=โ€žApartmรกโ€œ>
<test nรกzev="Guru 99 Demo kouล™ovรฉho testu>
<skupiny>
<bฤ›h>
<obsahovat nรกzev=โ€žsilnรฉ vazbyโ€œ />
</bฤ›h>
</skupiny>
<tล™รญdy>
<tล™รญda nรกzev=โ€žcom.group.guru99.TC_Class1โ€œ />
</tล™รญdy>
</test>
</souprava>

Tato konfigurace XML je zmรญnฤ›na ve video nรกvodech v nรกsledujรญcรญch ฤรกstech.

โ€žexcludeโ€œ nebo โ€žincludeโ€œ v testovacรญm XML

Pokud se vรกm mechanismus seskupovรกnรญ zdรก pro malรฝ filtr pล™รญliลก nรกroฤnรฝ, sada testng.xml vรกm takรฉ umoลพลˆuje vylouฤit nebo zahrnout jednotlivรฉ testovacรญ metody podle nรกzvu.

Vylouฤit znaฤkuSyntaxe pro tag excludevylouฤit nรกzev=โ€ž${TEST_CASE_NAME}โ€œ />
Zahrnout znaฤkuSyntaxe pro tag includeobsahovat nรกzev=โ€ž${TEST_CASE_NAME}โ€œ />

Poznรกmka: V jednom bฤ›hu mลฏลพete zahrnout nebo vylouฤit mnoho testovacรญch pล™รญpadลฏ a stejnรก syntaxe platรญ pro skupinovรฉ filtry.

Pouลพitรญ dependsOnGroups pro uspoล™รกdanรฉ spuลกtฤ›nรญ

Kromฤ› pouhรฉho zaฤlenฤ›nรญ, TestNG umoลพลˆuje jednรฉ skupinฤ› zรกviset na druhรฉ pomocรญ dependsOnGroups atribut. Bฤ›ลพec zajiลกลฅuje, ลพe kaลพdรก metoda v nadล™azenรฉ skupinฤ› skonฤรญ pล™ed spuลกtฤ›nรญm jakรฉkoli zรกvislรฉ metody, coลพ zachovรกvรก spolehlivost pล™edbฤ›ลพnรฝch podmรญnek.

  • Nejprve se pล™ihlaste, pak transakce: Oznaฤte metody pล™ihlรกลกenรญ pomocรญ group = "auth"a testy pล™enosu znaฤek s dependsOnGroups = {"auth"}Testy pล™enosu se spustรญ aลพ po รบspฤ›ลกnรฉm pล™ihlรกลกenรญ.
  • Pล™eskoฤit pล™i selhรกnรญ: Pokud metoda v nadล™azenรฉ skupinฤ› selลพe, TestNG Oznaฤรญ zรกvislรฉ metody jako pล™eskoฤenรฉ, mรญsto aby selhaly, coลพ zachovรกvรก poctivost reportลฏ.
  • Kombinujte s alwaysRun: Mฤ›ly by bรฝt stanoveny metody ฤiลกtฤ›nรญ alwaysRun = true takลพe demontรกลพ probรญhรก i v pล™รญpadฤ› selhรกnรญ nadล™azenรฉ skupiny.

Tento vzorec je bฤ›ลพnรฝ pro komplexnรญ sady, kde musรญ bรฝt nastavenรญ API dokonฤeno pล™ed spuลกtฤ›nรญm asercรญ uลพivatelskรฉho rozhranรญ.

Bฤ›h TestNG Seskupit, zahrnout, vylouฤit kรณd (video ukรกzka)

Nรญลพe je uveden nรกvod, jak Java kรณd a sada XML, kterรฉ ล™รญdรญ seskupit, vylouฤit a zahrnout chovรกnรญ.

Scรฉnรกล™ testu: Spustit Guru99 demo bankovnรญch strรกnek, ovฤ›ล™te nฤ›kolik prvkลฏ na pล™ihlaลกovacรญ strรกnce, zadejte pล™ihlaลกovacรญ รบdaje a po pล™ihlรกลกenรญ znovu ovฤ›ล™te nฤ›kolik poloลพek na ล™รญdicรญm panelu.

Bฤ›h TestNG Seskupit, Zahrnout, Vylouฤit Code

Poznรกmka: Kaลพdรฝ krok je veden ve vlastnรญ metodฤ›, ale za bฤ›hu zรกvisรญ poล™adรญ na poloลพkรกch v sadฤ› XML.

  • Metoda 1: Inicializujte prohlรญลพeฤ a spusลฅte jej URL (tc01LaunchURL()).
  • Metoda 2: Ovฤ›ล™te zรกhlavรญ pล™ihlaลกovacรญ strรกnky (tc02VerifyLaunchPage()).
  • Metoda 3: Zadejte uลพivatelskรฉ jmรฉno a heslo do pล™ihlaลกovacรญho formulรกล™e (tc03EnterCredentials()).
  • Metoda 4: Ovฤ›ล™te pล™รญtomnost ID manaลพera na uลพivatelskรฉm panelu (tc04VerifyLoggedInPage()).
  • Metoda 5: Ovฤ›ล™te dalลกรญ odkazy na uลพivatelskรฉm panelu (tc05VerifyHyperlinks()).

Code pro scรฉnรกล™:

balรญฤek com.group.guru99;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.Firefoxล˜idiฤi;
import org.testng.Assert;
import org.testng.annotations.Test;

veล™ejnรก tล™รญda TC_Tล™รญda1 {
veล™ejnรฉ statickรฉ finรกlnรญ webovรฝ ovladaฤ webOvladaฤ = novรฝ Firefoxล˜idiฤ();

ล˜etฤ›zec launchPageHeads = โ€ž//h3[text()='โ€œGuru99 Bank]โ€œ;
Pล™eฤtฤ›te si prosรญm peฤlivฤ› tento dokument, abyste pochopili naลกe zรกsady a postupy tรฝkajรญcรญ se vaลกich รบdajลฏ a toho, jak s nimi budeme naklรกdat. Pokud s naลกimi zรกsadami a postupy nesouhlasรญte, mรกte moลพnost nepouลพรญvat naลกe strรกnky. Pล™รญstupem na strรกnky nebo jejich pouลพรญvรกnรญm souhlasรญte s tฤ›mito Zรกsadami ochrany osobnรญch รบdajลฏ. ล˜etฤ›zec element_uลพivatelskรฉho_jmรฉna = โ€ž//input[@name='uid']โ€œ, element_hesla = โ€ž//vstup[@jmรฉno='heslo']โ€œ,
signIn_element = โ€ž//vstup[@name='tnLogin']โ€œ;
Pล™eฤtฤ›te si prosรญm peฤlivฤ› tento dokument, abyste pochopili naลกe zรกsady a postupy tรฝkajรญcรญ se vaลกich รบdajลฏ a toho, jak s nimi budeme naklรกdat. Pokud s naลกimi zรกsadami a postupy nesouhlasรญte, mรกte moลพnost nepouลพรญvat naลกe strรกnky. Pล™รญstupem na strรกnky nebo jejich pouลพรญvรกnรญm souhlasรญte s tฤ›mito Zรกsadami ochrany osobnรญch รบdajลฏ. ล˜etฤ›zec hodnota_uลพivatelskรฉho_jmรฉna = โ€žmngr28642โ€œ, hodnota_hesla = โ€žydAnรกtโ€œ;
Pล™eฤtฤ›te si prosรญm peฤlivฤ› tento dokument, abyste pochopili naลกe zรกsady a postupy tรฝkajรญcรญ se vaลกich รบdajลฏ a toho, jak s nimi budeme naklรกdat. Pokud s naลกimi zรกsadami a postupy nesouhlasรญte, mรกte moลพnost nepouลพรญvat naลกe strรกnky. Pล™รญstupem na strรกnky nebo jejich pouลพรญvรกnรญm souhlasรญte s tฤ›mito Zรกsadami ochrany osobnรญch รบdajลฏ. ล˜etฤ›zec ID manaลพera = โ€ž//td[obsahuje(text(),'ID sprรกvce')]โ€œ;
Pล™eฤtฤ›te si prosรญm peฤlivฤ› tento dokument, abyste pochopili naลกe zรกsady a postupy tรฝkajรญcรญ se vaลกich รบdajลฏ a toho, jak s nimi budeme naklรกdat. Pokud s naลกimi zรกsadami a postupy nesouhlasรญte, mรกte moลพnost nepouลพรญvat naลกe strรกnky. Pล™รญstupem na strรกnky nebo jejich pouลพรญvรกnรญm souhlasรญte s tฤ›mito Zรกsadami ochrany osobnรญch รบdajลฏ. ล˜etฤ›zec novรฝZรกkaznรญk = โ€ž//a[@href='addcustomerpage.php']โ€œ, Pล™evod finanฤnรญch prostล™edkลฏ = โ€ž//a[@href='FundTransInput.php']โ€œ;

/** Tento testovacรญ pล™รญpad inicializuje webDriver */
@Test(skupiny = { โ€žspojenรญโ€œ, โ€žsilnรฉ vazbyโ€œ })
veล™ejnรก prรกzdnota tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, ฤŒasovรกJednotka.SEKUNDY);
webDriver.get(โ€œhttps://www.demo.guru99.com/V4/โ€);
}

/** Kontroluje pล™รญtomnost zรกhlavรญ na pล™ihlaลกovacรญ strรกnce */
@Test(skupiny = { โ€žspojenรญโ€œ })
veล™ejnรก prรกzdnota tc02Ovฤ›ล™itSpouลกtฤ›cรญPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
โ€žZรกhlavรญ domovskรฉ strรกnky se nezobrazujeโ€œ);
System.out.println(โ€žZobrazuje se zรกhlavรญ domovskรฉ strรกnkyโ€œ);
}

/** Zadรก uลพivatelskรฉ jmรฉno, heslo a potรฉ klikne na tlaฤรญtko Pล™ihlรกsit se */
@Test(skupiny = { โ€žspojenรญโ€œ, โ€žsilnรฉ vazbyโ€œ })
veล™ejnรก prรกzdnota tc03ZadatPล™ihlaลกovacรญZnaฤky() {
webDriver.findElement(By.xpath(prvek_uลพivatelskรฉho_jmรฉna)).sendKeys(hodnota_uลพivatelskรฉho_jmรฉna);
webDriver.findElement(By.xpath(element_hesla)).sendKeys(hodnota_hesla);
webDriver.findElement(By.xpath(signIn_element)).click();
}

/** Ovฤ›ล™uje ID manaลพera na ล™รญdicรญm panelu */
@Test(skupiny = { โ€žsilnรฉ vazbyโ€œ })
veล™ejnรก prรกzdnota tc04Ovฤ›ล™enรญPล™ihlรกลกenรญNaStrรกnku() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
โ€žล tรญtek s ID manaลพera se nezobrazujeโ€œ);
System.out.println(โ€žZobrazuje se ลกtรญtek s ID sprรกvce.โ€œ);
}

/** Kontroluje odkaz pro novรฉho zรกkaznรญka a odkaz pro pล™evod finanฤnรญch prostล™edkลฏ na dashboardu */
@Test(skupiny = { โ€žspojenรญโ€œ })
veล™ejnรก prรกzdnota tc05Ovฤ›ล™enรญHyperlinkลฏ() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
โ€žHypertextovรฝ odkaz na novรฉho zรกkaznรญka se nezobrazujeโ€œ);
System.out.println(โ€žZobrazuje se hypertextovรฝ odkaz pro novรฉho zรกkaznรญka.โ€œ);

Assert.assertTrue(webDriver.findElement(By.xpath(pล™evod prostล™edkลฏ)).isEnabled(),
โ€žHypertextovรฝ odkaz na pล™evod finanฤnรญch prostล™edkลฏ se nezobrazujeโ€œ);
System.out.println(โ€žZobrazuje se hypertextovรฝ odkaz na pล™evod finanฤnรญch prostล™edkลฏโ€œ);
}
}

Upozornฤ›nรญ: pล™ihlaลกovacรญ รบdaje k demo bankovnictvรญ zลฏstรกvajรญ platnรฉ pล™ibliลพnฤ› 20 dnรญ, takลพe lokรกlnรญ spuลกtฤ›nรญ mลฏลพe po uplynutรญ tรฉto doby zobrazit chybu โ€žneplatnรฉ pล™ihlaลกovacรญ รบdajeโ€œ.

Vysvฤ›tlenรญ kรณdu:

Pฤ›t zkuลกebnรญch metod, jedna na akci, kaลพdรก s sebou nese groups atribut na @Test anotace.

Dva logickรฉ popisky skupin jsou strong_ties a bonding.

  • Prvnรญ a tล™etรญ metoda zahrnujรญ obฤ› bonding a strong_ties, takลพe se spouลกtฤ›jรญ vลพdy, kdyลพ je kterรกkoli ze skupin zahrnuta v sadฤ›. Toto je bฤ›ลพnรฝ vzorec pro sdรญlenรฉ modelovรฝ pล™รญpad kroky.
  • Druhรก metoda je oznaฤena pouze pomocรญ bonding, takลพe bฤ›ลพรญ pouze tehdy, kdyลพ bonding skupina je zahrnuta.
  • ฤŒtvrtรก metoda je oznaฤena pouze pomocรญ strong_ties, takลพe se spustรญ pouze tehdy, kdyลพ je tato skupina zahrnuta.
  • Pรกtรก metoda je oznaฤena pouze pomocรญ bonding, takลพe bฤ›ลพรญ pouze tehdy, kdyลพ bonding skupina je zahrnuta.

Nรกsledujรญ ฤtyล™i scรฉnรกล™e provedenรญ:

Scรฉnรกล™ 1: Spusลฅte kaลพdou testovacรญ metodu bez ohledu na skupinu. Odstraลˆte <groups> blok z bฤ›ลพรญcรญho XML.

Scรฉnรกล™ 2: Spouลกtฤ›t pouze metody vรกzanรฉ na vybranou skupinu, a to strong_ties or bondingPodรญvejte se prosรญm na video nรญลพe.

  • V prvnรญ ฤรกsti videa, <groups> blok je zakomentovรกn, takลพe se spustรญ kaลพdรก testovacรญ metoda.
  • Ve druhรฉ ฤรกsti se obnovรญ skupinovรฝ filtr a spustรญ se pouze odpovรญdajรญcรญ metody.

Scรฉnรกล™ 3: Pro pล™eskoฤenรญ vybranรฝch testovacรญch pล™รญpadลฏ pouลพijte filtr vylouฤenรญ. Podรญvejte se na video.

  • Demoverze nezahrnuje tc02 podle nรกzvu v spuลกtฤ›nรฉm XML a vรฝslednรก sestava potvrzuje, ลพe vylouฤenรก metoda se nespustรญ.

Scรฉnรกล™ 4: Pouลพรญt filtr zahrnutรญ pouze pro spuลกtฤ›nรญ tc01LaunchURL, tc03EnterCredentials, a tc05VerifyHyperlinksPodรญvejte se prosรญm na video.

V tomto spuลกtฤ›nรญ se provedou pouze metody uvedenรฉ ve filtru include, pล™esnฤ› tak, jak jsou nakonfigurovรกny.

Stรกhnฤ›te si ukรกzkovรฝ projekt z nรญลพe uvedenรฉho odkazu.

Stรกhnฤ›te si vรฝลกe uvedenรฝ soubor Code

Zรกvฤ›r

Skupiny v TestNG zvฤ›tลกit strukturu Selenium a sady jednotek nahrazenรญm jednorรกzovรฝch rozdฤ›lenรญ tล™รญd deklarativnรญmi XML filtry.

Oznaฤte svรฉ metody pomocรญ @Test(groups = {...}), pak pouลพijte <include>, <exclude>, a dependsOnGroups ล™รญdit kouล™ovรฉ, regresnรญ a end-to-end bฤ›hy ze stejnรฉho projektu Maven na TestNG 7.x

Nejฤastฤ›jลกรญ dotazy

Skupina je logickรฝ popisek pล™ipojenรฝ k testovacรญ metodฤ› prostล™ednictvรญm groups atribut zapnutรฝ @TestSada XML potรฉ vybรญrรก skupiny pomocรญ filtrลฏ zahrnutรญ a vylouฤenรญ, takลพe se za bฤ›hu rozhodnete, kterรฉ oznaฤenรฉ metody se provedou.

Uvnitล™ <groups><run>se <include name="..."> skupiny s povolenรฝmi znaฤkami pro danรฝ bฤ›h a <exclude name="..."> blokuje je. TestNG Platรญ excludes po includes, takลพe vylouฤenรก skupina je vลพdy pล™eskoฤena, i kdyลพ je uvedena takรฉ v include.

Jedno dependsOnGroups atribut zapnutรฝ @Test sรญly TestNG spustit kaลพdou metodu v uvedenรฉ skupinฤ› pล™ed spuลกtฤ›nรญm zรกvislรฉ metody. Pokud nฤ›kterรก z pล™edem stanovenรฝch metod selลพe, TestNG oznaฤรญ zรกvislou metodu jako pล™eskoฤenou, nikoli jako selhanou.

Ano. groups atribut pล™ijรญmรก pole, takลพe @Test(groups = {"smoke", "regression"}) zaล™azuje jednu metodu do obou skupin. TestNG spustรญ tuto metodu vลพdy, kdyลพ je kterรกkoli ze skupin zahrnuta v sadฤ›, coลพ udrลพuje sdรญlenรฉ kroky SUCHร‰.

TestNG 7.x je udrลพovanรก ล™ada s vydรกnรญmi pod org.testng:testng Maven koordinuje. Udrลพuje skupiny, paralelnรญ provรกdฤ›nรญ a posluchaฤe plnฤ› kompatibilnรญ s modernรญmi Selenium 4 a projekty JDK 17.

Nรกstroje pro testovรกnรญ dopadu umฤ›lรฉ inteligence analyzujรญ rozdรญly v kรณdu a potรฉ mapujรญ zmฤ›nฤ›nรฉ tล™รญdy na skupiny, kterรฉ je pokrรฝvajรญ. Procesor v kaลพdรฉm poลพadavku na zmฤ›ny spouลกtรญ pouze oznaฤenรฉ skupiny, ฤรญmลพ se zkracuje doba zpฤ›tnรฉ vazby a zรกroveลˆ se udrลพuje...ping riskantnรญ cesty pod zkouลกkou.

Ano. Algoritmy shlukovรกnรญ s umฤ›lou inteligencรญ ฤtou historickรฉ protokoly selhรกnรญ, oznaฤujรญ nestabilnรญ testy a navrhujรญ stabilnรญ podmnoลพinu oznaฤenou jako regressionInลพenรฝล™i seznam schvรกlรญ a potรฉ TestNG provozuje tuto skupinu kaลพdou noc, coลพ udrลพuje sadu v tฤ›snรฉm kontaktu, aniลพ by doลกlo ke ztrรกtฤ› pokrytรญ.

Shrลˆte tento pล™รญspฤ›vek takto: