top 15 popular specflow interview questions
Najpogostejša vprašanja in odgovori za intervju za Specflow:
V našem predhodnem vadnici Specflow smo na kratko predstavili Kako ustvariti poročila o preizkusih in izvesti selektivne teste .
V tej vadnici si bomo ogledali najbolj priljubljena vprašanja o intervjuju Specflow skupaj z njihovimi odgovori.
Preberite Popolna serija usposabljanja Specflow za lažje razumevanje koncepta. Specflow je orodje, ki podpira prakse BDD v okolju .NET. Gre za odprtokodni okvir, ki ga gosti GitHub. Pomaga pri uporabi ATDD (Acceptance Test Driver Development) za .NET.
Najboljša vprašanja in odgovori za intervju za Specflow
Spodaj so navedena najbolj priljubljena vprašanja o intervjuju z odgovori in primeri za lažje razumevanje.
Q # 1) Kakšna je razlika med funkcijsko in veznimi datotekami?
Odgovor: Pisanje BDD testov v Specflow ima dve glavni komponenti, in sicer
- Datoteke: Ki vsebujejo teste, napisane kot scenariji v jeziku, določenem z domeno (DSL), in so v bistvu navadne angleške datoteke, ki so primerne in razumljive za vse zainteresirane strani v projektu. V resnici so dejanske preskusne datoteke in se razlagajo z vezmi ali definicijami korakov.
- Stopniške vezi: Te kodne datoteke so dejanska inteligenčna logika za izvajanje testa. Vsak korak v scenariju (ki je del datoteke funkcije) se veže na datoteko definicije koraka, ki se dejansko izvede med izvajanjem testa.
Kombinacija datotek s funkcijami in definicije ali vezave koraka omogoča, da preizkus izvaja ogrodje Specflow (ali kateri koli drug BDD).
V # 2) Kaj je BDD in kako se razlikuje od TDD ali ATDD?
Odgovor: Vsi ti trije izrazi, tj. BDD, TDD in ATDD, so sicer nekoliko povezani s testnim razvojem na splošno, vendar se v resnici v marsičem razlikujejo
- TDD: TDD v osnovi ustvarja teste z vidika razvijalca. Z enostavnimi besedami gre za niz testov, ki jih razvijalec napiše, da njegova koda preide (ali ne). V bistvu gre za tehniko, s katero lahko vaša koda odpove, dokler se ne obravnavajo vse posebne zahteve. V bistvu sledi ciklu refaktorja kode, dokler preskusi ne postanejo zeleni.
- BDD: BDD je tesno povezan z TDD, vendar je bolj pomemben z vidika 'od zunaj', kar dejansko pomeni, da so testi BDD bolj povezani z zahtevami poslovanja / izdelka in opredeljujejo želeno vedenje sistema v obliki scenarijev. TDD v nasprotju s tem deluje na bolj zrnati ravni testov enot. Specifikacije BDD so navadno navadno angleško besedilo, ki je enostavno razumljivo in omogoča večje sodelovanje med vsemi zainteresiranimi stranmi v projektu.
- ATDD: Osredotočenost na sprejemni testni razvoj je bolj z vidika uporabnikovega sprejemanja. Ti testi določajo tudi vedenje kupcev, vendar z vidika integracije ali končnega izdelka, kjer se končni uporabnikov primer pretvori v testni scenarij in je vse razvojno delo usmerjeno v izpolnitev teh zahtev.
V # 3) Kaj vsebuje samodejno ustvarjena datoteka za funkcijo Specflow?
Odgovor: Datoteke s kodo specflow so samodejno ustvarjene datoteke s pripono .cs. Te datoteke imajo logiko vezave od korakov do dejanske definicije koraka.
Nekaj točk glede samodejno ustvarjenih datotek je:
- Teh datotek ne smete spreminjati ali urejati ročno. Tudi če poskusite to storiti, se spremembe ne shranijo.
- Po vsaki spremembi v datoteki lastnosti prevajalnik ponovno ustvari to datoteko, da zajame posodobitve.
V # 4) Kako se dostopa do vezanih korakov, razpršenih po različnih izvornih datotekah?
Odgovor: Datoteke koračne vezave je mogoče ponovno uporabiti, tudi če obstajajo v ločenih izvornih datotekah, ujemanje vezi pa se izvede prek regularnega izraza.
Datoteke vezav korakov so v bistvu delni razredi, ki jih pripisuje [Vezava] atribut. To zagotavlja, da so vse vezave korakov na voljo po vsem svetu in jih je mogoče uporabiti skupaj s scenariji korakov v različnih ali enakih datotekah funkcij.
V # 5) Kako je mogoče razrešiti dvoumne izvedbe vezave korakov?
Odgovor: Specflow ponuja mehanizem za preprečevanje dvoumne izvedbe vezave korakov z uporabo koncepta imenovanega Povezave z obsegom.
To je uporabno v scenarijih, kjer imate podobne korake v scenarijih v enakih ali različnih datotekah funkcij in če želite oba koraka obravnavati drugače.
V običajnem scenariju, saj se vsa ujemanja korakov dogajajo prek regularnega izraza in gre za pohlepno ujemanje, boste morali zagotoviti, da za korake napišete nekoliko drugačno besedilo (tako da se ne ujemajo z enako izvedbo), čeprav vplivajo berljivost.
Z uporabo Scoped Bindings lahko določite oznake z določeno izvedbo vezave ali celotno datoteko vezave in zagotovite, da ima ujemanje tudi dodaten filter kategorije.
Koraki, ki jih je treba upoštevati, so navedeni spodaj:
do) Označi scenarij s kategorijo z uporabo sintakse - @Oznaka. Primer: Spodnji scenarij označujemo z oznako - @scopedBinding
kako pretvoriti YouTube video posnetke v wav datoteke
@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) Zdaj uporabite isto oznako na vezavi korakov, ki bo zagotovila, da bo poleg ujemanja regularnega izraza potekalo tudi ujemanje oznake ali kategorije (in zagotavlja, da se drugi koraki ne ujemajo s to izvedbo, tudi če je ujemanje regularnega izraza uspešno)
V zgornjem primeru želimo obseg vezati za korak. “ In kot ključno besedo za iskanje sem vnesel Indijo ”, Dodali bomo atribut Scope s parametrom Scoping kot oznako.
[Given(@'I have entered (.*) as search keyword'), Scope(Tag ='scopedBinding')] public void GivenIHaveEnteredIndiaAsSearchKeyword(String searchString) { // step binding implementation }
Podobno kot pri določanju obsega z oznako je tudi pri naslovih Feature in Scenario možno imeti vezave z obsegom.
V # 6) Kako lahko testni kontekst shranite med izvajanjem različnih scenarijev?
Odgovor: Testni kontekst je mogoče med izvajanjem testov specflow shraniti z različnimi pristopi, vsak pristop pa ima svoje prednosti in slabosti.
- Uporaba ScenarioContext in FeatureContext: FeatureContext in ScenarioContext si predstavljajte kot globalni slovar parov ključ / vrednost in je dostopen med izvajanjem funkcije oziroma pri izvajanju scenarija. V polje vrednosti lahko shranite katero koli vrsto predmeta in med iskanjem ga je treba po želji oddati v objekt.
- Uporaba polj v vezavnih datotekah: Ta pristop omogoča skupno rabo konteksta med izvedbami vezave v isti in / ali različnih datotekah vezav v istem imenskem prostoru. Nič drugače ni pri vzdrževanju stanja z uporabo spremenljivk razreda in ga je mogoče nastaviti ali pridobiti v izvedbah vezave, kot je potrebno.
- Uporaba lastnega DI okvira Specflow: Specflow zagotavlja okvir za vbrizgavanje konteksta in se lahko uporablja za posredovanje konteksta v obliki razredov / predmetov Simple POCO. Objekte / razrede konteksta je mogoče vbrizgati skozi polja konstruktorjev in jih lahko posredujete različnim datotekam, ki vežejo korak.
Glejte spodnji primer z vbrizgavanjem dveh predmetov z vbrizgom konstruktorja.
vrste testnih primerov pri testiranju programske opreme
[Binding] public class StepImplementationClass { private readonly Context1 _context1; private readonly Context2 _context2; public YoutubeSearchFeatureSteps(Context1 context1, Context2 context2) { _context1 = context1; _context2 = context2; } }
V # 7) Kakšne so omejitve Specflowa ali BDD na splošno?
Odgovor: BDD, kot že ime pove, definira vedenje aplikacije, ki v bistvu pretvarja primere uporabe v testne scenarije.
Zato lahko odsotnost zainteresiranih strani, kot je podjetje, izdelek in / ali stranke, vpliva na dejanske specifikacije, za katere bodo razvijalci izvajali preizkuse pisanja, zato lahko dejansko ne zagotavlja vrednosti, ki bi jo lahko zagotovili in bi imeli vse zainteresirane strani. so bili na voljo med definiranjem scenarijev.
Če rečem, da večina profesionalcev prelisiči slabosti BDD in je res zelo koristna tehnika za preizkušanje / potrjevanje specifikacij. Ker je bolj ali manj jezikovno agnostičen, saj so okviri BDD na voljo za skoraj vse večje programske jezike, kot so Cucumber za Javo, RSpec za Ruby in Specflow za .NET.
V # 8) Kaj so preobrazbe v korakih?
Odgovor: Argumentne transformacije, kot že ime pove, niso nič drugega kot preoblikovanje koraka scenarija.
Pomislite na to kot na dodatno plast ujemanja, ki se zgodi, preden se zgodi dejansko ujemanje korakov, in je lahko koristna za pretvorbo drugačne vrste uporabniškega vnosa, namesto da bi imeli različne izvedbe posameznih korakov za isto vrsto vnosa.
Za kateri koli korak preoblikovanja je zahtevani atribut StepArgumentTransformation
Za primer glejte spodnji vzorec kode:
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
Glede na zgornji vzorec kode so vsi trije koraki povezani. Če pa bi šlo skozi običajno ujemanje regularnih izrazov, bi morali napisati tri različne izvedbe korakov.
Ko so na mestu pretvorbe argumentov Step, je mogoče vrednosti pretvoriti in ustvariti a Časovni žig predmeta iz podanih parametrov in se vrnite nazaj k prvotni izvedbi koraka.
Poglejmo izvedbo preobrazbe.
[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 }
Tako tu pretvorimo vhod scenarija v vmesno vrednost (na primer TimeStamp) in vrnemo transformirano vrednost v dejansko izvedbo vezave, kot je prikazano v spodnjem vzorcu.
[Given(@'I have entered (.*) into the timestamp to minute converter')] public void GivenIHaveEnteredDaysIntoTheTimestampToMinuteConverter(TimeSpan tsTransformed) { // binding implementation }
Upoštevajte, kako se preoblikovana vrednost tipa TimeSpan zdaj vrne nazaj na dejansko izvedbeno metodo vezave korakov.
V # 9) Katere vrste kavljev ponuja Specflow?
Odgovor:
Specflow ponuja veliko trnkov po meri ali posebnih dogodkov, s katerimi je mogoče obdelovalce dogodkov (v bistvu metode / funkcije) vezati na izvajanje neke logike nastavitve / odstranitve.
Specflow ponuja naslednje kljuke:
- BeforeFeature / AfterFeature: Dogodek, ki se sproži pred in po tem, ko se funkcija začne in dokonča.
- BeforeScenario / AfterScenario: Dogodek, sprožen pred izvedbo scenarija in po njej, se začne in konča.
- BeforeScenarioBlock / AfterScenarioBlock: Dogodek, ki se sproži pred in po scenariju Block, tj. Ko se kateri koli od scenarijev blokira, ki pripada 'Dano', 'Kdaj' ali 'Potem' se začne ali zaključi.
- Pred korakom / po koraku: Dogodek, sprožen pred in po vsakem koraku scenarija.
- BeforeTestRun / AfterTestRun: Ta dogodek se sproži samo enkrat med celotnim izvajanjem preizkusa in enkrat po zaključku preizkusa.
Tu je pomembno opozoriti, da se ti dogodki privzeto sprožijo in se obravnavajo, če in le, če so za te kljuke predvidene vezi. Prav tako ni obvezno izvajati teh kljuk v parih in vsak kavelj lahko obstaja neodvisno drug od drugega.
V # 10) V čem se ScenarioContext razlikuje od FeatureContext?
Odgovor: Tako ScenarioContext kot FeatureContext sta statična razreda, ki jih zagotavlja ogrodje Specflow in sta zelo koristna za izvajanje nalog, kot je posredovanje informacij med vezmi, pridobivanje pomembnih informacij, kot je kontekst izvedbe funkcije / scenarija itd.
Poglejmo, kako se oba razlikujeta:
Kot že ime pove, ScenarioContext zagotavlja podatke ali informacije na ravni izvajanja Scenario, medtem ko FeatureContext obravnava stvari na ravni funkcije.
Poenostavljeno povedano, vse, kar je shranjeno v featureContext, bo na voljo vsem scenarijem, ki so prisotni v tej datoteki funkcije, medtem ko bo ScenarioContext na voljo le za vezave do začetka izvajanja časovnega scenarija.
V # 11) Kako pomemben je vrstni red danih, kdaj in potem?
Odgovor: Specflow ne nalaga nobenih omejitev glede vrstnega reda Glede na to, kdaj in potem . Gre bolj za logično zaporedje preskusnega scenarija in kakršno koli preskusno prakso na splošno, tj. Tako kot pri enostavnih preskusih običajno upoštevamo tri A ' Uredite, ukrepajte in uveljavite '.
Torej za scenarije specflowa ni nobenih omejitev za naročanje in tudi ne zahteva, da morajo biti prisotni vsi trije razdelki.
Pogosto je nastavitev lahko minimalistična in morda niti ne bo potrebna. Zato lahko v teh scenarijih preprosto preskočite Glede na to ”Blokirajte in zaženite scenarij z Kdaj ”Blok.
V # 12) Kaj sta ScenarioInfo in FeatureInfo?
Odgovor: SpecflowContext in FeatureContext nadalje zagotavljata ugnezdena statična razreda, in sicer ScenarioInfo in FeatureInfo.
ScenarioInfo omogoča dostop do informacij o scenariju, ki se trenutno izvaja.
Nekaj stvari, ki jih lahko spoznate s tem tečajem, je navedenih spodaj:
- Naslov: Naslov scenarija. Sintaksa: ScenarioContext.Current.ScenarioInfo.Title
- Oznake: Seznam oznak v obliki Vrvica[]. Sintaksa: ScenarioContext.Current.ScenarioInfo.Tags
S imilar do ScenarioInfo, FeatureInfo ponuja tudi informacije o trenutni funkciji, ki se trenutno izvaja.
Poleg naslova in oznak ponuja tudi druge uporabne stvari, kot je ciljni jezik, za katerega koda funkcije, za katero datoteka ustvarja kodo, podrobnosti o jeziku, v kateri je napisana datoteka itd.
Sintaksa za pridobitev vrednosti za FeatureInfo ostaja enaka kot ScenarioInfo kot spodaj:
FeatureContext.Current.FeatureInfo
V # 13) Razlika med tabelami orisa scenarija in spektralnega toka.
Odgovor:
ScenarijOris je v bistvu način za izvajanje podatkovno vodenih scenarijev z uporabo Specflow, kjer je seznam vhodov na voljo v Primeri v scenariju, scenarij pa se izvede enkrat, odvisno od števila predloženih primerov.
je omrežni ključ enako geslu
Glejte vzorec kode spodaj, da jo jasneje razumete.
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
Tabele so samo sredstvo za dobavo tabelarnih podatkov s katerim koli korakom Scenarija in se posredujejo kot argument tabele Specflow v izvedbi koraka, ki ga je mogoče pozneje razčleniti na želeno vrsto predmeta.
Za več podrobnosti glejte razdelek 'krepko' v spodnjem vzorčnem kodu:
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
Podobno kot atribut Oznake - lahko uporabite vse informacije, ki jih ponuja ScenarioInfo, za nadzor poteka izvajanja katerega koli koraka.
V # 14) Nadzor preizkusa, ki se izvaja prek ScenarioInfo.
Podobno kot pri vezavah obsega, ki lahko dovolijo dodajanje dodatnega merila filtra med ujemanjem definicije koraka prek oznak, lahko tudi izkoristite nadzor nad izvajanjem testa s pomočjo informacij, ki jih vsebuje ScenarioInfo.
Na primer, Imate 2 scenarija z oznakama, tj. @ Tag1 in @ tag2, oba pa vsebujeta isto definicijo koraka. Zdaj morate dodati logiko po meri, odvisno od oznak scenarija.
Tako lahko v izvedbi definicije koraka preprosto dobite vse oznake, povezane s scenarijem ScenarioContext.Current.ScenarioInfo.Tags in preverite prisotnost oznake v scenariju, ki se izvaja, in se odločite, katero kodo želite izvesti.
Za boljše razumevanje glejte spodnji vzorec kode:
[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 } }
Podobno kot atribut Oznake - lahko uporabite vse informacije, ki jih ponuja ScenarioInfo, za nadzor poteka izvajanja katerega koli koraka.
V # 15) Kako je mogoče izvajati teste Specflow pri stalni integraciji?
Odgovor:
S sodobnimi metodologijami za razvoj programske opreme je nenehna integracija nekakšna modna beseda in se na splošno imenuje skupek praks, kjer se vsaka predanost izvorni kodi šteje za kandidata za produkcijsko izdajo.
Zato vsak prevzem v bistvu sproži različne vrste preskusov kot vrata kakovosti, s čimer zagotovi, da sprejeta sprememba ne povzroči, da kateri koli preskusi propadejo ali se zlomijo.
Specflow - kot vemo, se zelo dobro integrira z znanimi ogrodji, kot sta NUnit in MSUnit, in ga je mogoče enostavno zagnati prek konzolnih aplikacij teh preskusnih okvirov glede na DLL prevedenega projekta, ki ima funkcije Specflow in izvedbe korakov.
Da bi dosegli preizkuse Specflow, ki se izvajajo kot del nastavitve neprekinjene integracije, je seznam korakov na visoki ravni, ki jim je mogoče slediti:
# 1) Sestavite projekt, ki vsebuje funkcijo Specflow in definicijo koraka, da dobite prevedeni DLL.
#two) Zdaj uporabite tekače konzole NUnit ali MSUnit in zagotovite sestavljeni DLL kot preskusni vir (ti okviri ponujajo druge zmogljivosti, pa tudi preskusne filtre, odvisno od kategorij itd.).
Ta korak je mogoče integrirati s cevovodom za kontinuirano integracijo in ga je mogoče izvesti prek lupine ali DOS skripta z orodjem CI, kot sta Jenkins ali Bamboo itd.
# 3) Po zaključku preizkusa lahko ustvarjeno izhodno poročilo (ki je značilno za uporabljeni konzoli) lahko pretvori v bolj berljivo poročilo HTML z uporabo Spekrun izvršljiva datoteka je na voljo kot del NugetPackage.
Ta korak je mogoče izvesti tudi prek ukazne vrstice, ki je na voljo v vseh glavnih okvirih neprekinjene integracije.
# 4) Ko se zgornji korak zaključi, smo pripravljeni s poročilom o izvedenih testih in povzetimi meritvami podrobnosti izvedbe testa.
Upamo, da ste uživali v celotni paleti vadnic v tej seriji vadb Specflow. Ta serija vadnic bi bila resnično najboljše vodilo za vse začetnike ali izkušene osebe, ki želijo obogatiti svoje znanje o Specflowu!
PREV Vadnica ALIPojdi nazaj na PRVA Vadnica
Priporočeno branje
- Vprašanja in odgovori za intervju
- Vprašanja za intervju z Spockom z odgovori (najbolj priljubljeno)
- Nekaj zanimivih vprašanj za preskušanje programske opreme
- 20 Najbolj priljubljenih vprašanj in odgovorov na intervju za TestNG
- Top 30+ priljubljenih vprašanj in odgovorov za intervju s kumaricami
- 50 najbolj priljubljenih vprašanj in odgovorov za intervjuje CCNA
- 40 najbolj priljubljenih vprašanj in odgovorov za J2EE, ki bi jih morali prebrati
- 25+ najbolj priljubljenih vprašanj in odgovorov za intervju z ADO.NET