data driven parameterized testing with spock framework
Istražite načine pisanja testova vođenih podacima ili parametariziranih testova pomoću Spock okvira:
U ovome Besplatna serija vodiča za obuku Spocka , istražili smo sve o Jedinstveno testiranje u Spocku i ispitni elementi, tvrdnje i izvještavanje u našem prethodnom vodiču.
U ovom uputstvu pokušat ćemo shvatiti što su parametrizirani testovi i kako možete iskoristiti ugrađene značajke Spocka kako biste postigli testiranje na temelju podataka.
Počnimo!!
Pogledajte video vodič
Što ćete naučiti:
- Što su parametarski testovi?
- Pisanje parametarskih testova sa Spockom
- Životni ciklus bloka 'gdje'
- savjeti i trikovi
- Zaključak
- Preporučena literatura
Što su parametarski testovi?
Za sve koji su radili s automatizacijom / jediničnim testovima, testiranje na temelju podataka nije novi pojam.
Parametrizirani testovi nisu ništa drugo nego su bilo koje vrste testova koji dijele istu logiku izvršenja i razlikuju se samo u ulaznim podacima i ishodu u nekim slučajevima.
Primjer: Pretpostavimo da imate aplikaciju Kalkulator, kako biste u potpunosti testirali funkcionalnost, možda biste trebali pokrenuti svoje testove na različitim skupima ulaza.
Primjer: Negativne vrijednosti, razlomljeni brojevi, normalni cijeli brojevi, cijeli brojevi koji se približavaju maksimalno dopuštenom rasponu itd. Bez obzira koje ulazne vrijednosti imate, želite pokrenuti istu logiku izvršavanja.
Još jedan dobar razlog za pisanje parametriziranih testova je taj što se ne testira samo sretan put, već se također testira put pogrešaka ili negativni scenariji.
Primjer: Pretpostavimo da postoji aplikacija koja vraća je li dani nastavak datoteke valjan ili ne. Podaci vođeni testovima mogu brzo omogućiti programeru da izvrši testove za podržana proširenja datoteka i sve scenarije pogrešaka ili negativne ulazne testove.
Sada tradicionalno možete razmišljati o pisanju ili kopiranju testova za više ulaznih vrijednosti, ali to nije ispravan ili pametan način za postizanje ove vrste izvođenja testa. Štoviše, kako se broj testova u vašoj aplikaciji povećava, postat će teško održavati ih.
Pisanje parametarskih testova sa Spockom
Blok gdje:
Blok where u Spock testu je blok koji sadrži podatke za parametrizirano ispitivanje. Po želji može sadržavati i ulazne i očekivane izlazne vrijednosti. Važna napomena o ovom bloku je da bi ovo trebao biti zadnji blok u Spock testu.
Nakon toga, može se kombinirati sa svim ostalim blokovima kao što je dato, kada i tada, ali trebao bi biti zadnji blok.
Pogledajmo Primjer kako bismo ga bolje razumjeli
Koristit ćemo aplikaciju kalkulatora koja uzima 2 ulazna parametra i vraća zbroj isporučenih ulaza. Napisat ćemo parametarski test koji daje više ulaza i vrijednosti očekivanog izlaza.
def 'sample parameterized test'() input2
U gornjem uzorku koda možete vidjeti sljedeće:
- Blok “gdje” koji sadrži podatke za izvođenje testa.
- Blok “gdje” je zadnji blok testa.
- 'Gdje' se kombinira s ostalim blokovima, tj. Dano je, kada i tada.
- Prikazivanje podataka je poseban format koji se naziva tablicama podataka, a koji ćemo detaljno razmotriti u sljedećim odjeljcima ovog vodiča.
- Red zaglavlja podataka u osnovi su svojstva / ulazne varijable koje se mogu izravno koristiti u testu. Npr. Pogledajte izjavu u bloku 'kada' gdje smo se izravno koristili ulaz1 i ulaz2 kao ulazni parametri bez njihovog eksplicitnog definiranja.
Korištenje podatkovnih tablica
Pokušajmo sada detaljno razumjeti tablice podataka. Svaki redak tablice podataka predstavlja podatke za pojedinačni scenarij (izvršavanje testa).
Prema dogovoru, tj. Ulaznim vrijednostima prethodi jedna cijev ('|'), dok izlaznim vrijednostima prethodi dvostruka cijev ('||'). Ovo nema nikakav logički značaj, ali je konvencionalno i poboljšava čitljivost. Dakle, oba primjera u nastavku vrijede.
input1 |input2 |expectedResult 10 |15 |25 -4 |6 |2 input1 |input2 || expectedResult 10 |15 || 25 -4 |6 || 2
Redak zaglavlja, kao što je prikazano gore, ima naziv za svaki parametar dostavljen kao podatak za testiranje. Ovdje je važno napomenuti da se ovi nazivi parametara ne bi trebali sukobljavati s bilo kojim postojećim lokalnim / globalnim varijablama u testu, inače će biti pogreške tijekom kompajliranja za rješavanje imena varijabli.
Važno je napomenuti tijekom korištenja tablica podataka da su potrebna najmanje 2 stupca. Ako vam je potreban samo jedan stupac, prazan je stupac sa vrijednostima kao podvlakom znak zaobilazno rješenje kao u nastavku.
input1 ||_ 10 ||_ -4 ||_
Prednost ovog formata je jednostavnost, čitljivost i proširivost. Dodavanje novog unosa podataka jednostavno je poput dodavanja novog retka s vrijednostima podataka.
Još jedna stvar koju ovdje treba napomenuti jest da se tablice podataka mogu koristiti za držanje bilo koje vrste varijabli, klasa, objekata, nabrajanja itd. Što je čini još snažnijom. Kako je groovy neobavezno upisani jezik, ako eksplicitni tip nije naveden, varijable u tablici podataka podrazumijevaju ovisno o vrsti dostavljenih podataka.
Da vidimo još jednu Primjer koristeći tablice podataka s popisom nizova kao ulazom i izlazom kao brojem elemenata u nizu.
def 'sample parameterized test with list data type'() when: def actualCount = input1.size() then: actualCount == expectedCount where: input1
U gornjem primjeru možete primijetiti da smo unijeli ulaz kao popis nizova nizova, a izlaz je veličina ovog popisa polja. Dakle, daje veliku fleksibilnost posjedovanja ulaznih podataka različitih vrsta.
Također možete jednostavno spomenuti bilo koji izraz koji vraća podatke određene vrste unosa i koristi ih izravno u tablicama podataka.
Životni ciklus bloka 'gdje'
Za testove koji sadrže blok i uzorke podataka u obliku tablica podataka, svaki red podataka predstavlja jedno izvršavanje metode ispitivanja.
Na primjer, ako postoji 5 redaka podataka, a test sadrži blokove 'zadani' i 'kada', tada će se za takav redak podataka test blokovi izvršiti jednom. Dakle, ukupno će biti izvršeno 5 metoda ispitivanja.
savjeti i trikovi
Pogledajmo nekoliko savjeta i trikova za parametrirane testove tijekom rada s ovim tablicama podataka.
# 1) Prikazivanje rezultata pojedinačnog izvođenja reda zasebno. Kao što smo vidjeli u odjeljku životnog ciklusa, za svaki redak podataka postoji jedno izvršavanje testnog koda. Da bi se ovi retci ili rezultati prikazali odvojeno za svaki takav redak, za takve testove može se upotrijebiti napomena '@Unroll'.
Pokušajmo to razumjeti na primjeru:
Koristit ćemo istu aplikaciju kalkulatora s 3 seta ulaznih podataka koji se dostavljaju u metodu koja se ispituje.
najbolji softver za video pretvorbu za mac
def 'sample parameterized test'() -20
Bez napomene '@Unroll', pogledajmo kako rezultat izgleda u terminalu (kao i izvješća temeljena na html-u). S ovom vrstom izlaza postaje teško otkriti koji je skup unosa uzrokovao neuspjeh testa.
Ajmo sada vidjeti kako se test izlaz izvještava zasebno za svaki redak nakon dodavanja oznake '@Unroll' u metodu ispitivanja (koja ima tablice podataka kao ulaz podataka).
#dva) Sada, hajde da shvatimo kako dodati značajne informacije u ove testove vođene podacima (umjesto nekih automatski dodanih indeksa kao na gornjoj snimci zaslona).
Možemo koristiti rezervirana mjesta za svojstva ulaza i izlaza (prema tablici podataka), a zatim možemo vidjeti vrijednosti napučene u imenima testova s podacima iz tablica podataka.
Upotrijebimo isti primjer i ažurirajte naziv testa kako bismo dobili podatke iz ulaza i očekivanog izlaza kako je spomenuto u tablicama podataka:
@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
Sada da vidimo kako izlaz izgleda u terminalu i izvješćima temeljenim na HTML-u:
Dakle, kao što ovdje možete vidjeti, podaci iz ulaza i izlaza sada se prikazuju zajedno s imenima testa kada se izvršavaju. Na taj način znatno je olakšano rješavanje problema i uklanjanje pogrešaka jer jasno ukazuje na to zbog kojeg je unosa test propao ili se loše ponašao.
Zaključak
U ovom uputstvu naučili smo o pisanju parametriziranih testova sa Spock okvirom. Također smo razgovarali o raznim značajkama tablica podataka i o tome kako ih se može koristiti.
Pogledajte naš predstojeći vodič da biste znali kako koristiti Mocks and Stubs sa Spockom !!
Preporučena literatura
- Pisanje jedinstvenih testova sa Spock Frameworkom
- Spock intervju pitanja s odgovorima (najpopularnije)
- Spock za integraciju i funkcionalna ispitivanja sa selenom
- Spock ruganje i nabacivanje (primjeri uz video upute)
- Vodič za Spock: Testiranje sa Spockom i Groovyjem
- Data Driven Framework u Selenium WebDriver koristeći Apache POI
- Kako izvesti testiranje na temelju podataka pomoću alata TestComplete
- Kako funkcionira testiranje na temelju podataka (primjeri QTP-a i selena)