top 15 popular specflow interview questions
Najčešće postavljana pitanja i odgovori za specflow intervjue:
Ukratko je predstavljen naš prethodni Vodič za specflow Kako generirati izvještaje o ispitivanju i izvršiti selektivne testove .
U ovom ćemo uputstvu pogledati najpopularnija pitanja o intervjuu za Specflow zajedno s njihovim odgovorima.
Pročitajte Kompletna serija specflow treninga za lako razumijevanje koncepta. Specflow je alat koji podržava prakse BDD-a u .NET okviru. To je okvir otvorenog koda hostiran na GitHubu. Pomaže u korištenju ATDD (Acceptance Test Driver Development) za .NET.
Najpopularnija pitanja i odgovori za intervju za Specflow
U nastavku su navedena najpopularnija pitanja o specflow intervjuu s odgovorima i primjerima za vaše lako razumijevanje.
P # 1) Koja je razlika između značajke datoteke i datoteka povezivanja?
Odgovor: Pisanje BDD testova u Specflow ima, naime, dvije glavne komponente
- Datoteke značajki: Koji sadrže testove napisane kao Scenariji na jeziku specifičnom za domenu (DSL) i u osnovi su obične engleske datoteke koje su prikladne i razumljive svim dionicima projekta. U stvarnosti su to stvarne ispitne datoteke i tumače se kroz vezove ili definicije koraka.
- Koračni vezovi: Te su datoteke koda stvarna logika inteligencije koja stoji iza izvršavanja testa. Svaki korak u scenariju (koji je dio datoteke značajki) veže se za datoteku definicije koraka koja se zapravo izvršava kada se test pokrene.
Dakle, kombinacija datoteka značajki i definicije koraka ili povezivanja omogućuju Specflowu (ili bilo kojem drugom BDD) okviru da pokrene testove.
P # 2) Što je BDD i kako se razlikuje od TDD ili ATDD?
Odgovor: Sva ova tri pojma, tj. BDD, TDD i ATDD donekle su povezani s testom vođenim razvojem, ali uistinu se u mnogočemu razlikuju
- TDD: TDD u osnovi stvara testove iz perspektive programera. Jednostavnim riječima, to je skup testova koje programer napiše kako bi njegov kod prošao (ili propao). To je u osnovi tehnika kojom vaš kôd ne uspijeva dok se ne odgovore na sve specifične zahtjeve. U osnovi slijedi ciklus refaktora za kôd dok testovi ne postanu zeleni.
- BDD: BDD je usko povezan s TDD-om, ali je relevantniji iz perspektive 'izvana', što zapravo znači da su BDD testovi više povezani s poslovnim zahtjevima / proizvodima i definiraju željeno ponašanje sustava u obliku scenarija. TDD za razliku od njih nudi zrnatiji nivo jediničnih testova. Također, specifikacije BDD-a obično su običan engleski tekst koji je lak za razumijevanje i omogućava veću suradnju između svih dionika projekta.
- ATDD: Fokus razvoja na temelju ispitivanja prihvaćanja više je iz perspektive prihvaćanja korisnika. Ovi testovi također definiraju ponašanje kupaca, ali sa stajališta integracije ili konačnog proizvoda, gdje se krajnji slučaj upotrebe kupca pretvara u testni scenarij i sav razvojni rad usmjeren je na ispunjavanje ovih zahtjeva.
P # 3) Što se nalazi u automatski generiranoj datoteci za značajku Specflow?
Odgovor: Datoteke s kodom specflowa su automatski generirane datoteke s nastavkom '.cs'. Te datoteke imaju logiku vezivanja od koraka do stvarne definicije koraka.
Nekoliko točaka u vezi s automatski generiranim datotekama su:
besplatni internetski test za ručno testiranje
- Te se datoteke ne smiju ručno mijenjati ili uređivati. Čak i ako to pokušate učiniti, promjene se neće spasiti.
- Nakon svake promjene u datoteci značajki, sastavljač ponovno generira ovu datoteku da uhvati ažuriranja.
P # 4) Kako se pristupa vezama koraka raspoređenim po različitim izvornim datotekama?
Odgovor: Datoteke koračnog povezivanja mogu se ponovno koristiti, čak i ako postoje u zasebnim izvornim datotekama, a podudaranje povezivanja događa se putem regularnog izraza.
Datoteke povezivanja koraka u osnovi su djelomične klase koje pripisuje (Uvez) atribut. To osigurava da su sve poveznice koraka dostupne globalno i mogu se koristiti sa scenarijskim koracima u različitim datotekama ili istim značajkama.
P # 5) Kako se mogu riješiti dvosmislene implementacije vezivanja koraka?
Odgovor: Specflow pruža mehanizam za izbjegavanje dvosmislene provedbe vezivanja koraka pomoću koncepta tzv Scoped Vezovi.
Ovo je korisno u scenarijima u kojima imate slične korake u Scenarijima u istim ili različitim datotekama značajki i ako želite oba koraka tretirati drugačije.
U normalnom scenariju, budući da se sva podudaranja koraka događa putem Regexa, a to je pohlepno podudaranje, morat ćete osigurati da za korake napišete malo drugačiji tekst (tako da se ne podudaraju s istom implementacijom) iako utječu čitljivost.
Korištenjem Scoped Bindings možete odrediti oznake s određenom implementacijom vezanja ili cijelom datotekom vezanja i osigurati da podudaranje ima i dodatni filtar kategorije.
Koraci koje treba slijediti navedeni su u nastavku:
do) Označi scenarij kategorijom koristeći sintaksu - @Označiti. Primjer: Označavamo donji scenarij oznakom - @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) Sada upotrijebite istu oznaku na vezivanju koraka što će osigurati da se pored podudaranja regularnog izraza dogodi i podudaranje oznake ili kategorije (i osigurava da drugi koraci ne odgovaraju ovoj implementaciji čak i ako je podudaranje regularnog izraza uspješno)
U gornjem primjeru želimo obuhvatiti obvezujući korak. “ I ušao sam u Indiju kao ključnu riječ za pretraživanje ”, Dodat ćemo atribut Scope s parametrom Scoping kao oznakom.
(Given(@'I have entered (.*) as search keyword'), Scope(Tag ='scopedBinding')) public void GivenIHaveEnteredIndiaAsSearchKeyword(String searchString) { // step binding implementation }
Slično opsegu s oznakom, također je moguće imati uvezane okvire s naslovima Feature i Scenario.
P # 6) Kako se testni kontekst može pohraniti tijekom izvođenja različitih scenarija?
Odgovor: Kontekst testa može se pohraniti pomoću različitih pristupa tijekom izvođenja testova specflowa, a svaki pristup ima svoje prednosti i nedostatke.
- Korištenje ScenarioContext i FeatureContext: Zamišljajte FeatureContext i ScenarioContext kao globalni rječnik parova ključ / vrijednost i dostupan je tijekom izvršavanja značajki, odnosno izvršavanja scenarija. Polje vrijednosti može pohraniti bilo koju vrstu Objekta i tijekom dohvaćanja treba ga ubaciti u objekt po želji.
- Korištenje polja u datotekama za povezivanje: Ovaj pristup omogućuje dijeljenje konteksta između implementacija vezanja u istoj i / ili različitim datotekama vezanja u istom imenskom prostoru. Nije drugačije u održavanju stanja pomoću varijabli klase i prema potrebi se može postaviti ili dohvatiti u implementacijama vezanja.
- Korištenje vlastitog DI okvira Specflow: Specflow pruža okvir za ubrizgavanje konteksta i može se koristiti za prosljeđivanje konteksta u obliku Jednostavnih POCO klasa / objekata. Objekti / klase konteksta mogu se ubrizgati kroz polja konstruktora i mogu se prosljeđivati duž različitih datoteka vezanja Korak.
Pogledajte primjer u nastavku s 2 predmeta ubrizganih ubrizgavanjem u konstruktor.
najbolje velike podatkovne tvrtke za koje treba raditi
(Binding) public class StepImplementationClass { private readonly Context1 _context1; private readonly Context2 _context2; public YoutubeSearchFeatureSteps(Context1 context1, Context2 context2) { _context1 = context1; _context2 = context2; } }
P # 7) Koja su ograničenja Specflow-a ili BDD-a općenito?
Odgovor: BDD, kako i samo ime kaže, definira ponašanje aplikacije koja u osnovi pretvara slučajeve upotrebe u testne scenarije.
Stoga bi odsutnost dionika poput poduzeća, proizvoda i / ili kupaca mogla utjecati na stvarne specifikacije za koje će programeri provesti testove pisanja, a time bi moglo rezultirati i ne pružanjem stvarne vrijednosti onog što je mogao pružiti i imati sve dionike bili dostupni tijekom definiranja scenarija.
Rekavši da većina puta profesionalci nadmudruju nedostatke BDD-a i zaista je vrlo korisna tehnika za testiranje / potvrđivanje specifikacija. Budući da je manje-više jezično agnostičan jer postoje BDD okviri dostupni za gotovo sve glavne programske jezike poput Cucumber za Javu, RSpec za Ruby i Specflow za .NET.
P # 8) Što su preobrazbe koračnih argumenata?
Odgovor: Argumentne transformacije kao što naziv implicira nisu ništa drugo do transformiranje koraka scenarija.
Shvatite to kao dodatni sloj podudaranja koji se događa prije nego što se dogodi stvarno podudaranje koraka i on može biti koristan za transformiranje različite vrste korisničkog unosa, a ne za različite implementacije pojedinačnih koraka za istu vrstu unosa.
Za bilo koji korak transformacije potreban atribut je StepArgumentTransformation
Primjer, pogledajte donji uzorak koda:
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
Pozivajući se na gornji uzorak koda, sva su tri koraka povezana. Ali, da je prošlo uobičajeno podudaranje regularnih izraza, tada biste trebali napisati tri različite implementacije koraka.
S postavljenim korakom transformacije argumenata moguće je transformirati vrijednosti i stvoriti a Oznaka vremena objekt iz navedenih parametara i vratite se natrag na izvornu implementaciju koraka.
Pogledajmo provedbu transformacije.
(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 }
Dakle, ovdje transformiramo ulaz scenarija u srednju vrijednost (poput TimeStamp) i vraćamo transformiranu vrijednost u stvarnu implementaciju vezanja kao što je prikazano u donjem uzorku.
(Given(@'I have entered (.*) into the timestamp to minute converter')) public void GivenIHaveEnteredDaysIntoTheTimestampToMinuteConverter(TimeSpan tsTransformed) { // binding implementation }
Primijetite, kako se transformirana vrijednost tipa TimeSpan sada vraća natrag na stvarnu metodu implementacije vezivanja Korak.
P # 9) Koje različite vrste kukica nudi Specflow?
Odgovor:
Specflow pruža puno prilagođenih udica ili posebnih događaja s kojima se rukovatelji događajima (u osnovi metode / funkcije) mogu vezati za izvršavanje neke logike postavljanja / uklanjanja.
Specflow pruža sljedeće kuke:
- BeforeFeature / AfterFeature: Događaj pokrenut prije i nakon obilježja započinje i dovršava izvršenje.
- BeforeScenario / AfterScenario: Događaj pokrenut prije i nakon izvršavanja scenarija započinje i dovršava.
- BeforeScenarioBlock / AfterScenarioBlock: Događaj pokrenut prije i nakon bloka scenarija, tj. Kada bilo koji od blokova scenarija koji pripada 'Dano', 'Kada' ili 'Tada' započne ili završi.
- Prije koraka / nakon koraka: Događaj pokrenut prije i nakon svakog koraka scenarija.
- BeforeTestRun / AfterTestRun: Ovaj se događaj pokreće samo jednom tijekom cijelog izvođenja testa i jednom nakon završetka testa.
Ovdje je važno napomenuti da se ti događaji podižu prema zadanim postavkama i obrađuju se ako i samo ako su za te kuke predviđene veze. Također, nije obavezno primjenjivati ove udice u parovima i svaka udica može postojati neovisno jedna o drugoj.
P # 10) Po čemu se ScenarioContext razlikuje od FeatureContext?
Odgovor: I ScenarioContext i FeatureContext statične su klase koje pruža okvir Specflow i stvarno su korisne za izvršavanje zadataka poput prosljeđivanja informacija između veza, dobivanja važnih informacija poput konteksta izvršenja značajke / scenarija itd.
Pogledajmo kako se oboje razlikuju:
Kao što naziv implicira, ScenarioContext pruža podatke ili informacije na razini izvršenja Scenario, dok FeatureContext obrađuje stvari na razini značajke.
Pojednostavljeno, sve što je pohranjeno u featureContextu bit će dostupno svim scenarijima koji su prisutni u toj datoteci značajki, dok će ScenarioContext biti dostupan samo za povezivanja dok izvršenje vremenskog scenarija nije u tijeku.
P # 11) Koliko je važan redoslijed zadanog, kada i tada?
Odgovor: Specflow ne nameće nikakva ograničenja po redoslijedu Dano, kada i tada . Više se radi o logičnom slijedu scenarija ispitivanja i općenito o bilo kojoj praksi ispitivanja, tj. Kao u jedinstvenim testovima obično slijedimo tri A ' Rasporedite, djelujte i potvrdite '.
Dakle, za scenarije specflowa nema ograničenja za naručivanje, a također ne nalaže da sva tri odjeljka budu prisutna.
Postavljanje često može biti minimalističko i možda čak i nije potrebno. Stoga za te scenarije možete jednostavno preskočiti ' S obzirom ”Blokirajte i pokrenite scenarij s„ Kada ' blok.
P # 12) Što su ScenarioInfo i FeatureInfo?
Odgovor: SpecflowContext i FeatureContext dalje pružaju ugniježđene statičke klase, naime ScenarioInfo i FeatureInfo.
ScenarioInfo daje pristup informacijama oko scenarija koji se trenutno izvršava.
Neke stvari koje možete upoznati s ovom nastavom date su u nastavku:
- Titula: Naslov scenarija. Sintaksa: ScenarioContext.Current.ScenarioInfo.Title
- Oznake: Popis oznaka u obliku Niz(). Sintaksa: ScenarioContext.Current.ScenarioInfo.Tags
S imilarski do ScenarioInfo, FeatureInfo također pruža informacije koje se odnose na trenutnu značajku koja se trenutno izvršava.
Osim naslova i oznaka, pruža i druge korisne stvari poput ciljanog jezika za koji kod značajke iza datoteke generira kôd, detalje o jeziku u kojem je napisana datoteka značajke itd.
Sintaksa za dobivanje vrijednosti za FeatureInfo ostaje ista kao ScenarioInfo kao u nastavku:
FeatureContext.Current.FeatureInfo
P # 13) Razlika između tablica kontura scenarija i tablice specflowa.
Odgovor:
ScenarioOutline je u osnovi način izvođenja scenarija vođenih podacima pomoću Specflowa gdje je popis ulaza naveden u Primjeri odjeljak u scenariju, a scenarij se izvršava jednom, ovisno o broju pruženih primjera.
Pogledajte uzorak koda u nastavku da biste ga jasnije razumjeli.
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
Tablice su samo sredstvo za pružanje tabličnih podataka s bilo kojim korakom Scenarija i prosljeđuju se kao argument tablice Specflow u implementaciji koraka koji se kasnije može analizirati na željeni tip objekta prema potrebi.
Više pojedinosti potražite u odjeljku 'podebljano' u donjem uzorku koda:
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
Slično atributu Oznake - možete koristiti sve informacije koje pruža ScenarioInfo za kontrolu tijeka izvršavanja bilo koje implementacije koraka.
P # 14) Kontrola testa koji se izvršava putem ScenarioInfo.
Slično vezama opsega, koje mogu omogućiti dodavanje dodatnog kriterija filtra uz usklađivanje definicije koraka kroz oznake, također možete iskoristiti kontrolu izvršenja testa putem podataka danih u ScenarioInfo.
Na primjer, Imate 2 scenarija s oznakama, tj. @ Tag1 i @ tag2 i oba sadrže istu definiciju koraka. Sada morate dodati prilagođenu logiku, ovisno o oznakama scenarija.
Stoga u implementaciji definicije koraka možete jednostavno dobiti sve oznake povezane sa scenarijem ScenarioContext.Current.ScenarioInfo.Tags i provjerite prisutnost oznake u scenariju koji se izvršava i odlučite koji kod želite izvršiti.
Pogledajte uzorak koda u nastavku radi boljeg razumijevanja:
(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 } }
Slično atributu Oznake - možete koristiti sve informacije koje pruža ScenarioInfo za kontrolu tijeka izvršavanja bilo koje implementacije koraka.
P # 15) Kako se testovi specflowa mogu izvoditi u kontinuiranom načinu integracije?
Odgovor:
S modernim metodologijama razvoja softvera, kontinuirana integracija vrsta je modne riječi i obično se naziva skupom praksi, gdje se svaka predaja izvornom kodu smatra kandidatom za produkcijsko izdanje.
Stoga svaki predaj u osnovi pokreće različite vrste testova kao vrata kvalitete kako bi se osiguralo da počinjena promjena ne uzrokuje neuspjeh ili prekid bilo kojeg ispitivanja.
Specflow - kao što znamo, vrlo se dobro integrira s poznatim okvirima kao što su NUnit i MSUnit i može se lako pokrenuti kroz aplikacije konzola ovih okvira za testiranje s obzirom na DLL sastavljenog projekta koji ima značajke Specflow i implementacije koraka.
Stoga, da bi se postigli testovi Specflow koji se izvode kao dio kontinuirane postavke integracije, slijedi popis koraka na visokoj razini koji se mogu slijediti:
# 1) Sastavite projekt koji sadrži značajku Specflow i definiciju koraka da biste dobili kompilirani DLL.
#dva) Sada upotrijebite pokretačke konzole NUnit ili MSUnit i osigurajte kompilirani DLL kao izvor ispitivanja (ovi okviri pružaju druge mogućnosti, kao i testne filtre, ovisno o kategorijama itd.).
Ovaj se korak može integrirati s cjevovodom za kontinuiranu integraciju, a može se izvršiti putem ljuske ili DOS skripte pomoću CI alata poput Jenkinsa ili Bambusa itd.
# 3) Nakon završetka testa, generirano izlazno izvješće (koje je specifično za korišteno konzolo) može se pretvoriti u čitljiviji HTML izvještaj pomoću Spekrun izvršna je datoteka dostupna kao dio NugetPackagea.
Ovaj se korak također može izvršiti putem naredbenog retka koji su dostupni u svim glavnim okvirima kontinuirane integracije.
kako predstaviti graf u javi
# 4) Kada se gornji korak dovrši, spremni smo za izvještaj o izvršenim testovima i sažetu metriku pojedinosti o izvršenju testa.
Nadamo se da ste uživali u čitavom nizu vodiča u ovoj seriji treninga Specflow. Ova serija tutorijala doista bi bila najbolji vodič za bilo koju početnicu ili iskusniju osobu koja želi obogatiti svoje znanje o Specflowu!
PREV Vodič ILIVratite se na PRVI Vodič
Preporučena literatura
- Intervjuirajte pitanja i odgovore
- Spock intervju pitanja s odgovorima (najpopularnije)
- Neka zanimljiva pitanja za ispitivanje softverskog testiranja
- 20 najpopularnijih pitanja i odgovora na intervju za TestNG
- Top 30+ popularnih pitanja i odgovora za intervju s krastavcima
- Top 50 najpopularnijih pitanja i odgovora za CCNA intervjue
- 40 najpopularnijih pitanja i odgovora za J2EE intervjue koje biste trebali pročitati
- 25+ najpopularnijih pitanja i odgovora za intervju za ADO.NET