spock interview questions with answers
selénový webdriver s uhorkou napríklad v zatmení
Vyčistite si rozhovor so Spockom úspešne pomocou tohto zoznamu otázok, ktoré sa týkajú rozhovoru so Spockom:
V tomto Výukové programy Spock pre všetkých , preskúmali sme všetko okolo Integrácia a funkčné testovanie v Spocku v našom predchádzajúcom návode.
Tento tutoriál sa bude venovať najčastejšie kladeným otázkam pri rozhovoroch týkajúcich sa Spockovho rámca.
Pokúsime sa tiež porozumieť metódam upínania Spock a podpore zabudovaných rozšírení, vďaka ktorým je Spock skutočne silným nástrojom pre mnoho typov testovania, ako sú Unit, Integration a end to end.
Najobľúbenejšie otázky týkajúce sa rozhovoru so Spockom
Nižšie sú uvedené niektoré z najčastejšie kladených otázok o rozhovoroch spoločnosti Spock s odpoveďami a príkladmi.
Poďme preskúmať !!
Otázka č. 1) Môže mať Spockov test viac blokovaní kedy a potom?
Odpoveď: Všeobecne sa odporúča absolvovať malé testy alebo scenáre, pretože pokus urobiť veľa vecí v jednom teste môže byť vôňou kódu. Z uvedeného vyplýva, že je úplne platné mať v teste viac blokov typu kedy a potom. Test sa bude považovať za úspešný, až keď budú všetky vtedajšie bloky v vyhovujúcom stave.
Pozrime sa na príklad:
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 }
Vo vyššie uvedenom bloku kódu vidíte, že máme 2 bloky typu kedy a potom.
Upozorňujeme na nasledujúce body:
- Bloky sa vykonávajú v poradí podľa vzhľadu, to znamená postupne.
- Zlyhanie kohokoľvek, kto blokuje, bude mať za následok zlyhanie testu.
- Aby bol test úspešný, mali by vyhovieť tvrdenia vo všetkých vtedajších blokoch.
Otázka 2) Aké všetky spôsoby upevnenia sú k dispozícii v Spocku?
Odpoveď: Metódy svietenia sú ako spätné volania, ktoré sa volajú, keď sa spustí konkrétny háčik udalosti.
Spock poskytol 4 testovacie prípravky, ktoré sa spúšťajú proti rôznym udalostiam:
- setupSpec - Spustí sa raz pred spustením celého spustenia súboru Spec.
- cleanupSpec - Spustí sa raz, keď sa vykonajú všetky testy v danom súbore Spec
- nastaviť - Spustí sa jedenkrát pred každým testom v špecifikácii.
- vyčistiť - Spustí sa raz po každom teste v špecifikácii.
Pozrime sa na ukážku kódu na ilustráciu metód svietenia:
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****' }}
Nižšie uvádzame výstup vyššie uvedenej ukážky kódu:
v inštalačnej špecifikácii!
v nastavení!
**** test spec1 ****
v upratovaní!
v nastavení!
**** test spec2 ****
v upratovaní!
v čistiacej špecifikácii!
Ako je uvedené vyššie, môžete si všimnúť, že špecifikácia nastavenia a vyčistenia sa volá iba raz pre celú špecifikáciu a kroky nastavenia / vyčistenia / zariadenia sa volajú raz za test.
Otázka 3) Môžu sa testy Spock použiť na testovanie služieb založených na REST?
Odpoveď: Áno, rámec Spock možno použiť na vytváranie E2E alebo integračné testy pre nasadené služby odpočinku pomocou bežných knižníc Java, ako je šablóna Rest atď. (Upozorňujeme tiež, že Spock sa dá použiť aj na vykonávanie testov pre aplikácie založené na jarnom zavedení, ako aj s inými rámcami ako Selén ).
Pozrime sa na to na jednoduchom príklade, ktorý používa triedu Spring’s RestTemplate a vykonáva operáciu get na verejne hostovanom API a kontroluje, či je odpoveď nenulová.
Príklad:
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 } }
Vo vyššie uvedenom príklade môžete odkázať na špecifikáciu Spock, ktorá sa používa na presadenie odpovede verejného API.
Otázka č. 4) Aké sú obmedzenia rámca Spock?
Odpoveď: Aj keď krivka učenia pre rámec Spock nie je taká strmá, ako sa dá ľahko naučiť, vďaka deklaratívnej syntaxi je veľmi dobre čitateľný.
Zatiaľ je možné zvážiť niekoľko bodov:
- Pre aplikácie na kódovej báze Java bude mať použitie Spocku za následok pridanie nového jazykového zásobníka, napr. Groovy.
- Spockové testy prebiehajú o niečo pomalšie ako natívne testy JUnit.
- Podpora IDE pre Spock nie je taká dobrá ako pre iné rámce ako JUnit.
Napriek všetkým vyššie uvedeným bodom stále výhody Spockovho rámca prevažujú nad malým zoznamom nevýhod, ktoré Spock má.
Otázka č. 5) Vysvetlite niektoré vstavané rozšírenia rámca Spock.
Odpoveď: Spock poskytuje veľa vstavaných rozšírení / hákov / spúšťačov, ktoré sú väčšinou založené na anotáciách (videli sme ich niekoľko v sekcii / otázke o testovacích prípravkoch).
funkčné testovanie vs nefunkčné testovanie
Pozrime sa na niektoré z interných diskusií s príkladmi:
@Ignorovať: Aby sa zabránilo vykonaniu funkcie (alebo individuálnej metódy). Ak chcete použiť metódu jednoduchého zdobenia (individuálna testovacia metóda) alebo celú špecifikáciu, zaistíte tak, že komentovaná metóda alebo trieda nebude vykonaná.
@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: Táto anotácia je užitočná, ak chcete iba vybrať jednu a vykonať zvyšok metód danej špecifikácie.
@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 }
Ako je vidieť vo vyššie uvedenom príklade, vykoná sa metóda anotovaná pomocou @IgnoreRest a ostatné testy sa budú ignorovať.
@IgnoreIf: Táto anotácia je podmienené ignorovaním.
Napríklad: Ak niektoré testy nechcete spustiť v systéme Mac OS, môžete použiť kombináciu @IgnoreIf s System.getProperty („os.name“), ktorá zabezpečí spustenie testov, iba ak sa nájde zodpovedajúci OS .
Skúsme to pochopiť pomocou nižšie uvedenej ukážky kódu:
@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 }
Vo vyššie uvedenej ukážke kódu sme použili anotáciu @IgnoreIf s podmienkou na System.getProperty, ktorá skontroluje „Mac“ v hodnote vlastnosti a ignoruje ju, iba ak je zhoda podmienky úspešná.
Uvidíme tu ešte jedno rozšírenie, t.j. @Čas vypršal: To pomáha spomenúť hodnotu časového limitu v jednotke podľa vášho výberu pre testovaný program a ak dôjde k porušeniu limitu časového limitu, test vyvolá výnimku.
Ďalším dôležitým bodom, ktorý si tu treba uvedomiť, je, že anotáciu @Timeout je možné spomenúť aj v celej špecifikácii, čo skombinuje trvanie všetkých jednotlivých testov a spôsobí výnimku v prípade prekročenia prahovej hodnoty.
@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 } }
Ak vo vyššie uvedenom kóde celkový čas vykonania špecifikácie presiahne 10 ms, vykonanie scenára zlyhá. Výstup s podrobnosťami o chybe môžete vidieť v konzole chýb.
Podobne ako vyššie uvedené rozšírenia, existuje aj niekoľko ďalších zabudovaných rozšírení, ako napríklad:
@ Vyžaduje: Čo si vyžaduje, aby bola splnená konkrétna podmienka.
@Problém: Prepojiť všetky chyby spojené s testovacím prípadom atď.
Tieto rozšírenia dodávajú špecifikáciám Spocku veľkú flexibilitu a výkon a poskytujú veľkú kontrolu nad vykonaním testu.
Záver
Preto sme tu v tomto výučbe prebrali najobľúbenejšie otázky týkajúce sa rozhovorov so Spockom. Krivka učenia pre Spock je nízka kvôli skutočnosti, že jazyk groovy dodržiava deklaratívny štýl programovania a je dobre čitateľný.
Aj keď je relatívne nový, Spock si získava popularitu ako rámec výberu pre písanie rôznych druhov testov Java alebo Groovy aplikácie.
previesť znak na reťazec c ++
Dúfam, že sa vám páčili všetky poučné návody v tejto sérii Spock. Sme si skutočne istí, že tieto výukové programy by obohatili vaše vedomosti a pochopenie Spocka.
Výukový program PREV | PRVÝ výukový program
Odporúčané čítanie
- Písanie testov jednotiek s programom Spock Framework
- Spock pre integráciu a funkčné testovanie so selénom
- Spock Mocking and Stubbing (Príklady s videonávodmi)
- Testovanie na základe dát alebo parametrizovanie pomocou Spock Framework
- Výukový program pre Spock: Testovanie s programom Spock a Groovy
- Dotazy a odpovede na pohovor
- ETL Testovacie otázky a odpovede na pohovor
- 20 najpopulárnejších otázok a odpovedí na pohovory s TestNG