top 15 popular specflow interview questions
Najčastejšie otázky a odpovede na rozhovor Specflow:
Náš predchádzajúci výukový program Specflow obsahuje informácie o Ako generovať protokoly o testoch a vykonávať selektívne testy .
V tomto tutoriáli sa pozrieme na najobľúbenejšie otázky týkajúce sa rozhovorov Specflow spolu s ich odpoveďami.
Prečítajte si Kompletná školiaca séria Specflow pre ľahké pochopenie konceptu. Specflow je nástroj podporujúci postupy BDD v rámci .NET. Je to open-source framework hostený na GitHub. Pomáha pri používaní ATDD (Acceptance Test Driver Development) pre .NET.
Najlepšie otázky a odpovede týkajúce sa rozhovoru Specflow
Nižšie sú uvedené najobľúbenejšie otázky týkajúce sa rozhovorov Specflow s odpoveďami a príkladmi pre vaše ľahké pochopenie.
Otázka č. 1) Aký je rozdiel medzi súborom funkcií a súbormi väzieb?
Odpoveď: Písanie testov BDD v Specflow má 2 hlavné komponenty, a to
- Súbory funkcií: Ktoré obsahujú testy napísané ako Scenáre v doménovom špecifickom jazyku (DSL) a sú to v podstate obyčajné anglické súbory, ktoré sú vhodné a zrozumiteľné pre všetky zainteresované strany projektu. V skutočnosti sú to skutočné testovacie súbory a sú interpretované prostredníctvom väzieb alebo definícií krokov.
- Krok väzby: Tieto súbory kódu sú skutočnou logikou inteligencie, ktorá stojí za vykonaním testu. Každý krok v scenári (ktorý je súčasťou súboru funkcií) sa viaže na súbor s definíciou kroku, ktorý sa skutočne vykoná pri spustení testu.
Preto kombinácia oboch súborov funkcií a definície kroku alebo väzieb umožňuje, aby testy spustil rámec Specflow (alebo akýkoľvek iný BDD).
Otázka 2) Čo je BDD a v čom sa líši od TDD alebo ATDD?
Odpoveď: Všetky tieto tri pojmy, tj. BDD, TDD a ATDD, do istej miery súvisia s vývojom riadeným testami všeobecne, ale v mnohých ohľadoch sú skutočne odlišné.
- TDD: TDD v podstate vytvára testy z pohľadu vývojára. Jednoducho povedané, je to sada testov, ktoré vývojár napíše, aby jeho kód vyhovel (alebo zlyhal). V zásade ide o techniku, ktorá umožňuje zlyhanie vášho kódu, kým nebudú splnené všetky špecifické požiadavky. V zásade nasleduje cyklus refaktora kódu, kým nebudú testy zelené.
- BDD: BDD úzko súvisí s TDD, ale je relevantnejšie z pohľadu „zvonka“, čo v skutočnosti znamená, že testy BDD sú viac spojené s požiadavkami podniku / produktu a definujú požadované správanie systému vo forme scenárov. TDD sa naopak zaoberá granulárnejšou úrovňou testov jednotiek. Špecifikácie BDD sú tiež obyčajným textom v anglickom jazyku, ktorý je ľahko pochopiteľný a umožňuje lepšiu spoluprácu medzi všetkými zainteresovanými stranami projektu.
- ATDD: Vývoj zameraný na testovanie prijatia sa zameriava skôr na akceptáciu používateľa. Tieto testy tiež definujú správanie zákazníka, ale z hľadiska integrácie alebo konečného produktu, keď sa konečný prípad použitia zákazníka prevedie na testovací scenár a všetka vývojová práca sa zameriava na splnenie týchto požiadaviek.
Otázka 3) Čo obsahuje automaticky generovaný súbor pre funkciu Specflow?
Odpoveď: Súbory Specflow na pozadí sú automaticky generované súbory s príponou „.cs“. Tieto súbory majú väzbovú logiku od krokov po skutočnú definíciu kroku.
Niekoľko bodov týkajúcich sa automaticky generovaných súborov je:
- Tieto súbory by sa nemali upravovať ani upravovať manuálne. Aj keď sa o to pokúsite, zmeny sa neuložia.
- Po každej zmene v súbore funkcií kompilátor znovu vygeneruje tento súbor, aby zachytil aktualizácie.
Otázka 4) Ako sa pristupuje k krokovým väzbám rozloženým do rôznych zdrojových súborov?
Odpoveď: Súbory krokovej väzby je možné znova použiť, aj keď existujú v samostatných zdrojových súboroch a párovanie väzieb sa deje pomocou regulárneho výrazu.
Súbory krokových väzieb sú v podstate čiastkové triedy pripisované (Viazanie) atribút. To zaisťuje, že všetky krokové väzby sú dostupné globálne a dajú sa použiť s krokmi scenára v rôznych alebo rovnakých súboroch funkcií.
Otázka č. 5) Ako je možné vyriešiť nejednoznačné implementácie krokových väzieb?
Odpoveď: Specflow poskytuje mechanizmus na zabránenie nejednoznačnej implementácii väzby Step pomocou konceptu s názvom Viazania s rozsahom.
Je to užitočné v scenároch, kde máte podobné kroky v scenároch v rovnakých alebo rôznych súboroch funkcií a ak chcete s oboma krokmi zaobchádzať odlišne.
V normálnom scenári, keď sa všetky kroky zhodujú prostredníctvom Regexu a je to nenásytná zhoda, budete musieť pre kroky napísať trochu odlišný text (aby sa nezhodovali s rovnakou implementáciou), aj keď majú dopad čitateľnosť.
Pomocou Scoped Bindings môžete určiť značky s konkrétnou implementáciou väzby alebo celým súborom väzby a zabezpečiť, aby mala zhoda tiež ďalší filter kategórie.
Kroky, ktoré je potrebné dodržať, sú uvedené nižšie:
do) Označte scenár kategóriou pomocou syntaxe - @Tag. Príklad: Nasledujúci scenár označujeme značkou - @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) Teraz použite tú istú značku na krokovej väzbe, ktorá zabezpečí, že okrem zhody s regulárnym výrazom dôjde aj k zhode s tagom alebo kategóriou (a zaistí, aby ďalšie kroky nezodpovedali tejto implementácii, aj keď je zhoda s regulárnym výrazom úspešná).
zoznam falošných e-mailových adries, ktoré sa majú použiť
Vo vyššie uvedenom príklade chceme obmedziť rozsah väzby pre daný krok. „ A ako hľadané kľúčové slovo som zadal Indiu ”, Pridáme atribút Scope s parametrom Scoping ako značku.
(Given(@'I have entered (.*) as search keyword'), Scope(Tag ='scopedBinding')) public void GivenIHaveEnteredIndiaAsSearchKeyword(String searchString) { // step binding implementation }
Podobne ako pri škálovaní pomocou značky je tiež možné mať škálované väzby s názvami funkcií a scenárov.
Otázka č. 6) Ako je možné uložiť testovací kontext pri spustení rôznych scenárov?
Odpoveď: Kontext testu je možné ukladať pomocou rôznych prístupov pri vykonávaní testov specflow a každý prístup má svoje klady a zápory.
- Používanie ScenarioContext a FeatureContext: Predstavte si FeatureContext a ScenarioContext ako globálny slovník párov kľúč - hodnota a je prístupný počas vykonávania funkcií, respektíve vykonávania scenárov. Do hodnotového poľa je možné uložiť akýkoľvek typ objektu a počas vyhľadávania je potrebné ho do objektu vrhnúť podľa želania.
- Použitie polí vo väzbových súboroch: Tento prístup umožňuje zdieľať kontext medzi implementáciami väzieb v rovnakých a / alebo rôznych súboroch väzieb v rovnakom mennom priestore. Nie je to iné v udržiavaní stavu pomocou premenných triedy a dá sa podľa potreby nastaviť alebo načítať cez implementácie väzieb.
- Používanie vlastného DI rámca Specflow: Specflow poskytuje rámec na vkladanie kontextu a je možné ho použiť na odovzdávanie kontextu vo forme jednoduchých tried / objektov POCO. Kontextové objekty / triedy je možné vkladať cez polia konštruktora a môžu sa prenášať pozdĺž rôznych súborov väzby Step.
Pozrite si príklad nižšie, ktorý má 2 objekty vstreknuté prostredníctvom vstreknutia konštruktora.
(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) Aké sú obmedzenia Specflow alebo BDD všeobecne?
Odpoveď: BDD, ako už z názvu vyplýva, definuje správanie sa aplikácie, ktorá v podstate prevádza prípady použitia na testovacie scenáre.
Preto absencia zainteresovaných strán, ako je podnik, produkt a / alebo zákazníci, môže mať vplyv na skutočné špecifikácie, pre ktoré vývojári implementujú testy zápisu, a preto môže viesť k neposkytnutiu skutočnej hodnoty, ktorú by mohla poskytnúť a mala všetky zainteresované strany. boli k dispozícii pri definovaní scenárov.
Už som povedal, že profesionáli väčšinou prekonávajú nevýhody BDD a sú skutočne veľmi užitočnou technikou na testovanie / overovanie špecifikácií. Pretože je to viac-menej jazykovo agnostické, pretože pre takmer všetky hlavné programovacie jazyky, ako sú Cucumber pre Javu, RSpec pre Ruby a Specflow pre .NET, sú k dispozícii rámce BDD.
Otázka 8) Čo sú transformácie argumentov kroku?
Odpoveď: Transformácia argumentov, ako už z názvu vyplýva, nie je nič iné ako transformácia kroku scenára.
Predstavte si to ako ďalšiu vrstvu zhody, ktorá sa stane skôr, ako dôjde k skutočnej väzbe krokovej väzby, a môže to byť užitočné skôr pre transformáciu iného druhu vstupu používateľa, ako pre rôzne implementácie jednotlivých krokov pre rovnaký typ vstupu.
Pre každý krok transformácie je požadovaný atribút StepArgumentTransformation
Napríklad si pozrite nasledujúcu ukážku kódu:
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
Pokiaľ ide o vyššie uvedenú ukážku kódu, všetky tri kroky súvisia. Ak by to však prešlo obvyklým porovnávaním regexu, potom by sa od vás vyžadovalo, aby ste napísali tri rôzne implementácie krokov.
Po uskutočnení transformácie argumentov Step je možné transformovať hodnoty a vytvoriť a Časová značka objekt zo zadaných parametrov a vrátiť sa späť k pôvodnej implementácii kroku.
Pozrime sa na implementáciu transformácie.
(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 }
Teda tu transformujeme vstup scenára na strednú hodnotu (napríklad TimeStamp) a vraciame späť transformovanú hodnotu do skutočnej implementácie väzby, ako je uvedené v ukážke nižšie.
(Given(@'I have entered (.*) into the timestamp to minute converter')) public void GivenIHaveEnteredDaysIntoTheTimestampToMinuteConverter(TimeSpan tsTransformed) { // binding implementation }
Všimnite si, ako sa transformovaná hodnota typu TimeSpan teraz vracia späť k skutočnej metóde implementácie väzby Step.
Otázka č. 9) Aké sú rôzne typy háčikov poskytované spoločnosťou Specflow?
Odpoveď:
Specflow poskytuje veľa vlastných hákov alebo špeciálnych udalostí, s ktorými môžu byť obslužné rutiny udalostí (v podstate metódy / funkcie) viazané na vykonanie určitej logiky nastavenia / odtrhnutia.
Specflow poskytuje nasledujúce háčiky:
- Funkcia BeforeFeature / AfterFeature: Udalosť vyvolaná pred a po spustení funkcie a dokončená v uvedenom poradí.
- BeforeScenario / AfterScenario: Udalosť vyvolaná pred a po spustení a spustení scenára.
- BeforeScenarioBlock / AfterScenarioBlock: Udalosť vyvolaná pred a za blokom scenára, t. J. Keď sa spustí alebo dokončí niektorý z blokov scenára patriacich do kategórie „Dané“, „Kedy“ alebo „Potom“.
- BeforeStep / AfterStep: Udalosť vyvolaná pred a po každom kroku scenára.
- BeforeTestRun / AfterTestRun: Táto udalosť je vyvolaná iba raz počas celého vykonania testu a raz po dokončení vykonania testu.
Tu je dôležité poznamenať, že tieto udalosti sú predvolene vyvolané a sú spracovávané, len ak sú pre tieto háčiky k dispozícii väzby. Taktiež nie je povinné implementovať tieto háky vo dvojiciach a každý háčik môže existovať nezávisle na sebe.
Otázka č. 10) Ako sa líši ScenarioContext od FeatureContext?
Odpoveď: ScenarioContext aj FeatureContext sú statické triedy poskytované rozhraním Specflow a sú skutočne užitočné na vykonávanie úloh, ako je odovzdávanie informácií medzi väzbami, získavanie dôležitých informácií, ako je kontext vykonania funkcie / scenára atď.
Pozrime sa, ako sa obe líšia:
Ako naznačuje názov, ScenarioContext poskytuje údaje alebo informácie na úrovni vykonávania scenára, zatiaľ čo FeatureContext sa zaoberá vecami na úrovni funkcií.
Zjednodušene povedané, čokoľvek uložené v featureContext bude k dispozícii pre všetky scenáre prítomné v danom súbore funkcií, zatiaľ čo ScenarioContext bude k dispozícii iba pre väzby, kým neprebieha vykonávanie časového scenára.
Otázka č. 11) Aké dôležité je poradie, kedy a kedy?
Odpoveď: Specflow neukladá žiadne obmedzenie poradia Dané, kedy a potom . Ide skôr o logické radenie testovacieho scenára a všeobecne o akúkoľvek testovaciu prax, t. J. Podobne ako v testoch jednotiek sa zvyčajne riadime tromi A „ Usporiadať, konať a tvrdiť “.
Pre scenáre specflow teda neexistuje žiadne obmedzenie pri objednávaní a tiež to nevyžaduje, aby boli prítomné všetky tri časti.
Niekedy môže byť nastavenie minimalistické a nemusí byť ani potrebné. Preto pre tieto scenáre môžete jednoducho preskočiť „ Dané „Blokujte a začnite scenár s„ Kedy ”Blok.
Otázka č. 12) Čo sú ScenarioInfo a FeatureInfo?
Odpoveď: SpecflowContext a FeatureContext ďalej poskytujú vnorené statické triedy, a to ScenarioInfo a FeatureInfo.
ScenarioInfo poskytuje prístup k informáciám o scenári, ktorý sa práve vykonáva.
Niektoré z vecí, ktoré môžete s touto triedou spoznať, sú uvedené nižšie:
- Názov: Názov scenára. Syntax: ScenarioContext.Current.ScenarioInfo.Title
- Značky: Zoznam značiek vo forme Reťazec (). Syntax: ScenarioContext.Current.ScenarioInfo.Tags
S podobné ScenarioInfo, FeatureInfo tiež poskytuje informácie týkajúce sa aktuálnej funkcie, ktorá sa práve vykonáva.
Okrem nadpisu a značiek poskytuje aj ďalšie užitočné veci, ako je cieľový jazyk, pre ktorý kód funkcie na pozadí súboru generuje kód, podrobnosti o jazyku, v ktorom je súbor funkcií napísaný, atď.
Syntax na získanie hodnôt pre FeatureInfo zostáva rovnaká ako ScenarioInfo, ako je uvedené nižšie:
FeatureContext.Current.FeatureInfo
Otázka č. 13) Rozdiel medzi tabuľkami Outline a Specflow.
Odpoveď:
ScenárOutline je v zásade spôsob, ako vykonať scenáre založené na dátach pomocou aplikácie Specflow, kde je zoznam vstupov uvedený v Príklady časť v scenári a scenár sa vykoná každý raz v závislosti od počtu poskytnutých príkladov.
Nižšie nájdete ukážku kódu, aby ste tomu porozumeli jasnejšie.
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
Tabuľky sú iba prostriedkom na dodanie tabuľkových údajov s akýmkoľvek krokom scenára a v implementácii kroku sa odovzdávajú ako argument tabuľky Specflow, ktorý je možné podľa potreby neskôr analyzovať na požadovaný typ objektu.
Viac podrobností nájdete v časti „Tučné“ vo vzorke kódu nižšie:
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
Podobne ako atribút Značky - na riadenie toku vykonávania akejkoľvek krokovej implementácie môžete použiť akékoľvek informácie poskytnuté pomocou ScenarioInfo.
Otázka č. 14) Kontroluje sa vykonávanie testu prostredníctvom nástroja ScenarioInfo.
Podobne ako väzby rozsahu, ktoré umožňujú pridať ďalšie kritérium filtra pri porovnávaní definície kroku pomocou značiek, môžete tiež využiť riadenie vykonávania testu prostredníctvom informácií poskytnutých pomocou ScenarioInfo.
Napríklad, Máte 2 scenáre so značkami, tj. @ Tag1 a @ tag2 a oba obsahujú rovnakú definíciu kroku. Teraz musíte pridať vlastnú logiku v závislosti od značiek scenára.
V implementácii definície kroku teda môžete jednoducho získať všetky značky spojené s používaním scenára ScenarioContext.Current.ScenarioInfo.Tags a skontrolujte prítomnosť značky v vykonávanom scenári a rozhodnite sa, ktorý kód chcete vykonať.
Pre lepšie pochopenie si pozrite nižšie uvedenú ukážku kódu:
(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 } }
Podobne ako atribút Značky - na riadenie toku vykonávania akejkoľvek krokovej implementácie môžete použiť akékoľvek informácie poskytnuté pomocou ScenarioInfo.
Otázka č. 15) Ako je možné vykonať testy Specflow v nastaveniach typu kontinuálnej integrácie?
Odpoveď:
S modernými metodikami vývoja softvéru je kontinuálna integrácia akýmsi módnym slovom a všeobecne sa označuje ako sada postupov, pri ktorých sa každé odovzdanie zdrojového kódu považuje za kandidáta na produkčné vydanie.
Preto každé potvrdenie v podstate spúšťa rôzne typy testov ako brány kvality, aby sa zabezpečilo, že vykonaná zmena nespôsobí zlyhanie alebo zlomenie akýchkoľvek testov.
Specflow - ako vieme, veľmi dobre sa integruje do známych rámcov ako NUnit a MSUnit a dá sa ľahko spustiť cez konzolové aplikácie týchto testovacích rámcov vzhľadom na DLL kompilovaného projektu, ktorý má funkcie Specflow a krokové implementácie.
Preto, aby sme dosiahli testy Specflow prebiehajúce ako súčasť nastavenia nepretržitej integrácie, je uvedený zoznam krokov na vysokej úrovni, ktoré je možné dodržať:
# 1) Zostavte projekt obsahujúci funkciu Specflow a definíciu kroku, aby ste získali kompilovanú DLL.
#dva) Teraz použite bežce konzoly NUnit alebo MSUnit a ako zdroj testu poskytnite skompilovanú DLL (Tieto rámce poskytujú ďalšie možnosti a poskytujú testovacie filtre v závislosti od kategórií atď.).
Tento krok môže byť integrovaný do kanálu Continuous Integration a môže byť vykonaný prostredníctvom shellu alebo DOS skriptu s nástrojom CI ako Jenkins alebo Bamboo atď.
# 3) Po dokončení vykonania testu možno vygenerovanú výstupnú správu (ktorá je špecifická pre použitého bežca konzoly) previesť na čitateľnejšiu správu HTML pomocou Specrun spustiteľný súbor je k dispozícii ako súčasť balíka NugetPackage.
Tento krok je možné vykonať aj prostredníctvom príkazového riadku, ktorý je poskytovaný po vybalení z krabice všetkými hlavnými rámcami nepretržitej integrácie.
# 4) Po dokončení vyššie uvedeného kroku sme pripravení na správu o vykonaných testoch a súhrnné metriky podrobností o vykonaní testu.
Dúfame, že sa vám páčila celá škála tutoriálov v tejto sérii školení Specflow. Táto séria tutoriálov by bola skutočne najlepším sprievodcom pre každého začiatočníka alebo skúseného človeka, ktorý chce obohatiť svoje vedomosti o Specflow!
Výukový program PREV ALEBOVráťte sa do PRVÝ výukový program
Odporúčané čítanie
- Dotazy a odpovede na pohovor
- Spock Interview Otázky s odpoveďami (najobľúbenejšie)
- Niektoré zaujímavé otázky týkajúce sa testovania softvéru
- 20 najpopulárnejších otázok a odpovedí na pohovory s TestNG
- Top 30+ populárnych otázok a odpovedí na rozhovor s uhorkou
- Top 50 najpopulárnejších otázok a odpovedí na rozhovory s CCNA
- Top 40 populárnych otázok a odpovedí na rozhovory s J2EE, ktoré by ste si mali prečítať
- 25+ najobľúbenejších otázok a odpovedí na rozhovory s ADO.NET