specflow tutorial ultimate guide bdd tool
Kompletný sprievodca výučbou vývoja Specflow a správania (BDD):
Čo je to Specflow?
Specflow je testovací rámec podporujúci postupy BDD v rámci .NET. Je to rámec otvoreného zdroja hostený na GitHub. Pomáha pri používaní ATDD (vývoj testovacieho ovládača prijatia) pre aplikácie .NET. S týmto môžeme definovať scenár v jednoduchej angličtine definovaný Gherkinovým jazykom, ktorý je jasne pochopiteľný pre každého.
V prístupe BDD existujú rôzne nástroje na písanie testov, ako napríklad Cucumber / JBehave pre Javu, Lettuce pre Python, Jasmine pre Javascript, Specflow pre .NET.
BDD (Behavior Driven Development) je súbor postupov alebo prístupu podobného TDD (Test Driven Development), ktorého cieľom je preklenúť komunikačnú priepasť medzi rôznymi zainteresovanými stranami, ako sú Product, Developer a Testers.
Konečným cieľom prístupu BDD je vytvoriť obchodné požiadavky, ktorým by mohol porozumieť celý tím, aby sa predišlo nedorozumeniam a aby pomohla odoslať vyvíjanú funkciu najprijateľnejším spôsobom.
Kompletná séria výučbových programov Specflow:
Prečítajte si Kompletná školiaca séria Specflow pre lepšie pochopenie pojmu.
Výukový program č. 1: Úvod do nástroja Specflow BDD (Tento návod)
Výukový program č. 2: Príklad Specflow a selén
Výukový program č. 3: Specflow Binding & Advanced Concepts
Výukový program č. 4: Tabuľky transformácií krokových argumentov a tabuliek Specflow
Výukový program č. 5: Specflow Living Dokumentácia s nálevom
Výukový program č. 6: Generátor správ Specflow
Výukový program č. 7: Specflow Interview otázky
Stručný prehľad tutoriálov v sérii Specflow:
Návod | Popis |
---|---|
7 | Specflow Interview otázky V tomto tutoriáli je uvedený zoznam najpopulárnejších otázok a odpovedí na pohovor so Specflow, ktorý vám umožní úspešne rozbiť akýkoľvek rozhovor so Specflow na prvý pokus. |
1 | Úvod do nástroja Specflow BDD (Tento návod) Tento úvodný tutoriál vám podrobne vysvetlí všetko o Specflow. Specflow je testovací rámec podporujúci postupy BDD v rámci .NET. Je to rámec otvoreného zdroja hostený na GitHub. Pomáha pri používaní ATDD (vývoj testovacieho ovládača prijatia) pre aplikácie .NET. |
dva | Príklad Specflow a selén Tento výukový program sa zameria na integráciu selénu s rámcom Specflow prostredníctvom jednoduchého testovacieho scenára vyhľadávania videa v aplikácii Youtube. Tiež skontrolujete, ako zdieľať údaje medzi rôznymi väzbami prostredníctvom polí súkromnej triedy. |
3 | Príklad Specflow a selén Tento výukový program sa zameria na integráciu selénu s rámcom Specflow prostredníctvom jednoduchého testovacieho scenára vyhľadávania videa v aplikácii Youtube. Tiež skontrolujete, ako zdieľať údaje medzi rôznymi väzbami prostredníctvom polí súkromnej triedy. |
4 | Tabuľky transformácií krokových argumentov a tabuliek Specflow Tento informatívny tutoriál Specflow podrobne vysvetlí transformácie parametrov Step Argument, ktoré umožňujú konverzie vlastného typu pre argumenty Specflow, aby sa zabránilo štandardnému kódu a tabuľky Specflow sa hodia, keď potrebujete v jednom kroku odovzdať veľa polí / údajov v užívateľsky prívetivej tabuľke formát. |
5 | Specflow Living Dokumentácia s nálevom Z tohto výukového programu Specflow sa dozviete, ako vygenerovať dobre vyzerajúcu živú dokumentáciu prostredníctvom open source rámca s názvom nakladaná zelenina pomocou vašich existujúcich súborov Specflow. |
6 | Generátor správ Specflow V tomto výukovom programe Specflow Reporting sa naučíte spôsoby vykonávania testov funkcií Specflow spolu s generovaním správ HTML prostredníctvom spustiteľného súboru Specflow. |
Začnime prvým tutoriálom v tejto sérii.
Čo sa dozviete:
Úvod do nástroja Specflow BDD
Pozrite si videonávod:
Tu je videonávod o vývoji Specflow a vývoji riadenom správaním:
Vlastnosti BDD
Kľúčové vlastnosti BDD sú uvedené nižšie:
# 1) Pokúša sa definovať správanie systému alebo funkcie vyvíjanej prostredníctvom príkladu alebo scenára. Napríklad ak zostavujete jednoduchú aplikáciu Kalkulačka, potom medzi rôzne spôsoby správania patrí sčítanie, násobenie, delenie atď.
Preto prostredníctvom BDD sa všetky zainteresované strany najskôr stretnú, aby rozhodli o chovaní aplikácie, ako je Dodatok, a budú mať scenáre, ako je uvedené nižšie.
Given, I have 2 numbers 30 and 50 as input When I add these 2 numbers Then I should get an output of 80
Ak vidíte vyššie uvedené znázornenie, je to scenár v jednoduchej angličtine, ktorý je jasne pochopiteľný pre všetkých a objasňuje požiadavky na funkciu (podľa kritérií prijatia). Prvým krokom je teda formulovanie týchto požiadaviek.
#dva) Teraz so súborom týchto scenárov QA zapisuje testy proti týmto, a to spočiatku zlyhá, pretože funkcia ešte nie je vyvinutá.
# 3) Teraz vývojár napíše kód funkcie a znova vykoná tieto testy.
# 4) Testy môžu vyhovieť alebo zlyhať. Ak zlyhajú - kód refaktora a postup opakujte
# 5) Po dokončení refaktoringu kódu by mali prejsť všetky scenáre / testy.
Preto v podstate BDD používa prístup TDD a posúva ho na ďalšiu úroveň tým, že má niektoré bežné ľahko zrozumiteľné špecifikácie vo forme scenárov. Predstavujú tiež samotnú dokumentáciu funkcií.
V prístupe BDD existujú rôzne nástroje na písanie testov, ako napríklad Cucumber / JBehave for Java, Lettuce for Python , Jasmine pre Javascript, Specflow pre .NET.
aké je najlepšie odstránenie škodlivého softvéru
V tomto tutoriáli sa zameriame na Specflow.
Prečítajte si tiež => Najlepšie nástroje BDD a testovací rámec
Kľúčové slová - zadané, kedy a potom
Zo sveta testovania jednotiek väčšina z nás pozná 3 A, teda Arrange, Act a Assert. Teraz, vzhľadom na to, kedy a potom sú vo svete BDD ich nahradením.
Zoberme si Príklad za pochopenie každého z nich. Predpokladajme, že uvádzate zoznam scenárov na validáciu produktu, ktorý sa pridá do nákupného košíka aplikácie elektronického obchodu a ktorý vyžaduje, aby ste sa prihlásili ako nevyhnutná podmienka.
Špecifikáciu je možné napísať nasledovne:
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
Dané :Používa sa na opísanie súboru predbežných podmienok pre definovaný scenár. Napríklad v tomto príklade je predpokladom scenára prihlásený zákazník. Preto v porovnaní s Usporiadať analogicky pri teste jednotky bude potrebné pri implementácii kroku zabezpečiť, aby bol prihlásený zákazník.
Kedy :Toto sa používa na opis akcie alebo kroku vykonania. V príklade ukazuje, že zákazník sa snaží pridať produkt do svojho nákupného košíka. Preto sa implementácia tohto kroku postará o simulačný kód na pridanie produktu do košíka. To sa dá porovnať s Zák krok v testoch jednotiek.
Potom :Toto sa používa na opis výsledku scenára a hlavne na to, kam by sa mali umiestniť validácie. Dá sa to porovnať s Tvrdiť krok vo svete testovania jednotiek. V tomto príklade bude kroková implementácia tvrdiť, či bol produkt skutočne pridaný a či je množstvo rovnaké ako množstvo, ktoré vybral zákazník.
Súbor funkcií
Súbor funkcií je v podstate zoskupením viacerých scenárov pre vyvíjanú alebo testovanú aplikáciu. Dá sa to tiež jednoducho predstaviť ako rôzne moduly aplikácie, pomocou ktorých je možné aplikáciu logicky oddeliť.
Napríklad:
Aplikácia elektronického obchodu sa môže rozhodnúť, že bude mať rôzne súbory funkcií na vysokej úrovni, napríklad:
- Funkcia prihlásenia / odhlásenia
- Nákupný vozík
- Platba atď.
Čo je to Specflow?
Specflow je nástroj podporujúci postupy BDD v rámci .NET. Je to rámec otvoreného zdroja hostený na GitHub. Pomáha pri používaní ATDD (vývoj testovacieho ovládača prijatia) pre aplikácie .NET.
Záväzné obchodné požiadavky na aplikáciu pomocou špecifikácie podľa príkladu paradigma pomáha lepšie porozumieť chovaniu aplikácie všetkými zainteresovanými stranami, a tým vedie k dodaniu produktu so správnymi očakávaniami.
Využíva to Uhorka syntax pre vytváranie funkcií a scenárov. Má tiež aktívnu diskusiu / vývojára fórum .
Specflow - Začíname
V tejto časti preskúmame inštaláciu specflow v prostredí Visual Studio IDE a vytváranie súborov funkcií pre jednoduchú aplikáciu String Utility.
O vzorovej aplikácii
V tomto výučbe si ukážeme rôzne funkcie rámca Specflow pomocou aplikácie Calculator, ktorá má funkcie / rozhrania na poskytovanie rôznych operácií, ako napríklad:
- Sčítanie 2 čísel.
- Odčítanie 2 čísel.
- Rozdelenie a násobenie 2 čísel.
- Nájdenie druhej odmocniny z daného čísla.
Specflow Návod na inštaláciu
Inštalácia Specflow je dvojstupňový proces
# 1) Inštalácia požadovaných doplnkov v prostredí Visual Studio IDE.
- Ak chcete nainštalovať doplnok specflow, prejdite do ponuky Nástroje -> Rozšírenie a aktualizácie.
- Teraz kliknite na „Online“ na ľavom paneli.
- Teraz vyhľadajte specflow na pravom paneli.
- Z výsledkov vyhľadávania vyberte „Specflow pre Visual Studio 2017“.
#dva) Nastavenie projektu so súbormi funkcií a definíciami krokov.
- Vytvorte jednoduchý nový projekt v Visual Studio. Môžeme vytvoriť akýkoľvek druh projektu, napríklad projekt triedy Knižnica / Konzolová aplikácia / Test jednotky. Pre zjednodušenie preberáme projekt Knižnica tried. Pomenujte projekt ako „SpecflowBasic“.
- Aby sme mohli spustiť scenáre Specflow, ktoré ideme vytvoriť, potrebujeme testovacieho bežca. Specflow poskytuje bežca po vybalení z krabice s názvom Specflow + Runner (čo je platená verzia a bezplatná verzia zavádza oneskorenie).
(Pre NUnit a MsTest sú k dispozícii aj ďalší bežci, ktorých uvidíme v ďalších článkoch tejto série).
Inštalácia aplikácie Specflow + Runner - Prejdite do ponuky Nástroje -> Správca balíkov NuGet -> Konzola správcu balíkov.
Po otvorení konzoly Správca balíkov - spustite príkaz.
Install-Package SpecRun.SpecFlow
- Aby sme mohli presadiť hodnoty, budeme tiež potrebovať pomoc s testovacím rámcom. NUnit môže byť jednou z možností a medzi ďalšie patrí MsTest atď. Ak chcete do aplikácie nainštalovať rámec NUnit, otvorte konzolu Správca balíkov a zadajte príkaz.
Install-Package NUnit
# 3) Vytvorte novú triedu s názvom „CalculatorApplication“, ktorá sa stane našou testovanou aplikáciou. Toto je jednoduchá trieda s funkciami na vykonávanie sčítania, násobenia, delenia, druhej odmocniny atď. Pre daný vstup. Takto vyzerá trieda CalculatorApplication.
# 4) Po nainštalovaní balíka vytvorte v projekte 2 priečinky a pomenujte ich ako Funkcie a Definície krokov na ukladanie súborov funkcií a krokových väzieb. Podrobne si rozoberieme dôvod tejto organizácie priečinkov pre definície funkcií a krokov.
# 5) Teraz do priečinka funkcií pridajte nový súbor funkcií a pomenujte ho ako CalculatorFeature.
Videli by ste, že súbor funkcií má predvolene určitý popis v časti Funkcia a scenár.
Nahraďte to tým, čo ideme testovať.
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) Generovanie definícií krokov: Specflow poskytuje automatizovaný spôsob generovania väzieb / implementácie pre rôzne kroky v scenároch súborov funkcií. To sa dá dosiahnuť kliknutím pravým tlačidlom myši na súbor funkcií a kliknutím na položku „Generovať definície krokov“.
Tento krok nezaručuje implementáciu pre všetky kroky, ale snaží sa čo najlepšie zoskupiť bežné kroky podľa scenárov a znova použiť toľko väzieb, koľko dokáže. Je však úlohou vyhnúť sa štandardnému kódu zakaždým, keď je potrebné implementovať krok scenára.
Po kliknutí „Generate Step Definitions“ , Zobrazí sa okno so zoznamom implementácií identifikovaných krokov, ktoré procesor zistil. Je možné vybrať alebo zrušiť výber podľa požiadaviek.
V ďalších častiach sa pozrieme na ďalšie podrobnosti o rozbaľovacej ponuke Štýl zobrazenej na snímke vyššie.
Zatiaľ si všetky ponechajme vybrané s predvolenými nastaveniami. Kliknutím na ukážku sa zobrazí prehľad, ako bude implementácia vyzerať.
Po vytvorení definícií krokov napriek tomu, ak existujú nejaké neimplementované kroky, majú súbory funkcií vizuálny spôsob identifikácie neimplementovaných aplikácií. Ukazuje tieto kroky inou farbou, vďaka čomu je úplne jednoduché vedieť, že existujú niektoré kroky, ktoré ešte nemajú implementáciu (alebo majú nejednoznačné definície krokov).
Ukážková obrazovka zobrazuje toto:
Poznámka: Definície kroku je možné vytvoriť aj ručne - Akýkoľvek súbor .cs s atribútom [Binding] je implementačnou triedou kroku a Gherkinova syntax bude hľadať zhodu s implementáciou daného kroku scenára.
Exekúcia
Ako sme už pridali Specflow + Runner do vyššie uvedenej časti, vykonávanie scenárov je celkom jednoduché (pretože je to hodnotiaca verzia Specrunu, zavádza variabilné oneskorenie 10-20 s pred vykonaním scenárov., Toto oneskorenie nie je k dispozícii pre registrované varianty a ďalšie príchute bežca Specrun, ako sú NUnit a MsTest).
Ak majú všetky kroky nebol implementované a ak ešte existujú väzby, ktoré majú čakajúci stav. Potom sa výstup zobrazí ako nespracovaný.
Skúsme tieto testy / scenáre spustiť v tomto okamihu, keď pre väzby neexistuje implementácia a všetky scenáre čakajú na posúdenie.
Teraz skúsme implementovať triedu CalculatorApplication s metódami, ktoré chceme testovať, t. J. Sčítať, odčítať, vynásobiť, deliť a sqrt.
Ďalej uvádzame ukážku kódu toho, ako vyzerá naša trieda 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; } } }
Keď je aplikácia pripravená, skúsme zistiť spôsoby implementácie väzieb pre každý z krokov scenára.
Pozrime sa na postupný prístup k ich implementácii:
- Najprv musíme mať inštanciu aplikácie, ktorú je potrebné otestovať. Pre jednoduchosť môžeme vytvoriť inštanciu AUT (trieda testovaných aplikácií) v krokových väzbách a použiť inštančnú inštanciu na skutočné volanie rôznych metód / funkcií podľa implementovaného kroku.
- Na zachytenie vstupu a výstupu deklarujeme premenné, ktoré majú tieto hodnoty, aby mohli volať funkcie na inštancii aplikácie.
Pozrime sa na implementáciu end-to-end pre všetky väzby zapojené do overovania funkčnosti Pridať (ostatné scenáre to jednoducho rozširujú).
Scenár pridania vyzerá takto:
Scenario: Add two numbers Given I have provided 70 and 20 as the inputs When I press add Then the result should
Pozrime sa na postupnú implementáciu pre každý z týchto jednotlivých krokov. Pre použitie všetkých krokových implementácií deklarujeme inštanciu testovanej aplikácie, ako aj premenné na uchovanie vstupných a výstupných premenných, ako je uvedené nižšie:
// instantiating application instance CalculatorApplication app = new CalculatorApplication(); // variables to hold input values and the intermeditate result int input1, input2; double output;
Pozrime sa postupne na implementáciu krokov scenára.
Krok 1: Vzhľadom na to som uviedol 70 a 20 ako vstupy.
[Given(@'I have provided (.*) and (.*) as the inputs')] public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1) { input1 = p0; input2 = p1; }
Tu sme práve inicializovali vstupné premenné s hodnotami odovzdanými z krokov scenára. p0 a p1 sú hodnoty, ktoré sa odovzdávajú z kroku scenára a budú inicializované ako 70, respektíve 20.
Krok 2: Keď stlačím pridať.
[When(@'I press add')] public void WhenIPressAdd() { output = app.add(input1, input2); }
Toto je krok Execution (alebo Act), kde sa v testovanej aplikácii volá skutočná metóda. Všimnite si, že keďže vstupné premenné input1 a input2 už obsahujú hodnoty odovzdané v kroku 1, inštancia aplikácie môže zavolať metódu s týmito premennými.
Krok 3: - Potom by mal byť výsledok 90.
[Then(@'the result should be (.*)')] public void ThenTheResultShouldBe(double p0) { Assert.AreEqual(p0, output); }
Toto je krok Validácia (alebo Assert), kde je výstup generovaný vyvolaním metódy a inštancia aplikácie je overená oproti očakávanému výstupu.
Všimnite si, že Tvrdiť použité kľúčové slovo je z NUnit Framework, ktoré vracia hodnotu true alebo false v závislosti od nastaveného overenia / očakávania. V prípade, že vráti hodnotu false, spôsobí to zlyhanie implementácie Step a výsledok scenára sa zobrazí ako zlyhaný.
nástroje na zhromažďovanie požiadaviek používané obchodnými analytikmi
Upozorňujeme tiež, že výstupná premenná získava hodnotu z predchádzajúceho kroku, keď bola v inštancii aplikácie volaná skutočná metóda.
Podobne ako v predchádzajúcom prípade sa implementácie kroku pre zvyšok krokov scenára vykonávajú rovnakým spôsobom, rozdiel je vo volaní rôznych metód na inštancii aplikácie a v presadzovaní rôznych výstupných hodnôt.
Po implementácii všetkých krokov scenára je možné vykonať testy.
Výsledný výstup bude vyzerať takto:
Môžete si tiež pozrieť výstup z individuálneho scenára, ktorý obsahuje aj zoznam výstupov z jednotlivých krokov:
Záver
Dúfam, že vám tento článok poskytne základné informácie o tom, čo je BDD a aké sú nástroje, ktoré podporujú BDD pre .NET, kde sme sa venovali Specflow.
Diskutovali sme tiež o inštalácii a spustení súborov funkcií Specflow pomocou ukážkovej aplikácie.
Súbory kódu
Súbory kódov použité v aplikácii sú uvedené nižšie:
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; } } }
balíky.konfigurácia
Náš nadchádzajúci tutoriál vás oboznámi s príkladom použitia technológie Specflow a selénového webdivera od začiatku do konca!
Odporúčané čítanie
- Hĺbkové návody pre zatmenie pre začiatočníkov
- Výukový program TestLink: Laický sprievodca nástrojom na správu testov TestLink (výučba č. 1)
- Výukový program Bugzilla: Výukový program pre nástroj na správu chýb
- Výukový program TestComplete: Komplexná príručka nástroja na testovanie grafického používateľského rozhrania pre začiatočníkov
- Výukový program pre automatizáciu SeeTest: Sprievodca nástrojom na automatizáciu mobilných testov
- Výukový program pre počítačové siete: Najdôležitejší sprievodca
- Výukový program pre testovanie prístupnosti WAVE
- Rámec BDD (Behavior Driven Development): Kompletný návod