specflow tutorial ultimate guide bdd tool
Popoln vodnik za specflow in vedenjske pogoje za razvoj (BDD):
Kaj je Specflow?
Specflow je preskusni okvir, ki podpira prakse BDD v okolju .NET. Gre za odprtokodni okvir, ki ga gosti GitHub. Pomaga pri uporabi ATDD (Razvoj gonilnikov za sprejemni test) za .NET aplikacije. S tem lahko v navadni angleščini določimo scenarij, ki ga definira Gherkinov jezik, ki je vsem očitno razumljiv.
V pristopu BDD obstajajo različna orodja za pisanje testov, kot so Kumara / JBehave za Javo, Solata za Python, Jasmine za Javascript, Specflow za .NET.
BDD (Behaviour Driven Development) je sklop praks ali pristop, podoben TDD (Test Driven Development), katerega cilj je premostiti komunikacijsko vrzel med različnimi deležniki, kot so Product, Developers in Testers.
Končni cilj pristopa BDD je ustvariti poslovne zahteve, ki bi jih lahko razumela celotna ekipa, da bi se izognili nesporazumom in pomaga, da je funkcija, ki se razvija, sprejeta na najbolj sprejemljiv način.
Popolna vadnica Specflow:
Preberite Popolna serija usposabljanja Specflow za boljše razumevanje koncepta.
Vadnica št. 1: Uvod v orodje Specflow BDD (Ta vadnica)
Vadnica # 2: Primer specflowa in selena
Vadnica št. 3: Specflow Binding & Advanced Concepts
Vadnica # 4: Korak Argument Transformacije & Specflow tabele
Vadnica št. 5: Specflow Living Documentation with Pickles
Vadnica # 6: Generator poročil o specflowu
Vadnica št. 7: Vprašanja za intervju za Specflow
Kratek pregled vaj v seriji Specflow:
Vadnica št. | Opis |
---|---|
7. | Vprašanja za intervju za Specflow V tej vadnici je seznam najbolj priljubljenih vprašanj in odgovorov z intervjuji Specflow, ki vam omogočajo, da že v prvem poskusu uspešno razbijete kateri koli intervju Specflow. |
eno | Uvod v orodje Specflow BDD (Ta vadnica) Ta uvodna vadnica vam bo podrobno razložila vse o Specflowu. Specflow je preskusni okvir, ki podpira prakse BDD v okolju .NET. Gre za odprtokodni okvir, ki ga gosti GitHub. Pomaga pri uporabi ATDD (Razvoj gonilnikov za sprejemni test) za .NET aplikacije. |
dva | Primer specflowa in selena Ta vadnica se bo osredotočila na integracijo selena z ogrodjem Specflow s preprostim testnim scenarijem iskanja videoposnetkov v aplikaciji Youtube. Preverili boste tudi, kako lahko delite podatke med različnimi vezavami prek polj zasebnega razreda. |
3. | Primer specflowa in selena Ta vadnica se bo osredotočila na integracijo selena z ogrodjem Specflow s preprostim testnim scenarijem iskanja videoposnetkov v aplikaciji Youtube. Preverili boste tudi, kako lahko delite podatke med različnimi vezavami prek polj zasebnega razreda. |
4. | Korak Argument Transformacije & Specflow tabele Ta informativna vadnica Specflow bo podrobno opisala transformacije korakov argumenta, ki omogočajo pretvorbe tipa po meri za argumente Specflow, da bi se izognili vzorčni kodi in tabelam Specflow pridejo prav, ko morate v enem koraku v uporabniku prijazni tabeli predati veliko polj / podatkov format. |
5. | Specflow Living Documentation with Pickles V tej vadnici za Specflow boste spoznali, kako ustvariti lepo videti bivalno dokumentacijo prek odprtokodnega ogrodja, imenovanega kumarice, s pomočjo obstoječih datotek Specflow. |
6. | Generator poročil o specflowu V tej vadnici poročanja o specflowu boste spoznali načine izvajanja testov funkcij Specflow skupaj z ustvarjanjem poročil HTML prek izvršljive datoteke Specflow. |
Začnimo s prvo vadnico v tej seriji.
Kaj se boste naučili:
Uvod v orodje Specflow BDD
Oglejte si video vadnico:
Tu je video vadnica o razvoju specflowa in vedenja:
Značilnosti BDD
Spodaj so predstavljene ključne značilnosti BDD:
# 1) S pomočjo primera ali scenarija poskuša določiti vedenje sistema ali funkcije, ki se razvija. Če na primer gradite preprosto kalkulator, potem različna vedenja vključujejo seštevanje, množenje, deljenje itd.
Zato se bodo prek BDD vse zainteresirane strani najprej sestale, da se bodo odločile o vedenju aplikacije, kot je Addition, in bodo imele scenarije, kot je prikazano spodaj.
Given, I have 2 numbers 30 and 50 as input When I add these 2 numbers Then I should get an output of 80
Če vidite zgornjo predstavitev, gre za scenarij v navadni angleščini, ki je vsem razumljiv in jasno določa zahteve za funkcijo (v skladu z merili sprejemljivosti). Zato je prvi korak artikuliranje teh zahtev.
#two) Z nizom teh scenarijev QA napiše preskuse proti tem, kar pa sprva ne bo uspelo, ker funkcija še ni razvita.
# 3) Zdaj razvijalec napiše kodo funkcije in znova izvede te teste.
# 4) Preskusi lahko opravijo ali ne uspejo. Če ne uspejo, predelajte kodo in ponovite postopek
# 5) Ko je refaktoriranje kode končano, morajo vsi scenariji / testi opraviti.
Zato BDD v bistvu uporablja pristop TDD in ga popelje na naslednjo stopnjo, tako da ima nekatere skupne lahko razumljive specifikacije v obliki scenarijev. Predstavljajo tudi dokumentacijo o lastnostih same po sebi.
V pristopu BDD obstajajo različna orodja za pisanje testov, kot so Kumara / JBehave za Javo, Zelena solata za Python , Jasmine za Javascript, Specflow za .NET.
kako odpreti datoteko mkv v operacijskem sistemu Windows
V tej vadnici se bomo osredotočili na Specflow.
Preberite tudi => Vrhunska orodja BDD in okvir za preskušanje
Ključne besede - dano, kdaj in potem
Iz sveta preizkušanja enot večina od nas pozna tri A, to je Razporejanje, delovanje in uveljavljanje. Zdaj, Glede na to, kdaj in potem so nadomestitve za te v svetu BDD.
Vzemimo Primer za razumevanje vsakega od teh. Recimo, da navajate scenarij za preverjanje veljavnosti izdelka, ki se doda v nakupovalni voziček aplikacije za e-poslovanje, ki zahteva, da ste prijavljeni kot predpogoj.
Specifikacijo lahko zapišemo na naslednji način:
Scenario: Products get added to cart for a logged in customer Given I have a logged-in customer on my application When I add 2 quantity of a product to my shopping cart Then the shopping cart should get updated and have the right product and quantity
Glede na to :To se uporablja za opis nabora predpogojev za scenarij, ki je opredeljen. Na primer, v primeru je predpogoj scenarija prijavljena stranka. Zato primerjava z Uredi Analogno v preskusu enote bo izvedba koraka morala zagotoviti, da je prijavljena stranka.
Kdaj :S tem se opisuje dejanje ali izvedbeni korak. V primeru kaže, da kupec skuša dodati izdelek v svojo nakupovalno košarico. Zato bo izvedba koraka za ta korak poskrbela za simulacijsko kodo za dodajanje izdelka v košarico. To lahko primerjamo z Zakon korak v preskusih enote.
Potem :To se uporablja za opis izida scenarija in v bistvu, kam je treba vstaviti validacije. Lahko ga primerjamo z Uveljavi korak v svetu testiranja enot. V tem primeru bo izvedba koraka potrdila, ali je bil izdelek dejansko dodan in ali je količina enaka količini, ki jo je izbrala stranka.
Datoteka funkcije
Datoteka s funkcijami je v bistvu skupina več scenarijev za aplikacijo, ki se razvija ali preizkuša. Lahko ga tudi preprosto mislimo kot različne module aplikacije, s katerimi je aplikacijo mogoče logično ločiti.
Na primer:
Aplikacija za e-poslovanje se lahko odloči za različne datoteke funkcij na visoki ravni, kot so:
- Funkcija prijave / odjave
- Nakupovalni voziček
- Plačilo itd.
Kaj je Specflow?
Specflow je orodje, ki podpira prakse BDD v okolju .NET. Gre za odprtokodni okvir, ki ga gosti GitHub. Pomaga pri uporabi ATDD (Razvoj gonilnikov za sprejemni test) za .NET aplikacije.
Vezava poslovnih zahtev za aplikacijo z uporabo paradigme Specification By Example pomaga k boljšemu razumevanju vedenja aplikacije s strani vseh zainteresiranih strani in s tem povzroči pošiljanje izdelka s pravilnimi pričakovanji.
Uporablja Kumaricin sintaksa za ustvarjanje funkcij in scenarijev. Ima tudi aktivno razpravo / razvijalca forum .
Specflow - Uvod
V tem razdelku bomo preučili namestitev specflowa v Visual Studio IDE in ustvarili datoteke funkcij za preprosto aplikacijo String Utility.
O vzorčni prijavi
V tej vadnici bomo ponazorili različne značilnosti ogrodja Specflow z uporabo aplikacije Kalkulator, ki ima funkcije / vmesnike za zagotavljanje različnih operacij, kot so:
- Dodajanje 2 številk.
- Odštevanje 2 števil.
- Delitev in množenje 2 števil.
- Iskanje kvadratnega korena danega števila.
Specflow Vodič za namestitev
Namestitev specflowa je dvostopenjski postopek
# 1) Nameščanje zahtevanih vtičnikov v Visual Studio IDE.
- Če želite namestiti vtičnik za specflow, se pomaknite do Orodja -> Razširitev in posodobitve.
- Zdaj na levi plošči kliknite »Online«.
- Zdaj poiščite specflow na desni plošči.
- Med rezultati iskanja izberite »Specflow za Visual Studio 2017«.
#two) Nastavitev projekta z datotekami funkcij in definicijami korakov.
- Ustvarite preprost nov projekt v Visual Studio. Ustvarimo lahko kakršen koli projekt, kot je razred knjižnice / aplikacija konzole / testni projekt enote itd. Za poenostavitev se lotevamo projekta knjižnice razredov. Projekt poimenujte »SpecflowBasic«.
- Za zagon scenarijev Specflow, ki jih bomo ustvarili, potrebujemo preskusni program. Specflow nudi zagonski program, imenovan Specflow + Runner (ki je plačljiva različica in brezplačna različica uvaja zamudo).
(Za NUnit in MsTest so na voljo tudi drugi tekači, ki jih bomo videli v nadaljnjih člankih te serije).
Če želite namestiti Specflow + Runner - Pomaknite se do Orodja -> Upravitelj paketov NuGet -> Konzola upravitelja paketov.
Ko se odpre konzola Package Manager - zaženite ukaz.
Install-Package SpecRun.SpecFlow
- Za uveljavitev vrednosti bomo potrebovali tudi preskusno ogrodje. NUnit je lahko ena od možnosti, druge pa vključujejo MsTest itd. Če želite v aplikacijo namestiti ogrodje NUnit, odprite konzolo Upravljalca paketov in vnesite ukaz.
Install-Package NUnit
# 3) Ustvarite nov razred z imenom 'CalculatorApplication', ki bo postal naša preizkušena aplikacija. To je preprost razred s funkcijami za izvajanje seštevanja / množenja / deljenja / kvadratnega korena itd. Za dani vhod. Tako izgleda razred CalculatorApplication.
# 4) Ko se paket namesti, v projektu ustvarite 2 mapi in jih poimenujte kot funkciji in definiciji korakov za shranjevanje datotek funkcij oziroma vezav korakov. Podrobno bomo obravnavali razlog za to organizacijo map za definicije lastnosti in korakov.
# 5) Zdaj v mapo funkcij dodajte novo datoteko funkcije in jo poimenujte kot CalculatorFeature.
Videli bi, da ima datoteka funkcij privzeto opis v funkciji in scenariju.
Nadomestite s tem, kar bomo preizkusili.
Feature: CalculatorFeature In order to test my application As a developer I want to validate different operations of the application Scenario: Add two numbers Given I have provided 70 and 20 as the inputs When I press add Then the result should be 90 Scenario: Substract two numbers Given I have provided 70 and 20 as the inputs When I press substract Then the result should be 50 Scenario: Multiply two numbers Given I have provided 70 and 20 as the inputs When I press multiply Then the result should be 1400 Scenario: Divide two numbers Given I have provided 70 and 20 as the inputs When I press divide Then the result should be 3.5 Scenario: SquareRoot of number Given I have provided 70 as input When I press squareroot Then the result should be 8.37
# 6) Ustvarjanje definicij korakov: Specflow ponuja avtomatiziran način za generiranje vezi / izvedbe za različne korake v scenarijih datotek z značilnostmi. To lahko dosežete tako, da z desno miškino tipko kliknete datoteko funkcije in kliknete »Ustvari definicije korakov«.
Ta korak ne zagotavlja izvedbe za vse korake, vendar se po najboljših močeh trudi skupne korake združiti v scenarije in ponovno uporabiti čim več vezi. Vendar se to nalogo izogne vsakič, ko je treba izvesti korak scenarija.
Po kliku 'Ustvari definicije korakov' , Prikaže se okno s seznamom identificiranih izvedb korakov, ki jih je procesor zaznal. V skladu z zahtevami lahko izberete ali odstranite izbiro.
V poznejših razdelkih bomo preučili več podrobnosti o spustnem meniju Style, prikazanem na zgornjem posnetku zaslona.
Za zdaj naj bodo vsi izbrani s privzetimi nastavitvami. S klikom na Predogled se prikaže posnetek, kako bo videti izvedba.
Po ustvarjanju definicij korakov, če obstajajo nekateri neizvedeni koraki, imajo datoteke Feature vizualni način prepoznavanja neizvedenih aplikacij. Te korake prikazuje v drugačni barvi, tako da je povsem preprosto vedeti, da obstajajo nekateri koraki, ki še nimajo izvedbe (ali imajo dvoumne definicije korakov).
Vzorčni prikaz spodnjega zaslona:
Opomba: Definicije korakov je mogoče ustvariti tudi ročno - katera koli datoteka .cs, ki ima atribut (Binding), je razred izvedbe koraka in sintaksa Gherkin bo iskala ujemanje z izvajanjem danega koraka scenarija
Izvršitev
Kot smo že dodali Specflow + Runner v zgornjem razdelku, je izvajanje Scenarijev precej preprosto (ker gre za ocenjevalno različico Specruna, uvaja spremenljivo zakasnitev 10–20 s pred izvajanjem scenarijev. Ta zakasnitev ni na voljo za registrirane različice in druge okuse Specrun tekača, kot sta NUnit in MsTest).
Če so vsi koraki ni bilo in če še vedno obstajajo vezave, ki so v čakalnem stanju. Potem bo izhod prikazan kot čakajoč.
Poskusimo te preizkuse / scenarije zagnati na tej točki, ko za izvedbo vezav ni izvedbe in so vsi scenariji v teku.
Zdaj poskusimo implementirati razred CalculatorApplication z metodami, ki jih želimo preizkusiti, torej seštevati, odštevati, množiti, deliti in sqrt.
Spodaj je vzorec kode, kako izgleda naš razred CalculatorApplication:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SpecflowBasic { class CalculatorApplication { public int add(int input1, int input2) { return input1 + input2; } public int subsctract(int input1, int input2) { return input1 - input2; } public int multiply(int input1, int input2) { return input1 * input2; } public double divide(double input1, double input2) { return input2 != 0 ? Math.Round(input1 / input2, 2) : 0; } public double squareRoot(int input1) { return input1 != 0 ? Math.Round(Math.Sqrt(input1), 2) : 0; } } }
Ko je aplikacija pripravljena, poskusimo ugotoviti načine za izvajanje vezav za vsak korak scenarija.
Oglejmo si pristop po korakih za izvajanje teh:
- Najprej moramo imeti primerek aplikacije, ki ga je treba preizkusiti. Zaradi poenostavitve lahko v vezavah korakov primerimo AUT (razred pod testnim razredom) in uporabimo primerek za dejansko klicanje različnih metod / funkcij, kot je izveden korak.
- Za zajem vhodnih in izhodnih podatkov deklariramo spremenljivke, da imajo te vrednosti, da pokličemo funkcije na primerku aplikacije.
Oglejmo si izvedbo od konca do konca za vse vezave, ki sodelujejo pri preverjanju veljavnosti funkcije Add (ostali scenariji to preprosto podaljšujejo).
Scenarij Dodaj je videti, kot je prikazano spodaj:
Scenario: Add two numbers Given I have provided 70 and 20 as the inputs When I press add Then the result should
Oglejmo si izvedbo korakov za vsakega od teh posameznih korakov. Za uporabo vseh izvedb korakov prijavljamo primerek preizkušane aplikacije in spremenljivke, ki bodo vsebovale vhodne in izhodne spremenljivke, kot je prikazano spodaj:
// instantiating application instance CalculatorApplication app = new CalculatorApplication(); // variables to hold input values and the intermeditate result int input1, input2; double output;
Oglejmo si izvajanje korakov scenarija enega za drugim.
Korak 1: Glede na to, da sem priskrbel 70 in 20 kot vhodi.
(Given(@'I have provided (.*) and (.*) as the inputs')) public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1) { input1 = p0; input2 = p1; }
Tu smo pravkar inicializirali vhodne spremenljivke z vrednostmi, ki so bile posredovane iz korakov scenarija. p0 in p1 sta vrednosti, ki sta posredovani iz koraka scenarija in bosta inicializirani kot 70 oziroma 20.
2. korak: Ko pritisnem dodaj.
(When(@'I press add')) public void WhenIPressAdd() { output = app.add(input1, input2); }
To je korak Izvedba (ali Dejanje), kjer se dejanska metoda pokliče v preizkušeni aplikaciji. Upoštevajte, da ker vhodni spremenljivki input1 in input2 že vsebujeta vrednosti, posredovane v 1. koraku, lahko primerek aplikacije pokliče metodo s temi spremenljivkami.
3. korak: - Potem bi moral biti rezultat 90.
(Then(@'the result should be (.*)')) public void ThenTheResultShouldBe(double p0) { Assert.AreEqual(p0, output); }
To je korak validacije (ali uveljavitve), pri katerem se izhod ustvari s klicem metode in primerek aplikacije preveri glede na pričakovani izhod.
Opazite, da Uveljavi uporabljena ključna beseda je iz NUnit Framework, ki vrne true ali false, odvisno od potrjevanja / pričakovanja, ki je nastavljeno. V primeru, da vrne false, bo izvedba koraka propadla in rezultat scenarija bo prikazan kot neuspešen.
video posnetke za ogled z vr slušalkami
Upoštevajte tudi, da izhodna spremenljivka dobi vrednost iz prejšnjega koraka, kjer je bila dejanska metoda poklicana na primerku aplikacije.
Podobno kot zgoraj se izvedbe korakov za ostale korake scenarija izvajajo na enak način, razlika je v klicanju različnih metod v primerku aplikacije in uveljavljanju različnih izhodnih vrednosti.
Ko se izvedejo vsi koraki scenarija, se lahko izvedejo testi.
Rezultat bo videti, kot je prikazano spodaj:
Ogledate si lahko tudi rezultat posameznega scenarija, ki vsebuje tudi rezultate posameznih korakov:
Zaključek
Upam, da bi vam ta članek dal osnovno razumevanje, kaj je BDD in katera orodja podpirajo BDD za .NET, kjer smo obravnavali Specflow.
Prav tako smo razpravljali o namestitvi in izvajanju datotek funkcije Specflow s pomočjo vzorčne aplikacije.
Datoteke kode
Kodirane datoteke, uporabljene v aplikaciji, so prikazane spodaj:
CalculatorFeatureSteps.cs
using System; using TechTalk.SpecFlow; using NUnit; using NUnit.Framework; namespace SpecflowBasic.StepDefinitions { (Binding) public class CalculatorFeatureSteps { // instantiating application instance CalculatorApplication app = new CalculatorApplication(); // variables to hold input values and the intermeditate result int input1, input2; double output; (Given(@'I have provided (.*) and (.*) as the inputs')) public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1) { input1 = p0; input2 = p1; } (Given(@'I have provided (.*) as input')) public void GivenIHaveProvidedAsInput(int p0) { input1 = p0; } (When(@'I press add')) public void WhenIPressAdd() { output = app.add(input1, input2); } (When(@'I press substract')) public void WhenIPressSubstract() { output = app.subsctract(input1, input2); } (When(@'I press multiply')) public void WhenIPressMultiply() { output = app.multiply(input1, input2); } (When(@'I press divide')) public void WhenIPressDivide() { output = app.divide(input1, input2); } (When(@'I press squareroot')) public void WhenIPressSquareroot() { output = app.squareRoot(input1); } (Then(@'the result should be (.*)')) public void ThenTheResultShouldBe(double p0) { Assert.AreEqual(p0, output); } } }
CalculatorApplication.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SpecflowBasic { class CalculatorApplication { public int add(int input1, int input2) { return input1 + input2; } public int subsctract(int input1, int input2) { return input1 - input2; } public int multiply(int input1, int input2) { return input1 * input2; } public double divide(double input1, double input2) { return input2 != 0 ? Math.Round(input1 / input2, 2) : 0; } public double squareRoot(int input1) { return input1 != 0 ? Math.Round(Math.Sqrt(input1), 2) : 0; } } }
paketi.config
Naša prihajajoča vadnica vas bo seznanila s primerom uporabe Specflow in Selenium Webdriver od konca do konca!
Priporočeno branje
- Vadnice za globinsko zasenčenje za začetnike
- Vadnica za TestLink: Laični priročnik za orodje za upravljanje preizkusov TestLink (Tutorial # 1)
- Vadnica za Bugzilla: Praktična vadnica o orodju za upravljanje napak
- Vadnica TestComplete: Izčrpen priročnik za orodje za testiranje grafičnega uporabniškega vmesnika za začetnike
- SeeTest Vadnica za avtomatizacijo: Priročnik za orodje za avtomatizacijo mobilnih testov
- Vadnica za računalniško mreženje: Ultimate Guide
- Vadnica za orodje za preizkušanje dostopnosti WAVE
- Okvir BDD (Behavio-Driven Development): Popolna vadnica