spock interview questions with answers
Uspešno počistite intervju s Spockom s tem seznamom vprašanj za intervju z Spockom:
V tem Spock vaje za vse , smo raziskovali vse okoli Integracija in funkcionalno testiranje v Spocku v naši prejšnji vadnici.
Ta vadnica bo zajela najpogostejša vprašanja v zvezi z intervjuji v okolju Spock.
Poskusili bomo tudi razumeti načine vpenjanja Spock in podporo za vgrajene razširitve, zaradi katerih je Spock resnično močno orodje za številne vrste testiranja, kot so Unit, Integration in od konca do konca.
Najbolj priljubljena vprašanja za intervju z Spockom
Spodaj je navedenih nekaj najpogostejših vprašanj za intervju z Spockom z odgovori in primeri.
Raziskujmo !!
V # 1) Ali ima lahko Spockov test več, kdaj in potem blokov?
Odgovor: Običajno je priporočljivo imeti majhne teste ali scenarije, saj je poskušanje opraviti veliko stvari v enem preskusu lahko vonj po kodi. Ob tem je povsem veljavno, da imamo v testu večkrat kdaj in potem blokov. Preizkus bo veljal za uspešnega šele, ko bodo vsi takratni bloki v stanju prehoda.
Poglejmo primer, ki to ponazori:
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 }V zgornjem bloku kode lahko vidite, da imamo 2 bloka, ko in potem.
Prosimo, upoštevajte spodnje točke:
- Bloki se izvajajo po vrstnem redu njihovega videza, torej zaporedno.
- Če kdor koli nato blokira, test ne bo uspel.
- Trditve v vseh tedanjih blokih bi morale biti uspešne, da bi splošni test uspel.
V # 2) Katere vse metode pritrditve so na voljo v Spocku?
Odgovor: Metode vpenjanja so kot povratni klici, ki se prikličejo, ko se sproži določen kavelj dogodka.
Spock je priskrbel 4 preizkusne naprave, ki se sprožijo ob različnih dogodkih:
najboljša programska oprema za kloniranje trdega diska 10
- setupSpec - Zažene se enkrat, preden se začne izvajanje celotne datoteke Spec.
- cleanupSpec - Zažene se enkrat, ko se izvedejo vsi testi v dani datoteki Spec
- nastaviti - Zažene se enkrat pred vsakim preskusom v specifikaciji.
- pospravi - Zažene se enkrat po vsakem preskusu v specifikaciji.
Oglejmo si vzorec kode, ki ponazarja metode vpenjanja:
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****' }} Spodaj je rezultat zgornjega vzorca kode:
v nastavitvenih specifikacijah!
v namestitvi!
**** test spec1 ****
v čiščenju!
v namestitvi!
**** test spec2 ****
v čiščenju!
v specifikacijah za čiščenje!
Kot je prikazano zgoraj, lahko opazite, da se nastavitveni in čistilni podatki pokličejo samo enkrat za celotno specifikacijo, koraki / napeljave za nastavitev in čiščenje pa enkrat na test.
V # 3) Ali se lahko Spockovi testi uporabljajo za testiranje storitev, ki temeljijo na REST?
Odgovor: Da, Spock ogrodje se lahko uporablja za ustvarjanje E2E ali integracijske teste za razporejene počitniške storitve z uporabo običajnih knjižnic Java, kot je Predloga za počitek itd. (Upoštevajte tudi, da se Spock lahko uporablja tudi za izvajanje preskusov za aplikacije, ki temeljijo na Spring, in z drugimi okviri, kot je Selen ).
Poglejmo to s preprostim primerom, ki uporablja razred Spring's RestTemplate in izvede operacijo pridobivanja v javnem gostujočem API-ju in preveri, da odziv ni nič.
Primer:
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 } } V zgornjem primeru se lahko sklicujete na specifikacijo Spock, ki se uporablja za uveljavljanje odziva javnega API-ja.
V # 4) Kakšne so omejitve Spockovega okvira?
Odgovor: Čeprav učna krivulja za Spockov okvir ni tako strma, kot se ga je enostavno naučiti, je njegova izjavna sintaksa zelo berljiva.
Medtem lahko razmislimo o nekaj točkah:
- Za aplikacije na kodni bazi Java bo uporaba Spocka povzročila dodajanje novega jezikovnega sklada, tj. Groovy.
- Spockovi testi se izvajajo nekoliko počasneje kot domači testi JUnit.
- Podpora IDE za Spock ni tako dobra kot za druge okvire, kot je JUnit.
Kljub vsem zgoraj navedenim pa prednosti Spockovega okvira še vedno presegajo majhen seznam slabosti, ki jih ima Spock.
V # 5) Pojasnite nekatere vgrajene razširitve okvira Spock.
Odgovor: Spock ponuja veliko vgrajenih razširitev / kljuk / sprožilcev, ki večinoma temeljijo na pripisih (nekaj smo jih videli v razdelku / vprašanju o preskusnih napravah).
Poglejmo nekaj vgrajene razprave s primeri:
@ Prezri: Da preprečite izvedbo funkcije (ali posamezne metode). Če želite uporabiti preprosto metodo okrasitve (posamezna preskusna metoda) ali celotno specifikacijo, bo to zagotovilo, da se označena metoda ali razred ne bosta izvajala.
@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: Ta pripis je uporaben, če želite samo izbrati enega in izvesti preostale metode 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 } Kot je razvidno iz zgornjega primera, se izvede metoda, označena z @IgnoreRest, ostali preskusi pa bodo prezrti.
@IgnoreIf: Ta pripis je pogojno prezrtje.
Na primer: Če ne želite izvajati nekaterih preskusov v operacijskem sistemu Mac OS, lahko uporabite kombinacijo @IgnoreIf s System.getProperty (“os.name”), ki bo zagotovila, da se bodo testi izvajali le, če bo najden ustrezen OS .
Poskusimo to razumeti s spodnjim vzorcem kode:
@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 } V zgornjem vzorcu kode smo uporabili pripis @IgnoreIf s pogojem na System.getProperty, ki bo v vrednosti lastnosti preveril »Mac« in prezrl le, če bo ujemanje pogoja uspešno.
Poglejmo še eno razširitev tukaj, tj. @Odmor: To pomaga omeniti vrednost časovne omejitve v enoti, ki ste jo izbrali za test, ki se izvaja, in če je prag časovne omejitve presežen, bo test vrgel izjemo.
Tu je treba omeniti še eno pomembno točko: pripis @Timeout lahko omenimo tudi v celotni specifikaciji, kar bo združevalo trajanje vseh posameznih preskusov in povzročilo izjemo v primeru kršitve 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 } } V zgornji kodi, če skupni čas izvedbe specifikacije preseže 10 ms, izvedba scenarija ne bo uspela. Rezultat s podrobnostmi o napakah si lahko ogledate v konzoli za napake.

