spock interview questions with answers
Vyčistěte si Spock Interview Úspěšně s tímto seznamem Spock Interview Questions:
V tomhle Výukové programy Spock pro všechny , prozkoumali jsme vše kolem Integrace a funkční testování ve Spocku v našem předchozím tutoriálu.
Tento výukový program se bude zabývat nejčastěji kladenými otázkami týkajícími se rozhovorů ohledně rámce Spock.
Pokusíme se také porozumět metodám upnutí Spocku a podpoře vestavěných rozšíření, díky nimž je Spock opravdu mocným nástrojem pro mnoho typů testování, jako je Unit, Integration a end to end.
Nejoblíbenější dotazy na rozhovor se Spockem
Níže jsou uvedeny některé z nejčastěji kladených dotazů Spock Interview s odpověďmi a příklady.
příklad sloučení řazení c ++
Pojďme prozkoumat !!
Otázka č. 1) Může mít Spockův test více bloků kdy a poté?
Odpovědět: Obecně se doporučuje mít malé testy nebo scénáře, protože snaha udělat spoustu věcí v jediném testu může být vůní kódu. To znamená, že je naprosto platné mít v testu více bloků, kdy a pak. Test bude považován za úspěšný, pouze pokud budou všechny bloky v daném stavu.
Podívejme se na pří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 }
Ve výše uvedeném bloku kódu vidíte, že máme 2 bloky kdy a pak.
Vezměte prosím na vědomí níže uvedené body:
- Bloky jsou prováděny v pořadí podle jejich vzhledu, tj. Postupně.
- Selhání kohokoli pak blokování povede k neúspěchu testu.
- Aby byl test úspěšný, měla by projít tvrzení ve všech tehdejších blocích.
Otázka 2) Jaké všechny metody upevnění jsou k dispozici ve Spocku?
Odpovědět: Metody upevnění jsou jako zpětná volání, která jsou volána, když je spuštěn háček konkrétní události.
Spock poskytl 4 testovací přípravky, které se spouštějí proti různým událostem:
- setupSpec - Spustí se jednou před spuštěním celého spuštění souboru Spec.
- cleanupSpec - Spustí se jednou, když jsou provedeny všechny testy v daném souboru Spec
- založit - Spustí se jednou před každým testem ve specifikaci.
- úklid - Spustí se jednou po každém testu ve specifikaci.
Podívejme se na ukázku kódu pro ilustraci metod upnutí:
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****' }}
Níže je uveden výstup výše uvedeného ukázkového kódu:
ve specifikaci nastavení!
v nastavení!
**** testovací specifikace1 ****
ve vyčištění!
v nastavení!
**** testovací specifikace2 ****
ve vyčištění!
ve vyčištění specifikace!
Jak je uvedeno výše, můžete si všimnout, že specifikace pro nastavení a vyčištění jsou volány pouze jednou pro celou specifikaci a kroky a zařízení pro nastavení a vyčištění jsou volány jednou za test.
Otázka č. 3) Lze testy Spock použít k testování služeb založených na REST?
Odpovědět: Ano, rámec Spock lze použít k vytváření testů E2E nebo integračních testů pro nasazené služby odpočinku pomocí běžných knihoven Java, jako je šablona Rest atd. (Upozorňujeme také, že Spock lze také použít ke spuštění testů pro aplikace založené na Spring Boot a také s jinými rámci jako Selen ).
Podívejme se na to na jednoduchém příkladu, který používá třídu Spring's RestTemplate a provádí operaci get na veřejném hostovaném API a kontroluje, zda odpověď není null.
Pří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 } }
Ve výše uvedeném příkladu můžete odkázat na specifikaci Spock, která se používá k prosazení odpovědi veřejného API.
Otázka č. 4) Jaká jsou omezení rámce Spock?
Odpovědět: Ačkoli křivka učení pro rámec Spock není tak strmá, jak je snadné se ji naučit, díky deklarativní syntaxi je velmi čitelná.
Mezitím lze zvážit několik bodů:
- U aplikací na Java codebase bude mít použití Spocku za následek přidání nového jazykového zásobníku, tj. Groovy.
- Spockové testy běží o něco pomaleji než nativní testy JUnit.
- Podpora IDE pro Spock není tak dobrá jako pro jiné rámce jako JUnit.
Přes všechny výše uvedené body stále výhody Spockova rámce převažují nad malým seznamem nevýhod, které Spock má.
Otázka č. 5) Vysvětlete některá vestavěná rozšíření rámce Spock.
Odpovědět: Spock poskytuje mnoho vestavěných rozšíření / háků / spouštěčů, které jsou většinou založeny na anotacích (viděli jsme pár z nich v sekci / otázka testovacích přípravků).
Podívejme se na některé z vestavěných diskusí s příklady:
@Ignorovat: Aby se zabránilo provedení funkce (nebo jednotlivé metody). Aby bylo možné použít jednoduše dekorační metodu (individuální testovací metodu) nebo celou specifikaci, zajistí se, že nebude provedena anotovaná metoda nebo třída.
@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: Tato anotace je užitečná, když chcete jen vybrat jednu a provést zbytek metod dané specifikace.
@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 }
Jak je vidět ve výše uvedeném příkladu, provede se metoda anotovaná pomocí @IgnoreRest a zbytek testů bude ignorován.
@IgnoreIf: Tato anotace je podmíněné ignorování.
Například: Pokud nechcete spouštět některé testy v systému Mac OS, můžete použít kombinaci @IgnoreIf s System.getProperty („os.name“), která zajistí, že testy budou spuštěny, pouze pokud bude nalezen odpovídající OS .
Zkusme to pochopit pomocí níže uvedeného ukázky 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 }
Ve výše uvedeném ukázce kódu jsme použili anotaci @IgnoreIf s podmínkou na System.getProperty, která zkontroluje „Mac“ v hodnotě vlastnosti a bude ignorovat pouze v případě, že je shoda podmínky úspěšná.
Uvidíme zde ještě jedno rozšíření, tj. @Časový limit: To pomáhá zmínit hodnotu časového limitu v jednotce podle vašeho výběru pro test při provádění a pokud je prahová hodnota časového limitu porušena, test vyvolá výjimku.
Dalším důležitým bodem, který je zde třeba poznamenat, je, že anotaci @Timeout lze zmínit i přes celou specifikaci, což zkombinuje dobu trvání všech jednotlivých testů a vyvolá výjimku v případě porušení prahové 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 } }
Ve výše uvedeném kódu, pokud celková doba provedení spec přesáhne 10 ms, provedení scénáře se nezdaří. Výstup s podrobnostmi o chybě můžete vidět v chybové konzole.
Podobně jako u výše zmíněných rozšíření existuje několik dalších vestavěných rozšíření, jako například:
@ Požadavky: Který vyžaduje, aby byla splněna konkrétní podmínka.
@Problém: Propojit jakékoli vady spojené s testovacím případem atd.
Tato rozšíření dodávají specifikacím Spocku velkou flexibilitu a sílu a poskytují velkou kontrolu nad prováděním testu.
Závěr
Proto jsme zde v tomto výukovém programu prozkoumali nejpopulárnější otázky ohledně Spock Interview. Křivka učení pro Spock je nízká vzhledem k tomu, že jazyk groovy sleduje deklarativní styl programování a je dobře čitelný.
I když je relativně nový, Spock získává popularitu jako rámec výběru pro psaní různých druhů testů Jáva nebo aplikace založené na Groovy.
Doufám, že jste si užili všechny informativní výukové programy v této sérii Spock. Jsme si opravdu jisti, že tyto výukové programy by obohatily vaše znalosti a porozumění Spocku.
Výukový program PREV | PRVNÍ výuka
Doporučené čtení
- Psaní testů jednotek pomocí Spock Framework
- Spock pro integraci a funkční testování se selenem
- Spock Mocking and Stubbing (Příklady s videonávody)
- Testování na základě dat nebo parametrizace pomocí Spock Framework
- Výukový program Spock: Testování pomocí Spocka a Groovyho
- Dotazy a odpovědi na pohovor
- ETL Testing Interview Otázky a odpovědi
- 20 nejoblíbenějších otázek a odpovědí na rozhovor s TestNG