data driven parameterized testing with spock framework
Preskúmajte spôsoby zápisu testov založených na údajoch alebo parametrizovaných testov pomocou Spock Framework:
V tomto Séria výučbových kurzov Spock Free , preskúmali sme všetko okolo Testovanie jednotiek v Spocku a Vyskúšajte prípravky, tvrdenia a správy v našom predchádzajúcom výučbe.
V tomto tutoriáli sa pokúsime pochopiť, čo sú parametrizované testy a ako môžete využiť integrované funkcie Spocku na dosiahnutie testovania na základe dát.
Začnime!!
Pozrite si videonávod
Čo sa dozviete:
- Čo sú to parametrizované testy?
- Písanie parametrizovaných testov so Spockom
- Životný cyklus bloku „kde“
- tipy a triky
- Záver
- Odporúčané čítanie
Čo sú to parametrizované testy?
Pre kohokoľvek, kto pracoval s automatizáciou / testovaním jednotiek, nie je testovanie na základe dát nový pojem.
Parametrizované testy nie sú ničím, ale sú to akékoľvek testy, ktoré zdieľajú rovnakú logiku vykonávania a líšia sa iba v niektorých prípadoch vstupnými údajmi a výsledkami.
Príklad: Predpokladajme, že máte aplikáciu Kalkulačka, aby ste mohli úplne otestovať funkčnosť, možno budete chcieť spustiť testy proti inej vstupnej množine.
Príklad: Záporné hodnoty, zlomkové čísla, normálne celé čísla, celé čísla blížiace sa maximálnemu povolenému rozsahu atď. Bez ohľadu na to, aké máte vstupné hodnoty, chcete spustiť rovnakú logiku vykonania.
Ďalším dobrým dôvodom na napísanie parametrizovaných testov je, že netestuje iba šťastnú cestu, ale tiež testuje chybovú cestu alebo negatívne scenáre.
Príklad: Predpokladajme, že existuje aplikácia, ktorá vráti, či je daná prípona súboru platná alebo nie. Testy založené na dátach môžu vývojárovi rýchlo umožniť vykonávanie testov podporovaných prípon súborov a akýchkoľvek chybových scenárov alebo testov negatívnych vstupov.
Teraz vás tradične napadne písanie alebo kopírovanie cez testy pre viac vstupných hodnôt, ale to nie je správny alebo inteligentný spôsob, ako dosiahnuť tento druh vykonania testu. Keď sa navyše vo vašej aplikácii začne zvyšovať počet testov, bude ťažké ich udržiavať.
Písanie parametrizovaných testov so Spockom
Kde: blok
Blok where v Spockovom teste je blok, ktorý obsahuje údaje pre parametrizovaný test. Môže voliteľne obsahovať vstupné aj očakávané výstupné hodnoty. Dôležitým bodom, ktorý si treba uvedomiť o tomto bloku je, že by to mal byť posledný blok v Spockovom teste.
To znamená, že sa dá kombinovať so všetkými ostatnými blokmi, ako sú dané, kedy a potom, ale mal by byť posledným blokom.
Pozrime sa na príklad, aby sme ho lepšie pochopili
Budeme používať aplikáciu kalkulačky, ktorá vezme 2 vstupné parametre a vráti súčet dodaných vstupov. Budeme písať parametrizovaný test poskytujúci viac vstupov a očakávaných hodnôt.
def 'sample parameterized test'() input2
Vo vyššie uvedenej ukážke kódu môžete vidieť toto:
- Blok „kde“, ktorý obsahuje údaje potrebné na vykonanie testu.
- Blok „kde“ je posledný blok testu.
- „Kde“ je kombinované s ostatnými blokmi, t. J. Dané, kedy a potom.
- Reprezentácia údajov je špeciálny formát, ktorý sa nazýva dátové tabuľky a na ktorý sa podrobne pozrieme v nasledujúcich častiach tohto tutoriálu.
- Hlavička údajov je v podstate vlastnosť / vstupné premenné, ktoré je možné priamo použiť v teste. Napr. Prečítajte si vyhlásenie v bloku „keď“, kde sme priamo použili vstup1 a vstup2 ako vstupné parametre bez ich výslovného definovania.
Používanie údajových tabuliek
Skúsme teraz podrobne porozumieť tabuľkám s údajmi. Každý riadok dátovej tabuľky predstavuje údaje pre individuálny scenár (vykonanie testu).
Podľa konvencie, tj. Pred vstupnými hodnotami predchádza jedno potrubie („|“), pred výstupnými hodnotami predchádza dvojité potrubie („||“). Toto nemá žiadny logický význam, ale je to konvencia a zlepšuje sa čitateľnosť. Oba nasledujúce príklady teda platia.
input1 |input2 |expectedResult 10 |15 |25 -4 |6 |2 input1 |input2 || expectedResult 10 |15 || 25 -4 |6 || 2
Riadok hlavičky, ako je uvedené vyššie, má názov pre každý z parametrov dodávaných ako údaje na testovanie. Tu je dôležité poznamenať, že tieto názvy parametrov by nemali byť v rozpore so žiadnymi existujúcimi lokálnymi / globálnymi premennými v teste, inak tu bude chyby pri kompilácii vyriešiť názvy premenných.
Pri používaní údajových tabuliek je potrebné poznamenať, že sú potrebné minimálne 2 stĺpce. Ak potrebujete iba jeden stĺpec, potom je riešením prázdny stĺpec s hodnotami ako znakom podčiarknutia, ako je uvedené nižšie.
input1 ||_ 10 ||_ -4 ||_
Výhodou tohto formátu je jednoduchosť, čitateľnosť a rozšíriteľnosť. Pridanie nového vstupu údajov je také jednoduché ako pridanie nového riadku s hodnotami údajov.
Ďalším bodom, ktorý si tu treba uvedomiť, je, že údajové tabuľky možno použiť na uchovanie ľubovoľného typu premenných, tried, objektov, enumov atď., Vďaka čomu sú ešte výkonnejšie. Pretože groovy je voliteľne napísaný jazyk, ak nie je uvedený explicitný typ, znamenajú premenné v tabuľke údajov závislé od typu poskytovaných údajov.
Uvidíme ďalší Príklad použitie dátových tabuliek so zoznamom reťazcov ako vstupných a výstupných ako počet prvkov v reťazci.
def 'sample parameterized test with list data type'() when: def actualCount = input1.size() then: actualCount == expectedCount where: input1
Vo vyššie uvedenom príklade si môžete všimnúť, že sme poskytli vstup ako zoznam polí reťazcov a výstupom je veľkosť tohto zoznamu polí. Dáva teda veľkú flexibilitu mať vstupné údaje rôznych typov.
Môžete tiež jednoducho spomenúť všetky výrazy, ktoré vracajú údaje príslušného typu vstupu a používajú sa priamo aj v údajových tabuľkách.
Životný cyklus bloku „kde“
V prípade testov obsahujúcich vzorky blokov a údajov vo forme tabuliek údajov predstavuje každý riadok údajov jedno vykonanie testovacej metódy.
Napríklad, ak existuje 5 riadkov údajov a test obsahuje bloky „dané“ a „kedy“, potom sa pre tento riadok údajov vykonajú testovacie bloky raz. Celkovo teda bude vykonaných 5 testovacích metód.
tipy a triky
Pozrime sa na niekoľko tipov a trikov na parametrizačné testy pri práci s týmito tabuľkami údajov.
# 1) Samostatné zobrazovanie výsledkov vykonávania jednotlivých riadkov. Ako sme videli v sekcii životného cyklu, pre každý riadok údajov existuje jedno spustenie testovacieho kódu. Aby sa tieto riadky alebo výsledky zobrazili osobitne pre každý takýto riadok, môže sa pre takéto testy použiť anotácia „@Unroll“.
Skúsme to pochopiť na príklade:
Budeme používať rovnakú aplikáciu kalkulačky s 3 sadami vstupných údajov dodávaných do testovanej metódy.
ako prehrať súbory .mkv
def 'sample parameterized test'() -20
Bez anotácie „@Unroll“ sa pozrime, ako vyzerá výsledok v termináli (a tiež prehľady založené na html). Pri tomto druhu výstupu je ťažké zistiť, ktorá množina vstupu spôsobila zlyhanie testu.
Teraz sa pozrime, ako sa výstup testu vykáže osobitne pre každý riadok po pridaní anotácie „@Unroll“ k testovacej metóde (ktorá má ako vstup údajov tabuľky údajov).
#dva) Poďme teda pochopiť, ako k týmto testom založeným na údajoch pridať zmysluplné informácie (namiesto niektorých automaticky pridaných indexov, ako je to na snímke obrazovky vyššie).
Pre vstupné a výstupné vlastnosti (podľa údajovej tabuľky) môžeme použiť zástupné symboly a potom môžeme vidieť hodnoty vyplnené v názvoch testov údajmi z údajových tabuliek.
Použime rovnaký príklad a aktualizujme názov testu, aby sme získali údaje zo vstupu a očakávaného výstupu, ako je uvedené v tabuľkách s údajmi:
@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
Teraz sa pozrime, ako vyzerá výstup v termináli a prehľadoch založených na HTML:
Ako tu vidíte, údaje zo vstupu a výstupu sa teraz pri spustení zobrazujú spolu s názvami testov. Týmto spôsobom je riešenie problémov a ladenie oveľa jednoduchšie, pretože jasne naznačuje, aký vstup spôsobil zlyhanie alebo nesprávne správanie testu.
Záver
V tomto tutoriáli sme sa dozvedeli o písaní parametrizovaných testov s rámcom Spock. Diskutovali sme tiež o rôznych vlastnostiach údajových tabuliek a o tom, ako ich možno použiť.
V našom pripravovanom výučbe sa dozviete, ako používať Mocks and Stubs so Spockom !!
Výukový program PREV | NEXT Tutorial
Odporúčané čítanie
- Písanie testov jednotiek s programom Spock Framework
- Spock Interview Otázky s odpoveďami (najobľúbenejšie)
- Spock pre integráciu a funkčné testovanie so selénom
- Spock Mocking and Stubbing (Príklady s videonávodmi)
- Výukový program pre Spock: Testovanie s programom Spock a Groovy
- Rámec riadený dátami v selenovom WebDriveri pomocou POI Apache
- Ako vykonať testovanie na základe údajov pomocou nástroja TestComplete
- Ako funguje testovanie na základe dát (príklady QTP a selénu)