top 15 popular specflow interview questions
Nejčastěji kladené dotazy a odpovědi na rozhovor Specflow:
Náš předchozí výukový program Specflow informoval Jak generovat protokoly o zkouškách a provádět selektivní testy .
V tomto tutoriálu se podíváme na nejoblíbenější Specflow Interview Questions spolu s jejich odpověďmi.
Přečtěte si Kompletní řada Specflow Training pro snadné pochopení konceptu. Specflow je nástroj podporující postupy BDD v rámci .NET. Je to open-source framework hostovaný na GitHubu. Pomáhá při používání ATDD (Acceptance Test Driver Development) pro .NET.
Nejlepší Specflow Interview Otázky a odpovědi
Níže jsou uvedeny nejoblíbenější Dotazy na rozhovor Specflow s odpověďmi a příklady pro snadné pochopení.
Otázka č. 1) Jaký je rozdíl mezi souborem funkcí a soubory vazeb?
Odpovědět: Psaní testů BDD ve Specflow má 2 hlavní komponenty, a to
- Soubory funkcí: Které obsahují testy napsané jako Scénáře v doménově specifickém jazyce (DSL) a jsou to v podstatě obyčejné anglické soubory, které jsou vhodné a srozumitelné pro všechny zúčastněné strany projektu. Ve skutečnosti se jedná o skutečné testovací soubory a jsou interpretovány prostřednictvím vazeb nebo definicí kroků.
- Krok vázání: Tyto soubory kódu jsou skutečnou logikou inteligence za provedením testu. Každý krok ve scénáři (který je součástí souboru funkcí) se váže na soubor definice kroku, který se skutečně provede při spuštění testu.
Kombinace obou souborů funkcí a definice kroku nebo vazeb proto umožňuje, aby testy spustil rámec Specflow (nebo jakýkoli jiný BDD).
Otázka 2) Co je BDD a jak se liší od TDD nebo ATDD?
Odpovědět: Všechny tyto tři pojmy, tj. BDD, TDD a ATDD, do jisté míry souvisejí s vývojem řízeným testem obecně, ale v mnoha ohledech se skutečně liší.
- TDD: TDD v zásadě vytváří testy z pohledu vývojáře. Jednoduše řečeno, jedná se o sadu testů, které vývojář píše, aby jeho kód vyhověl (nebo selhal). Je to v podstatě technika, díky které váš kód selže, dokud nebudou vyřešeny všechny konkrétní požadavky. V zásadě následuje cyklus refaktorů pro kód, dokud nebudou všechny testy zelené.
- BDD: BDD úzce souvisí s TDD, ale je relevantnější z pohledu „zvenčí“, což ve skutečnosti znamená, že testy BDD jsou více svázány s obchodními / produktovými požadavky a definují požadované chování systému ve formě scénářů. TDD se naopak zabývá na granulárnější úrovni testů jednotek. Specifikace BDD jsou také obecně prostý anglický text, který je snadno srozumitelný a umožňuje větší spolupráci mezi všemi zúčastněnými stranami projektu.
- ATDD: Vývoj zaměřený na akceptační testy se zaměřuje více z hlediska přijetí uživatelem. Tyto testy také definují chování zákazníka, ale z hlediska integrace nebo konečného produktu, kde se konečný případ použití zákazníka převede na testovací scénář a veškerá vývojová práce je zaměřena na splnění těchto požadavků.
Otázka č. 3) Co obsahuje automaticky generovaný soubor pro funkci Specflow?
Odpovědět: Soubory Specflow s kódem na pozadí jsou automaticky generované soubory s příponou „.cs“. Tyto soubory mají logiku vazby od kroků po skutečnou definici kroku.
Několik bodů týkajících se automaticky generovaných souborů je:
- Tyto soubory by neměly být upravovány ani upravovány ručně. I když se o to pokusíte, změny se neuloží.
- Po každé změně souboru funkcí kompilátor znovu vygeneruje tento soubor, aby zachytil aktualizace.
Otázka č. 4) Jak se přistupuje ke krokovým vazbám šířeným do různých zdrojových souborů?
Odpovědět: Krokové vazební soubory lze znovu použít, i když existují v samostatných zdrojových souborech a párování vazeb probíhá prostřednictvím regexu.
Soubory krokových vazeb jsou v zásadě dílčími třídami, které přiděluje (Vazba) atribut. Tím je zajištěno, že všechny krokové vazby jsou k dispozici globálně a lze je použít s kroky scénáře v různých nebo stejných souborech funkcí.
Otázka č. 5) Jak lze vyřešit nejednoznačné implementace krokových vazeb?
Odpovědět: Specflow poskytuje mechanismus, jak se vyhnout nejednoznačné implementaci vazby Step pomocí konceptu s názvem Vázané odkazy.
To je užitečné ve scénářích, kde máte podobné kroky ve scénářích ve stejných nebo různých souborech funkcí a pokud chcete oba kroky zacházet odlišně.
V normálním scénáři, protože všechny krokové shody se dějí prostřednictvím Regexu a je to chamtivá shoda, budete muset zajistit, abyste pro kroky napsali mírně odlišný text (aby se neshodovaly se stejnou implementací), i když mají dopad čitelnost.
Pomocí Scoped Bindings můžete určit značky s konkrétní implementací vazby nebo celým souborem vazby a zajistit, aby shoda měla také další filtr kategorie.
Níže jsou uvedeny kroky, které je třeba dodržet:
na) Označte scénář kategorií pomocí syntaxe - @Štítek. Příklad: Níže uvedený scénář označujeme tagem - @scopedBinding
@scopedBinding Scenario: Youtube should search for the given keyword and should navigate to search results page Given I have navigated to youtube website And I have entered India as search keyword When I press the search button Then I should be navigate to search results page
b) Nyní použijte stejnou značku na krokové vazbě, která zajistí, že kromě shody regulárního výrazu proběhne také shoda tagu nebo kategorie (a zajistí, že další kroky nebudou odpovídat této implementaci, i když bude shoda regulárního výrazu úspěšná)
Ve výše uvedeném příkladu chceme nastavit rozsah vazby pro krok. ' A jako vyhledávací klíčové slovo jsem zadal Indii ”, Přidáme atribut Scope s parametrem Scoping jako značku.
(Given(@'I have entered (.*) as search keyword'), Scope(Tag ='scopedBinding')) public void GivenIHaveEnteredIndiaAsSearchKeyword(String searchString) { // step binding implementation }
Podobně jako u rozsahu pomocí značky je také možné mít rozsahované vazby s názvy funkcí a scénářů.
Otázka č. 6) Jak lze uložit testovací kontext při spuštění různých scénářů?
Odpovědět: Kontext testu lze uložit pomocí různých přístupů při provádění testů specflow a každý přístup má své klady a zápory.
- Používání ScenarioContext a FeatureContext: Představte si FeatureContext a ScenarioContext jako globální slovník párů klíč – hodnota a je přístupný během provádění funkcí, respektive provádění scénářů. Pole hodnot může ukládat jakýkoli typ Object a během načítání je třeba ho vložit do objektu podle potřeby.
- Použití polí ve vazebních souborech: Tento přístup umožňuje sdílet kontext napříč implementacemi vazeb ve stejných a / nebo různých souborech vazeb ve stejném oboru názvů. V udržování stavu pomocí proměnných třídy se to neliší a lze je podle potřeby nastavit nebo načíst napříč implementacemi vazeb.
- Pomocí vlastního DI rámce Specflow: Specflow poskytuje rámec pro vkládání kontextu a lze jej použít k předání kontextu ve formě tříd / objektů Simple POCO. Kontextové objekty / třídy lze vkládat prostřednictvím polí konstruktoru a lze je předávat podél různých souborů vazeb Step.
Podívejte se na příklad níže, který má 2 objekty injektované prostřednictvím injektoru konstruktoru.
(Binding) public class StepImplementationClass { private readonly Context1 _context1; private readonly Context2 _context2; public YoutubeSearchFeatureSteps(Context1 context1, Context2 context2) { _context1 = context1; _context2 = context2; } }
Otázka č. 7) Jaká jsou omezení Specflow nebo BDD obecně?
Odpovědět: BDD, jak název sám naznačuje, definuje chování s aplikací, která v podstatě převádí případy použití na testovací scénáře.
Proto absence zúčastněných stran, jako je podnik, produkt nebo zákazníci, může mít dopad na skutečné specifikace, pro které vývojáři implementují testy zápisu, a proto by to mohlo mít za následek neposkytnutí skutečné hodnoty, kterou by mohla poskytnout a měla všechny zúčastněné strany byly k dispozici při definování scénářů.
Řekl jsem, že profesionálové většinou překonávají nevýhody BDD a jsou opravdu velmi užitečnou technikou pro testování / ověřování specifikací. Jelikož je to víceméně jazykově agnostické, protože pro téměř všechny hlavní programovací jazyky, jako je Cucumber pro Javu, RSpec pro Ruby a Specflow pro .NET, jsou k dispozici rámce BDD.
Otázka č. 8) Co jsou transformace argumentů kroku?
nejlepší software pro vzdálenou plochu pro Windows
Odpovědět: Transformace argumentů, jak název napovídá, nejsou nic jiného než transformace kroku scénáře.
Přemýšlejte o tom jako o další vrstvě shody, ke které dojde dříve, než dojde ke skutečné vazbě krokové vazby, a může to být užitečné pro transformaci jiného druhu vstupu uživatele, než pro různé typy jednotlivých implementací kroků pro stejný typ vstupu.
U libovolného kroku transformace je požadovaný atribut StepArgumentTransformation
Příklad najdete v ukázce kódu níže:
Given I have entered 50 days into the timestamp to minute converter Given I have entered 1 day, 2 hours, 3 minutes into the timestamp to minute converter Given I have entered 1 day, 1 hour, 1 minute, 30 seconds into the timestamp to minute converter
S odkazem na ukázku kódu výše, všechny tři kroky souvisí. Pokud by to ale proběhlo obvyklou shodou regulárních výrazů, bylo by od vás požadováno, abyste napsali tři různé implementace kroků.
S transformacemi argumentů Step na místě je možné transformovat hodnoty a vytvořit a Časové razítko objekt ze zadaných parametrů a vrátit se zpět k původní implementaci kroku.
Podívejme se na implementaci transformace.
(StepArgumentTransformation(@'(?:(d*) day(?:s)?(?:, )?)?(?:(d*) hour(?:s)?(?:, )?)?(?:(d*) minute(?:s)?(?:, )?)?(?:(d*) second(?:s)?(?:, )?)?')) public TimeSpan convertToTimeSpan(String days, String hours, String minutes, String seconds) { // timestamp conversion logic }
Tady tedy transformujeme vstup scénáře na mezilehlou hodnotu (jako TimeStamp) a vracíme zpět transformovanou hodnotu do skutečné implementace vazby, jak je ukázáno v ukázce níže.
(Given(@'I have entered (.*) into the timestamp to minute converter')) public void GivenIHaveEnteredDaysIntoTheTimestampToMinuteConverter(TimeSpan tsTransformed) { // binding implementation }
Všimněte si, jak se transformovaná hodnota typu TimeSpan nyní vrací zpět na skutečnou metodu implementace vazby Step.
Otázka č. 9) Jaké jsou různé typy háčků poskytované Specflow?
Odpovědět:
Specflow poskytuje mnoho vlastních Hooků nebo speciálních událostí, s nimiž mohou být obslužné rutiny událostí (v podstatě metody / funkce) vázány k provedení nějaké logiky nastavení / odtržení.
Specflow poskytuje následující háčky:
- BeforeFeature / AfterFeature: Událost vyvolaná před a po spuštění funkce a dokončení provedení.
- BeforeScenario / AfterScenario: Událost vyvolaná před a po spuštění scénáře, respektive se dokončí.
- BeforeScenarioBlock / AfterScenarioBlock: Událost vyvolaná před a po bloku scénáře, tj. Když se spustí nebo dokončí některý z bloků scénáře patřících k položkám „Dáno“, „Kdy“ nebo „Potom“.
- BeforeStep / AfterStep: Událost vyvolaná před a po každém kroku scénáře.
- BeforeTestRun / AfterTestRun: Tato událost je vyvolána pouze jednou během celého provádění testu a jednou po dokončení provádění testu.
Je důležité si zde uvědomit, že tyto události jsou ve výchozím nastavení vyvolány a jsou zpracovávány právě tehdy, pokud pro tyto háčky existují vazby. Také není povinné implementovat tyto háčky ve dvojicích a každý hák může existovat nezávisle na sobě.
Otázka č. 10) Jak se ScenarioContext liší od FeatureContext?
Odpovědět: ScenarioContext a FeatureContext jsou statické třídy poskytované rozhraním Specflow a jsou opravdu užitečné pro provádění úkolů, jako je předávání informací mezi vazbami, získávání důležitých informací, jako je kontext spuštění funkce / scénáře atd.
Podívejme se, jak se oba liší:
Jak název napovídá, ScenarioContext poskytuje data nebo informace na úrovni provedení scénáře, zatímco FeatureContext se zabývá věcmi na úrovni funkcí.
Zjednodušeně řečeno, vše uložené v featureContext bude k dispozici pro všechny scénáře přítomné v daném souboru funkcí, zatímco ScenarioContext bude k dispozici pouze pro vazby, dokud neprobíhá provádění časového scénáře.
Otázka č. 11) Jak důležité je pořadí dané, kdy a potom?
Odpovědět: Specflow neukládá žádné omezení na pořadí Vzhledem k tomu, kdy a potom . Jde spíše o logické řazení testovacího scénáře a obecně o jakoukoli testovací praxi, tj. Stejně jako v testech jednotek se obvykle řídíme třemi písmeny A ' Uspořádat, jednat a prosadit “.
U scénářů specflow tedy neexistuje žádné omezení v objednávání a také nezavazuje, aby byly přítomny všechny tři oddíly.
Někdy může být nastavení minimalistické a nemusí být ani potřeba. Proto pro tyto scénáře můžete jednoduše přeskočit „ Dáno „Blokujte a spusťte scénář pomocí„ Když “Blok.
Otázka č. 12) Co jsou ScenarioInfo a FeatureInfo?
Odpovědět: SpecflowContext a FeatureContext dále poskytují vnořené statické třídy, jmenovitě ScenarioInfo a FeatureInfo.
ScenarioInfo poskytuje přístup k informacím o scénáři, který se právě provádí.
Některé z věcí, které můžete s touto třídou poznat, jsou uvedeny níže:
- Titul: Název scénáře. Syntax: ScenarioContext.Current.ScenarioInfo.Title
- Značky: Seznam značek ve formě Tětiva(). Syntax: ScenarioContext.Current.ScenarioInfo.Tags
S podobné ScenarioInfo, FeatureInfo také poskytuje informace týkající se aktuální funkce, která se právě provádí.
Kromě názvu a značek poskytuje také další užitečné věci, jako je cílový jazyk, pro který kód funkce na pozadí souboru generuje kód, podrobnosti jazyka, ve kterém je soubor funkce napsán atd.
Syntaxe pro získání hodnot pro FeatureInfo zůstává stejná jako ScenarioInfo, jak je uvedeno níže:
FeatureContext.Current.FeatureInfo
jak otevřít soubor .dat?
Otázka č. 13) Rozdíl mezi tabulkami Přehled scénářů a Specflow.
Odpovědět:
ScénářOutline je v podstatě způsob, jak provádět scénáře založené na datech pomocí Specflow, kde je v seznamu uveden seznam vstupů Příklady sekce ve scénáři a scénář se provede jednou v závislosti na počtu poskytnutých příkladů.
Podívejte se na ukázku kódu níže, abyste tomu porozuměli jasněji.
Scenario Outline: Youtube keyword search And I have entered as search keyword When I press the search button Then I should be navigate to search results page Examples: | searchTerm | | India | | America
Tabulky jsou jen prostředky k dodávání tabulkových dat s jakýmkoli krokem scénáře a jsou předávány jako argument tabulky Specflow v implementaci kroku, který lze podle potřeby později analyzovat na požadovaný typ objektu.
Další podrobnosti najdete v sekci „tučně“ níže v ukázce kódu:
Scenario: Pass data through Specflow tables for StudentInfo object Given I have entered following info for Student | FirstName | LastName | Age | YearOfBirth | | test | student | 20 | 1995 | When I press add Then i student should get added to database and entered info should be displayed on the screen
Podobně jako atribut Tags - můžete použít jakékoli informace poskytnuté ScenarioInfo k řízení toku provádění jakékoli implementace kroku.
Otázka č. 14) Controlling Test prováděný prostřednictvím ScenarioInfo.
Podobně jako u oborových vazeb, které umožňují přidání dalšího kritéria filtru při porovnávání definice kroku pomocí značek, můžete také využít řízení provádění testu prostřednictvím informací poskytnutých pomocí ScenarioInfo.
Například, Máte 2 scénáře se značkami, tj. @ Tag1 a @ tag2 a oba obsahují stejnou definici kroku. Nyní musíte přidat vlastní logiku v závislosti na značkách scénáře.
V implementaci definice kroku tedy můžete jednoduše získat všechny značky spojené se scénářem pomocí ScenarioContext.Current.ScenarioInfo.Tags a zkontrolujte přítomnost značky ve spouštěném scénáři a rozhodněte se, který kód chcete spustit.
Pro lepší pochopení si přečtěte ukázku kódu níže:
(When(@'I press add')) public void WhenIPressAdd() { String() tags = ScenarioContext.Current.ScenarioInfo.Tags; String expectedTag = 'tag1'; if(tags.Any(s => s == expectedTag)) { // do something } else { // do something else } }
Podobně jako atribut Tags - můžete použít jakékoli informace poskytnuté ScenarioInfo k řízení toku provádění jakékoli implementace kroku.
Otázka č. 15) Jak lze provést testy Specflow v nastavení typu nepřetržité integrace?
Odpovědět:
S moderními metodikami vývoje softwaru je nepřetržitá integrace jakýmsi módním slovem a je obecně označována jako sada postupů, kde každý závazek ke zdrojovému kódu je považován za kandidáta na produkční vydání.
Proto každé potvrzení v zásadě spouští různé typy testů jako brány kvality, aby bylo zajištěno, že prováděná změna nezpůsobí selhání nebo rozbití žádných testů.
Specflow - jak víme, velmi dobře se integruje do známých frameworků jako NUnit a MSUnit a lze jej snadno spustit pomocí konzolových aplikací těchto testovacích frameworků vzhledem k DLL kompilovaného projektu, který má Specflow funkce a implementace kroků.
Proto, aby bylo možné dosáhnout Specflow testů spuštěných jako součást nastavení nepřetržité integrace, je uveden seznam kroků na vysoké úrovni, které lze dodržovat:
# 1) Zkompilujte projekt obsahující funkci Specflow a definici kroku, abyste získali kompilovanou knihovnu DLL.
#dva) Nyní použijte běžce konzoly NUnit nebo MSUnit a poskytněte kompilovanou knihovnu DLL jako zdroj testu (tyto rámce poskytují další funkce a poskytují testovací filtry v závislosti na kategoriích atd.).
Tento krok lze integrovat do kanálu Continuous Integration a lze jej provést pomocí skriptu shell nebo DOS pomocí nástroje CI, jako je Jenkins nebo Bamboo atd.
# 3) Po dokončení provádění testu lze vygenerovanou výstupní zprávu (která je specifická pro použitého běžce konzoly) převést na čitelnější zprávu HTML pomocí Specrun spustitelný soubor je k dispozici jako součást NugetPackage.
Tento krok lze také provést prostřednictvím příkazového řádku, který je poskytován po vybalení ze všech hlavních rámců nepřetržité integrace.
# 4) Po dokončení výše uvedeného kroku jsme připraveni se zprávou o provedených testech a souhrnnými metrikami podrobností o provedení testu.
Doufáme, že se vám líbila celá řada výukových programů v této sérii školení Specflow. Tato řada výukových programů by byla skutečně nejlepším průvodcem pro každého začátečníka nebo zkušeného člověka, který chce obohatit své znalosti o Specflow!
Výukový program PREV NEBOVraťte se do PRVNÍ výuka
Doporučené čtení
- Dotazy a odpovědi na pohovor
- Spock Interview Otázky s odpověďmi (nejoblíbenější)
- Některé zajímavé otázky týkající se testování softwaru
- 20 nejoblíbenějších otázek a odpovědí na rozhovor s TestNG
- Top 30+ populárních otázek a odpovědí na rozhovor s okurkou
- Top 50 nejoblíbenějších dotazů a odpovědí na rozhovor s CCNA
- Top 40 populárních dotazů a odpovědí na rozhovor s J2EE, které byste si měli přečíst
- 25+ nejoblíbenějších dotazů a odpovědí na rozhovor s ADO.NET