Podobno kot pri zgoraj omenjenih razširitvah obstaja tudi nekaj drugih vgrajenih razširitev, kot so:
@ Zahteva: Kar zahteva, da je določen pogoj resničen.
@Težava: Za povezovanje morebitnih napak, povezanih s testnim primerom itd.
kako uporabiti razširitev github za vizualni studio
Te razširitve dodajo Spockovim specifikacijam veliko prilagodljivosti in moči ter veliko nadzora nad izvajanjem testa.
Zaključek
Tako smo v tej vadnici obravnavali najbolj priljubljena vprašanja za intervju z Spockom. Krivulja učenja za Spocka je nizka, ker jezik groovy sledi deklarativnemu slogu programiranja in je zelo berljiv.
Čeprav je Spock razmeroma nov, postaja priljubljen kot okvir izbire za pisanje različnih vrst testov v Java ali Groovy-jeve aplikacije.
Upam, da ste uživali v vseh informativnih vadnicah v tej seriji Spock. Res smo prepričani, da bi te vaje obogatile vaše znanje in razumevanje Spocka.
Priporočeno branje
- Pisanje enotnih testov s Spock Framework
- Spock za integracijo in funkcionalno testiranje s selenom
- Spock posmehovanje in zatiranje (primeri z video vajami)
- Podatkovno ali parametrizirano testiranje s Spock Framework
- Vadnica za Spock: Testiranje s Spockom in Groovyjem
- Vprašanja in odgovori za intervju
- Vprašanja in odgovori za preizkušanje ETL
- 20 Najbolj priljubljenih vprašanj in odgovorov na intervju za TestNG