spock interview questions with answers
Uspješno očistite Spock intervju s ovim popisom pitanja za Spock intervju:
U ovome Spock Tutoriali za sve , istražili smo sve o Integracija i funkcionalno ispitivanje u Spocku u našem prethodnom vodiču.
Ovaj vodič obuhvatit će najčešće postavljana pitanja iz razgovora oko okvira Spock.
Pokušat ćemo također razumjeti metode Spock učvršćenja i podršku za ugrađena proširenja koja Spock čine doista moćnim alatom za mnoge vrste testiranja poput Unit, Integration i od kraja do kraja.
Najpopularnija pitanja za intervju sa Spockom
U nastavku su navedena neka od najčešće postavljanih pitanja za Spock intervju s odgovorima i primjerima.
Istražimo !!
P # 1) Može li Spock test imati više blokova kada, a zatim?
Odgovor: Općenito se preporučuje imati male testove ili scenarije, jer pokušaj izvršavanja puno stvari u jednom testu može biti miris koda. Kad smo to rekli, potpuno je valjano imati više blokova kada i onda u testu. Test će se smatrati uspješnim samo kada su svi tadašnji blokovi u stanju prolaska.
Pogledajmo primjer koji će to ilustrirati:
def 'illustrate multiple when and then blocks'() { given: def input1 = 50 def input2 = 100 def result when: result = input1 + input2 then: result == 150 when: result = input2 - input1 then: result == 50 }
U gornjem bloku koda možete vidjeti da imamo 2 bloka kada i tada.
Imajte na umu dolje navedene točke:
- Blokovi se izvršavaju redoslijedom njihovog izgleda, tj. Sekvencijalno.
- Ako bilo tko ne blokira, test će propasti.
- Tvrdnje u svim tadašnjim blokovima trebale bi proći kako bi cjelokupni test uspio.
P # 2) Koje su sve metode učvršćenja dostupne u Spocku?
Odgovor: Metode učvršćivanja su poput povratnih poziva koji se pozivaju kada se aktivira određena udica događaja.
Spock je pružio 4 testna tijela koja se pokreću protiv različitih događaja:
- setupSpec - Izvodi se prije nego što započne izvršavanje cijele datoteke Spec.
- cleanupSpec - Izvodi se jednom kada se izvrše svi testovi u datoj datoteci Spec
- postaviti - Radi jednom prije svakog ispitivanja u specifikaciji.
- počistiti - Radi jednom nakon svakog ispitivanja u specifikaciji.
Pogledajmo uzorak koda za ilustraciju metoda učvršćenja:
class TestFixtureSpec extends Specification { def setupSpec() { println 'in setup spec!' } def cleanupSpec() { println 'in cleanup spec!' } def setup() { println 'in setup!' } def cleanup() { println 'in cleanup!' } def 'test spec1'() { given: println '****test spec1****' } def 'test spec2'() { given: println '****test spec2****' }}
Ispod je izlaz gornjeg uzorka koda:
u specifikacijama za postavljanje!
u postavi!
**** testna specifikacija1 ****
u čišćenju!
u postavi!
**** test spec2 ****
u čišćenju!
u spec. čišćenja!
Kao što je gore prikazano, možete primijetiti da se specifikacije za postavljanje i čišćenje pozivaju samo jednom za cijelu specifikaciju, a koraci / uređaji za postavljanje i čišćenje pozivaju se jednom po testu.
P # 3) Mogu li se Spock testovi koristiti za testiranje usluga temeljenih na REST-u?
Odgovor: Da, Spock okvir može se koristiti za stvaranje E2E ili integracijskih testova za raspoređene usluge odmora koristeći uobičajene Java knjižnice poput Predloška za odmor itd. (Također, imajte na umu da se Spock također može koristiti za pokretanje testova za programe temeljene na Spring boot, kao i s drugim okvirima poput Selen ).
kako ručno testirati ubrizgavanje sql - a
Pogledajmo to na jednostavnom primjeru koji koristi Springovu klasu RestTemplate i izvodi operaciju dobivanja na javnom hostiranom API-ju i provjerava da odgovor nije null.
Primjer:
class RestApiIntegrationSpec extends Specification { def 'check rest api status'() { when: 'a rest call is performed to the status page' RestTemplate restTemplate = new RestTemplate() String response = restTemplate.getForObject('https://httpbin.org/get', String.class) then: response != null } }
U gornjem primjeru možete se pozvati na Spock specifikaciju koja se koristi za utvrđivanje odgovora javnog API-ja.
P # 4) Koja su ograničenja Spockova okvira?
raspodjela ekvivalentnosti i analiza granične vrijednosti
Odgovor: Iako krivulja učenja za Spockov okvir nije toliko strma koliko je lako naučiti, njegova deklarativna sintaksa čini je vrlo čitljivom.
U međuvremenu, može se razmotriti nekoliko točaka:
- Za programe na Java kodnoj bazi, upotreba Spocka rezultirat će dodavanjem novog jezičnog stoga, tj. Groovy.
- Spock testovi rade nešto sporije od izvornih JUnit testova.
- IDE podrška za Spock nije tako dobra kao za druge okvire poput JUnit.
Unatoč svim gornjim točkama, ipak, prednosti Spockova okvira nadmašuju mali popis nedostataka koje Spock ima.
P # 5) Objasnite neka ugrađena proširenja okvira Spock.
Odgovor: Spock nudi puno ugrađenih proširenja / kuka / okidača koji su uglavnom utemeljeni na napomenama (nekoliko smo ih vidjeli u odjeljku / pitanju testnih čvora).
Pogledajmo neke ugrađene rasprave s primjerima:
@Zanemariti: Da biste spriječili izvršenje značajke (ili pojedinačne metode). Da bi se koristila metoda jednostavnog ukrašavanja (pojedinačna metoda ispitivanja) ili cijela specifikacija, to će osigurati da se označena metoda ili klasa ne izvrše.
@Ignore def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO world' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
@IgnoreRest: Ova je napomena korisna kada samo želite odabrati jednu i izvršiti ostatak metoda dane specifikacije.
@IgnoreRest def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO world' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 } def 'check addition of 2 numbers'() { given: int input1 = 10 int input2 = 25 expect: input1.getClass().toString() == 'class java.lang.Integer' input2.getClass().toString() == 'class java.lang.Integer' input1 = Integer.MIN_VALUE when: int result = input1 + input2 then: result == 35 }
Kao što se vidi u gornjem primjeru, metoda s oznakom @IgnoreRest će se izvršiti, a ostatak testova će se zanemariti.
@IgnoreIf: Ova je napomena uvjetno zanemarivanje.
Na primjer: Ako ne želite pokretati neke testove na Mac OS-u, tada možete upotrijebiti kombinaciju @IgnoreIf sa System.getProperty (“os.name”) koja će osigurati da se testovi pokrenu samo ako se pronađe odgovarajući OS .
Pokušajmo to razumjeti sa donjim uzorkom koda:
@IgnoreIf({ System.getProperty('os.name').contains('Mac') }) def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello world' String str2 = 'HELLO world' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
U gornjem uzorku koda koristili smo bilješku @IgnoreIf sa uvjetom na System.getProperty koji će provjeriti ima li 'Mac' u vrijednosti svojstva i zanemariti samo ako je podudaranje uvjeta uspješno.
Pogledajmo ovdje još jedno produženje tj. @Pauza: To pomaže u spominjanju vrijednosti vremenskog ograničenja u jedinici po vašem izboru za test koji se izvodi, a ako se probije prag vremenskog ograničenja, test će izuzeti.
Još jedna važna stvar koju ovdje treba napomenuti jest da se bilješka @Timeout može spomenuti i u cijeloj specifikaciji, što će kombinirati trajanje svih pojedinačnih testova i izuzetak u slučaju kršenja praga.
@Timeout(value=10, unit= TimeUnit.MILLISECONDS) class SampleSpec extends Specification { def 'check case-insensitive equality of 2 strings'() { //test1 } def 'check addition of 2 numbers'() { //test2 } }
U gornjem kodu, ako ukupno vrijeme izvršavanja specifikacije prelazi 10 ms, izvršenje scenarija neće uspjeti. Izlaz s detaljima pogreške možete vidjeti na konzoli pogrešaka.
Slično gore spomenutim proširenjima, postoji i nekoliko drugih ugrađenih proširenja poput:
@Treba: Što zahtijeva da određeni uvjet bude istinit.
@Problem: Za povezivanje bilo kakvih nedostataka povezanih s test slučajem itd.
Ova proširenja dodaju mnogo fleksibilnosti i snage Spock specifikacijama i daju puno kontrole za izvršavanje testa.
Zaključak
Stoga smo ovdje u ovom vodiču pokrili najpopularnija pitanja za Spock Interview. Krivulja učenja za Spocka niska je zbog činjenice da jezik groovy slijedi deklarativni stil programiranja i vrlo je čitljiv.
Iako relativno nov, Spock stječe popularnost kao okvir izbora za pisanje različitih vrsta testova u Java ili Groovy-ove aplikacije.
Nadam se da ste uživali u svim informativnim vodičima u ovoj Spock seriji. Zaista smo sigurni da bi ti vodiči obogatili vaše znanje i razumijevanje Spocka.
Preporučena literatura
- Pisanje jedinstvenih testova sa Spock Frameworkom
- Spock za integraciju i funkcionalna ispitivanja selenom
- Spock ruganje i nabacivanje (primjeri s video tutorijalima)
- Testiranje na temelju podataka ili parametrizirano sa Spock Frameworkom
- Vodič za Spock: Testiranje sa Spockom i Groovyjem
- Intervjuirajte pitanja i odgovore
- Pitanja i odgovori za ispitivanje ETL-a
- 20 najpopularnijih pitanja i odgovora na intervjuu za TestNG