data driven parameterized testing with spock framework
Raziščite načine pisanja podatkovnih ali parametriziranih testov s Spock Framework:
V tem Brezplačna serija vadnic Spock Training , smo raziskovali vse okoli Enotno testiranje v Spocku in preizkusi, trditve in poročanje v naši prejšnji vadnici.
V tej vadnici bomo poskušali razumeti, kaj so parametrizirani testi in kako lahko z vgrajenimi funkcijami Spocka dosežete testiranje na podlagi podatkov.
Začnimo!!
Oglejte si video vadnico
Kaj se boste naučili:
- Kaj so parametrizirani testi?
- Pisanje parametriziranih testov s Spockom
- Življenjski cikel bloka »kje«
- Nasveti in triki
- Zaključek
- Priporočeno branje
Kaj so parametrizirani testi?
Za vsakogar, ki je delal z avtomatizacijo / enotnimi testi, podatkovno usmerjeno testiranje ni nov izraz.
Parametrizirani testi niso nič drugega, ampak so kakršni koli testi, ki imajo isto logiko izvajanja in se v nekaterih primerih razlikujejo le po vhodnih podatkih in rezultatih.
Primer: Recimo, da imate aplikacijo Kalkulator, da bi lahko v celoti preizkusili funkcionalnost, bi morda želeli svoje teste izvajati z različnimi nabori vhodov.
Primer: Negativne vrednosti, delna števila, običajna cela števila, cela števila, ki se približujejo največjemu dovoljenemu območju itd. Ne glede na vhodne vrednosti, ki jih imate, želite zagnati isto logiko izvajanja.
Drug dober razlog za pisanje parametriziranih testov je ta, da ne preizkuša le srečne poti, temveč preizkuša tudi pot napake ali negativne scenarije.
Primer: Recimo, da obstaja aplikacija, ki vrne, ali je določena pripona datoteke veljavna ali ne. Preizkusi, ki temeljijo na podatkih, lahko razvijalcu hitro omogočijo izvajanje testov za podprte pripone datotek in morebitne scenarije napak ali negativne vhodne teste.
Zdaj si tradicionalno lahko omislite pisanje ali kopiranje preskusov za več vhodnih vrednosti, vendar to ni pravi ali pameten način za doseganje tovrstnega izvajanja preizkusa. Poleg tega, ko se število preizkusov v vaši aplikaciji povečuje, jih bo težko vzdrževati.
Pisanje parametriziranih testov s Spockom
Blok kje:
Blok where v Spockovem testu je blok, ki vsebuje podatke za parametriziran test. Po želji lahko vsebuje tako vhodne kot pričakovane izhodne vrednosti. Pomembno je omeniti ta blok, da bi moral biti to zadnji blok v Spockovem testu.
Ob tem je mogoče kombinirati z vsemi drugimi bloki, kot je dano, kdaj in takrat, vendar bi moral biti zadnji blok.
Oglejmo si primer, da ga bolje razumemo
Uporabili bomo aplikacijo kalkulatorja, ki sprejme 2 vhodna parametra in vrne vsoto dobavljenih vhodov. Napisali bomo parametrizirani test, ki bo predložil več vhodnih vrednosti in pričakovane izhodne vrednosti.
def 'sample parameterized test'() input2
V zgornjem vzorcu kode lahko vidite naslednje:
- Blok »kje«, ki vsebuje podatke za izvedbo testa.
- 'Where' je zadnji blok testa.
- 'Kje' se kombinira z drugimi bloki, torej dano, kdaj in potem.
- Predstavitev podatkov je posebna oblika, imenovana podatkovne tabele, ki jo bomo podrobneje preučili v naslednjih razdelkih te vadnice.
- Vrstica podatkov v glavi je v bistvu lastnosti / vhodne spremenljivke, ki jih je mogoče neposredno uporabiti v testu. Npr. Glejte stavek v bloku 'kdaj', kjer smo ga neposredno uporabili vhod1 in vhod2 kot vhodni parametri, ne da bi jih izrecno opredelili.
Uporaba podatkovnih tabel
Poskusimo zdaj podrobno razumeti podatkovne tabele. Vsaka vrstica tabele podatkov predstavlja podatke za posamezen scenarij (izvajanje preizkusa).
Po dogovoru, tj. Pred vhodnimi vrednostmi je ena cev ('|'), pred izhodnimi vrednostmi pa dvojna cev ('||'). To nima nobenega logičnega pomena, je pa običajno in izboljša berljivost. Tako oba spodnja primera veljata.
input1 |input2 |expectedResult 10 |15 |25 -4 |6 |2 input1 |input2 || expectedResult 10 |15 || 25 -4 |6 || 2
Vrstica glave, kot je prikazano zgoraj, ima ime za vse parametre, ki so na voljo kot podatki za preskušanje. Tu je pomembno opozoriti, da se ta imena parametrov ne smejo spopadati z nobeno obstoječo lokalno / globalno spremenljivko v testu, sicer bo napake pri prevajanju za razrešitev imen spremenljivk.
Pri uporabi podatkovnih tabel je treba omeniti, da sta potrebna najmanj 2 stolpca. Če potrebujete samo en stolpec, je prazen stolpec z vrednostmi kot podčrtajem takšna rešitev, kot spodaj.
input1 ||_ 10 ||_ -4 ||_
Prednost te oblike je preprostost, berljivost in razširljivost. Dodajanje novega vnosa podatkov je tako preprosto kot dodajanje nove vrstice z vrednostmi podatkov.
Tu je treba omeniti še to, da lahko podatkovne tabele vsebujejo kakršne koli spremenljivke, razrede, predmete, enume itd., Ki so še močnejše. Ker je groovy neobvezno vtipkan jezik, če eksplicitni tip ni podan, spremenljivke v podatkovni tabeli pomenijo odvisno od vrste poslanih podatkov.
Poglejmo še eno Primer uporaba podatkovnih tabel s seznamom nizov kot vhodom in izhodom kot številom elementov v nizu.
def 'sample parameterized test with list data type'() when: def actualCount = input1.size() then: actualCount == expectedCount where: input1
V zgornjem primeru lahko opazite, da smo vnos podali kot niz nizov, izhod pa je velikost tega seznama nizov. Tako daje veliko prožnosti, če imamo vhodne podatke različnih vrst.
Lahko tudi preprosto omenite izraze, ki vrnejo podatke ustrezne vrste vnosa in jih neposredno uporabijo tudi v podatkovnih tabelah.
Življenjski cikel bloka »kje«
Za preskuse, ki vsebujejo vzorce blokov in podatkov v obliki tabel podatkov, vsaka vrstica podatkov predstavlja eno izvedbo preskusne metode.
Na primer, če obstaja 5 vrstic podatkov in test vsebuje bloke 'dani' in 'kdaj', se bodo za takšno vrstico podatkov testni bloki izvedli enkrat. Tako bo na splošno opravljenih 5 izvedb preskusne metode.
Nasveti in triki
Oglejmo si nekaj nasvetov in trikov za parametrizirane teste med delom s temi podatkovnimi tabelami.
# 1) Prikaz rezultatov izvedbe posamezne vrstice ločeno. Kot smo videli v razdelku življenjskega cikla, je za vsako vrstico podatkov ena izvedba testne kode. Če želite, da se te vrstice ali rezultati prikažejo ločeno za vsako takšno vrstico, lahko za takšne preizkuse uporabite pripis »@Unroll«.
Poskusimo to razumeti s primerom:
Uporabili bomo isto aplikacijo kalkulatorja s 3 nizi vhodnih podatkov, ki se dostavljajo preskušani metodi.
vprašanja in odgovori za namizne podpore pdf
def 'sample parameterized test'() -20
Brez pripisa »@Unroll« poglejmo, kako je rezultat videti v terminalu (pa tudi HTML-poročila). S tovrstnimi izhodi je težko ugotoviti, kateri nabor vložkov je povzročil neuspeh testa.
Zdaj pa poglejmo, kako se testni izhod poroča ločeno za vsako vrstico, potem ko testni metodi dodamo pripis »@Unroll« (ki ima podatkovne tabele kot vnos podatkov).
#two) Zdaj pa nam dovolite, da razumemo, kako tem preskusom, ki temeljijo na podatkih, dodati pomembne informacije (namesto nekaterih samodejno dodanih indeksov, kot na zgornjem posnetku zaslona).
Za vhodne in izhodne lastnosti lahko uporabimo ograde (v skladu s podatkovno tabelo), nato pa lahko vidimo vrednosti, napolnjene v imenih testov s podatki iz podatkovnih tabel.
Uporabimo isti primer in posodobimo ime testa, da dobimo podatke iz vhoda in pričakovanega izhoda, kot je omenjeno v podatkovnih tabelah:
@Unroll def 'result of adding #input1 & #input2 should be #expectedResult'() given: def app = new CalculatorApp() when: def resultSum = app.add(input1, input1) then: resultSum == 2 * input1 where: input1
Zdaj pa poglejmo, kako je rezultat videti v terminalu in poročilih, ki temeljijo na HTML:
Kot lahko vidite tukaj, se podatki iz vhoda in izhoda zdaj prikazujejo skupaj z imeni preizkusov, ko se izvajajo. Na ta način je odpravljanje težav in odpravljanje napak veliko lažje, saj jasno kaže, kateri vložek je povzročil neuspeh ali neustrezno vedenje testa.
Zaključek
V tej vadnici smo se naučili pisanja parametriziranih testov s Spockovim ogrodjem. Razpravljali smo tudi o različnih značilnostih podatkovnih tabel in o tem, kako jih je mogoče uporabiti.
Oglejte si našo prihajajočo vadnico, če želite vedeti, kako uporabljati Mocks and Stubs s Spockom !!
PREV Vadnica | NASLEDNJA Vadnica
Priporočeno branje
- Pisanje enotnih testov s Spock Framework
- Vprašanja za intervju z Spockom z odgovori (najbolj priljubljeno)
- Spock za integracijo in funkcionalno testiranje s selenom
- Spock posmehovanje in zatiranje (primeri z video vajami)
- Vadnica za Spock: Testiranje s Spockom in Groovyjem
- Podatkovni okvir v programu Selenium WebDriver z uporabo Apache POI
- Kako izvesti preskušanje na podlagi podatkov z orodjem TestComplete
- Kako deluje preskušanje na podlagi podatkov (primera QTP in selena)