Articles

Specflow Kurz: Konečný Průvodce BDD Nástroj

Kompletní Průvodce Specflow a Chování Driven Development (BDD) Tutorial:

Co je Specflow?

Specflow je testovací framework podporující postupy BDD v. NET frameworku. Je to open source framework hostovaný na Githubu. Pomáhá při používání ATDD (Acceptance test driver development) pro aplikace.Net. Díky tomu můžeme definovat scénář v prosté angličtině definovaný jazykem Gherkin, který je každému jasně srozumitelný.

k Dispozici jsou různé nástroje pro psaní testů v BDD přístup jako Okurka/JBehave pro Java, hlávkový Salát pro Python, Jasmine pro Javascript, Specflow pro .NET.

Specflow a BDD

BDD (Chování Driven Development) je soubor postupů, nebo postup podobný TDD (Test Driven Development), která si klade za cíl překlenout komunikační propast mezi různými zúčastněnými stranami jako Výrobek, Vývojáři a Testery.

konečným cílem přístupu BDD je vytvořit obchodní požadavky, které by mohl pochopit celý tým, aby se předešlo nedorozuměním, a pomáhá dodávat vyvíjenou funkci nejpřijatelnějším způsobem.

kompletní Specflow Tutorial Series:

Přečtěte si kompletní Specflow Training Series pro lepší pochopení konceptu.

Tutorial #1: Úvod do Specflow BDD Nástroj (Tento Návod)
Návod #2: Specflow a Selen Příklad
Tutorial #3: Specflow Závazná & Pokročilé Koncepty
Tutorial #4: Krok Argument Transformace & Specflow Tabulky
Návod #5: Specflow Obývací Dokumentace s kyselou okurkou
Tutorial #6: Specflow Generátor sestav
Tutorial #7: Specflow Rozhovor otázky

Stručný Přehled výukových programů v Specflow Série:

Tutorial # Popis
1 Úvod do Specflow BDD Nástroj (Tento Výukový program)
Tento tutoriál vám vysvětlí vše o Specflow v detailu. Specflow je testovací framework podporující postupy BDD v. NET frameworku. Je to open source framework hostovaný na Githubu. Pomáhá při používání ATDD (Acceptance test driver development) pro aplikace.Net.
2 Specflow a Selen Příklad
Tento výukový program se zaměří na Integraci Selenu s Specflow rámce pomocí jednoduché testovací scénář hledání video na Youtube aplikaci. Zkontrolujete také, jak sdílet data v různých vazbách prostřednictvím polí soukromé třídy.
3 Specflow a Selen Příklad
Tento výukový program se zaměří na Integraci Selenu s Specflow rámce pomocí jednoduché testovací scénář hledání video na Youtube aplikaci. Zkontrolujete také, jak sdílet data v různých vazbách prostřednictvím polí soukromé třídy.
4 Krok Argument Transformace & Specflow Tabulky
Tento informativní Specflow tutorial bude expalin podrobně o Krok Argument transformace, které umožňují vlastní typ konverze pro Specflow argumenty, aby se zabránilo boilerplate kód a Specflow tabulky přijít vhod, když budete muset projít v mnoha oborech/data v jediném kroku v uživatelsky přívětivé formě tabulky.
5 Specflow Obývací Dokumentace s kyselou okurkou
Z tohoto Specflow tutoriálu se dostanete do vědět, jak generovat dobře vypadající obývací dokumentace prostřednictvím open source rámec, tzv. pickles pomocí vašeho stávajícího Specflow soubory.
6 Specflow Generátor sestav
V této Specflow Reporting tutorial se dozvíte, způsoby provedení Specflow funkce testy spolu s generování HTML zprávy prostřednictvím Specflow spustitelný soubor.
7 Specflow Rozhovor otázky
seznam nejvíce populární Specflow rozhovor otázky a odpovědi s příklady jsou zahrnuty v tomto tutoriálu pro vás bezva nějaké Specflow rozhovor úspěšně na první pokus.

Pojďme začít s první kurz v této sérii.

Úvod do nástroje Specflow BDD

podívejte se na Video tutoriál:

zde je video tutoriál o vývoji Specflow a chování:

Vlastnosti BDD

klíčové vlastnosti BDD jsou seznámeni s níže:

#1) snaží se definovat chování systému nebo funkce, vyvíjen prostřednictvím příklad, nebo scénář. Například, pokud vytváříte jednoduchou aplikaci kalkulačky, pak různá chování zahrnují sčítání, násobení, dělení atd.

proto prostřednictvím BDD se všechny zúčastněné strany nejprve setkají, aby rozhodly o chování aplikace, jako je přidání, a budou mít scénáře, jak je uvedeno níže.

Given, I have 2 numbers 30 and 50 as inputWhen I add these 2 numbersThen I should get an output of 80

Pokud vidíte výše uvedeného znázornění je scénář, v jednoduché angličtině, že je jasně srozumitelný každému a dělá požadavky na funkce clear (dle kritérií přijatelnosti). Prvním krokem je tedy formulovat tyto požadavky.

#2) Nyní se sadou těchto scénářů QA zapíše testy proti nim a to zpočátku selže, protože funkce ještě není vyvinuta.

#3) nyní vývojář zapíše kód funkce a provede tyto testy znovu.

#4) testy mohou projít nebo selhat. Pokud selžou-refaktor kód a opakujte proces

#5) Po refaktorování kódu je kompletní všechny scénáře / testy by měly projít.

proto BDD v podstatě používá přístup TDD a posouvá jej na další úroveň tím, že má některé běžné snadno srozumitelné SPECIFIKACE ve formě scénářů. Představují také samotnou dokumentaci funkcí.

k Dispozici jsou různé nástroje pro psaní testů v BDD přístup jako Okurka/JBehave pro Java, hlávkový Salát pro Python, Jasmine pro Javascript, Specflow pro .NET.

V tomto tutoriálu, budeme se zaměřením na Specflow.

Přečtěte si Také => Top BDD Nástroje a Testování Rámec

Klíčová slova – Vzhledem k tomu, Když &

Z jednotky testování světě, většina z nás jsou obeznámeni s 3 A to tedy Zařídit, Jednat a Uplatnit. Nyní, vzhledem k tomu, kdy a pak jsou náhrady za tyto ve světě BDD.

Vezměme si příklad pro pochopení každého z nich. Předpokládejme, že uvádíte scénář pro ověření produktu, který se přidá do nákupního košíku aplikace elektronického obchodování, která vyžaduje, abyste byli přihlášeni jako předpoklad.

specifikaci lze zapsat následovně:

Scenario: Products get added to cart for a logged in customerGiven I have a logged-in customer on my applicationWhen I add 2 quantity of a product to my shopping cartThen the shopping cart should get updated and have the right product and quantity 

daný: Používá se pro popis sady předběžných podmínek pro definovaný scénář. Například v příkladu je předpokladem scénáře přihlášený zákazník. Proto ve srovnání s analogií uspořádat v jednotkovém testu, implementace kroku bude muset zajistit, že je přihlášený zákazník.

Když: toto se používá k popisu akce nebo kroku provádění. V příkladu ukazuje, že se zákazník snaží přidat produkt do svého nákupního košíku. Implementace kroku pro tento krok se proto postará o simulační kód pro přidání produktu do košíku. To lze porovnat s krokem Act v jednotkových testech.

pak: toto se používá k popisu výsledku scénáře a v podstatě tam, kde by měly být validace umístěny. Lze jej porovnat s krokem Assert ve světě testování jednotek. V příkladu zde bude implementace kroku tvrdit, zda byl produkt skutečně přidán a množství je stejné, jaké bylo vybráno zákazníkem.

soubor funkcí

soubor funkcí je v podstatě seskupením více scénářů pro vyvíjenou nebo testovanou aplikaci. Lze ji také jednoduše považovat za různé moduly aplikace, pomocí kterých lze aplikaci logicky oddělit.

Například:

e-commerce aplikace, můžete rozhodnout pro různé high-level funkce souborů, jako:

  • Přihlášení/Odhlášení funkčnost
  • Nákupní Košík
  • Platba atd.

co je Specflow?

Specflow je nástroj podporující postupy BDD v. NET frameworku. Je to open source framework hostovaný na Githubu. Pomáhá při používání ATDD (Acceptance test driver development) pro aplikace.Net.

Závazné obchodní požadavky pro aplikace používající Specifikaci Příkladem paradigmatu pomáhá v lepší pochopení chování aplikace tím, že všechny zúčastněné subjekty, a tím i výsledky v lodní dopravě výrobku s správné očekávání.

využívá syntaxi okurek pro vytváření funkcí& scénáře. Má také aktivní diskusní / vývojářské fórum.

Specflow-Začínáme

v této části prozkoumáme instalaci specflow ve Visual Studio IDE a vytváření souborů funkcí pro jednoduchou aplikaci String Utility.

Ukázková Aplikace

Budeme ilustrující různé funkce Specflow rámec v tomto tutoriálu pomocí Kalkulačky Aplikace, která má funkce/rozhraní pro různé operace, jako je:

  1. Přidání 2 čísla.
  2. odečtením 2 čísel.
  3. dělení a násobení 2 čísel.
  4. nalezení druhé odmocniny daného čísla.

Průvodce instalací Specflow

Instalace Specflow je 2krokový proces

#1) Instalace požadovaných pluginů do IDE Visual Studio.

  • nainstalovat specflow plugin, přejděte na Nástroje -> Rozšíření & Aktualizace.
  • nyní klikněte na“ Online “ na levém panelu.
  • nyní vyhledejte specflow v pravém panelu.
  • z výsledků vyhledávání vyberte „Specflow for Visual Studio 2017“.

Specflow-Plugin Instalace

#2) Nastavení projektu s funkcí souborů a krok definice.

  • Vytvořte jednoduchý nový projekt ve Visual Studiu. Můžeme vytvořit jakýkoli druh projektu, jako je knihovna tříd / konzolová aplikace / testovací projekt jednotek atd. Pro jednoduchost se zabýváme projektem knihovny tříd. Pojmenujte projekt jako „SpecflowBasic“.
  • abychom mohli spustit scénáře Specflow, které se chystáme vytvořit, potřebujeme testovací běžec. Specflow poskytuje běžec po vybalení z krabice s názvem Specflow + Runner (což je placená verze a bezplatná verze zavádí zpoždění).

(Další běžci jsou k dispozici také pro NUnit a MsTest, které uvidíme v dalších článcích v této sérii).

instalovat Specflow + Runner – Přejděte na Nástroje -> NuGet Package Manager -> Package Manager Console.

jakmile se otevře konzola správce balíčků-Spusťte příkaz.

 Install-Package SpecRun.SpecFlow

Specrun-Instalace

  • a Také, v zájmu Prosazení hodnot, budeme potřebovat pomoc testovací rámec. NUnit může být jednou z možností a ostatní zahrnují MsTest atd. Chcete-li nainstalovat rámec NUnit do aplikace, otevřete konzolu správce balíčků a zadejte příkaz.
 Install-Package NUnit 

#3) Vytvořte novou třídu s názvem „CalculatorApplication“, která se stane naší testovanou aplikací. Jedná se o jednoduchou třídu, která má funkce pro provádění sčítání/násobení/dělení / druhé odmocniny atd., pro daný vstup. Takto vypadá Třída Calculatoapplikace.

#4) Po instalaci balíčku vytvořte v projektu 2 složky a pojmenujte je jako funkce a definice kroků pro ukládání souborů funkcí a krokových vazeb. Podrobně probereme důvod této organizace složek pro funkci & definice kroků.

#5) nyní ve složce funkce Přidejte nový soubor funkcí a pojmenujte jej jako CalculatorFeature.

funkce kalkulačky

uvidíte, že ve výchozím nastavení má soubor funkcí nějaký popis ve funkci a scénáři.

nahraďte to tím, co budeme testovat.

 Feature: CalculatorFeatureIn order to test my applicationAs a developerI want to validate different operations of the applicationScenario: Add two numbersGiven I have provided 70 and 20 as the inputsWhen I press addThen the result should be 90Scenario: Substract two numbersGiven I have provided 70 and 20 as the inputsWhen I press substractThen the result should be 50Scenario: Multiply two numbersGiven I have provided 70 and 20 as the inputsWhen I press multiplyThen the result should be 1400Scenario: Divide two numbersGiven I have provided 70 and 20 as the inputsWhen I press divideThen the result should be 3.5Scenario: SquareRoot of numberGiven I have provided 70 as inputWhen I press squarerootThen the result should be 8.37

#6) generování definic kroků: Specflow poskytuje automatizovaný způsob generování vazeb/implementace pro různé kroky ve scénářích souborů funkcí. Toho lze dosáhnout kliknutím pravým tlačítkem myši na soubor funkcí a kliknutím na „Generovat definice kroků“.

generovat definici kroku

Tento krok nezaručuje implementaci pro všechny kroky, ale snaží se co nejlépe seskupit společné kroky ve scénářích a znovu použít tolik vazeb, kolik může. Nicméně, to dělá za úkol vyhnout se boilerplate kód pokaždé, když je třeba provést krok scénář.

po kliknutí na „Generovat definice kroků“ se zobrazí okno se seznamem identifikovaných implementací kroků, které procesor detekoval. Jeden může vybrat nebo de-vybrat podle požadavků.

Vytvořit Krok Definice Kostry

V pozdějších oddílech, podíváme se na více detailů o Stylu rozevíracího seznamu je znázorněno na obrázku výše.

prozatím ponechme všechny vybrané s výchozím nastavením. Kliknutím na náhled se zobrazí snímek, jak bude implementace vypadat.

Snímek implementace

po vytvoření definic kroků mají soubory funkcí vizuální způsob identifikace neimplementovaných aplikací. Ukazuje tyto kroky v jiné barvě tím, že je naprosto jednoduché vědět, že existují některé kroky, které ještě nemají implementaci (nebo mají nejednoznačné definice kroků).

Ukázka Obrazovky Znázorňuje, že Pod:

Chybějící implementace

Poznámka: Krok definice může být vytvořen i ručně – Žádné .cs soubor s Atributem Krokem implementace třídy a Okurkou syntaxe bude hledat odpovídající provádění daný scénář krok

Provedení

Jak jsme již přidali Specflow+ Runner ve výše uvedeném oddílu, provádění Scénáře je velice jednoduché (vzhledem k tomu, že je to zkušební verze Specrun, zavádí variabilní zpoždění 10-20s před scénářů provedení. , Toto zpoždění není přítomno u registrovaných variant a jiných příchutí Specrun runner jako NUnit a MsTest).

pokud nebyly implementovány všechny kroky a pokud stále existují vazby, které mají nevyřízený stav. Poté se výstup zobrazí jako čekající.

zkusme spustit tyto testy/scénáře v tomto okamžiku, kdy neexistuje žádná implementace pro vazby a všechny scénáře čekají na vyřízení.

čekající scénáře

nyní se pokusíme implementovat třídu CalculatorApplication metodami, které chceme testovat, tj.

níže je uveden ukázkový kód, jak vypadá naše třída 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; } } } 

jakmile je aplikace připravena, pokusme se zjistit způsoby implementace vazeb pro každý z kroků scénáře.

podívejme se na postup krok za krokem k implementaci těchto:

  • nejprve musíme mít instanci aplikace, kterou je třeba otestovat. Pro jednoduchost můžeme vytvořit instanci AUT (Aplikace Pod testovací třídou) v krokových vazbách a pomocí instance instance skutečně volat různé metody / funkce podle kroku, který je implementován.
  • pro zachycení vstupu a výstupu deklarujeme proměnné, které mají tyto hodnoty držet, abychom mohli volat funkce na instanci aplikace.

podívejme se na implementaci end to end pro všechny vazby zapojené do ověřování funkce Add (zbytek scénářů to jednoduše rozšiřuje).

scénář přidání vypadá níže:

Scenario: Add two numbers Given I have provided 70 and 20 as the inputs When I press add Then the result should 

podívejme se na implementaci kroku pro každý z těchto jednotlivých kroků. Pro využití všech krokem implementace, budeme deklarovat instanci Aplikace v rámci testu, stejně jako proměnné pro uložení vstupních a výstupních proměnných, jak je uvedeno níže:

// instantiating application instance CalculatorApplication app = new CalculatorApplication(); // variables to hold input values and the intermeditate result int input1, input2; double output; 

podívejme se na provádění scénář kroky, jeden po druhém.

Krok 1: Vzhledem k tomu, že jsem jako vstupy poskytl 70 a 20.

 public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1) { input1 = p0; input2 = p1; } 

Tady, máme jen inicializaci vstupních proměnných s hodnotami prošel od scénáře kroky. p0 a p1 jsou hodnoty, které jsou předány z kroku scénáře a budou inicializovány jako 70 & 20.

Krok 2: když stisknu přidat.

 public void WhenIPressAdd() { output = app.add(input1, input2); } 

Toto je krok provádění (nebo Act), kdy je skutečná metoda volána na testované aplikaci. Všimněte si, že protože vstupní proměnné input1 a input2 již obsahují hodnoty předané v kroku 1, instance aplikace může volat metodu s těmito proměnnými.

Krok 3: – výsledek by měl být 90.

 public void ThenTheResultShouldBe(double p0) { Assert.AreEqual(p0, output); }

Toto je Potvrzení (nebo Tvrdí) krok, kde výstup je generován pomocí volání metody a instance Aplikace je ověřena proti očekávaný výstup.

Všimněte si, že použité Klíčové slovo Assert je z NUnit Framework, které vrací true nebo false v závislosti na nastaveném ověření / očekávání. V případě, že vrátí false, způsobí selhání implementace kroku a to ukáže výsledek scénáře jako selhání.

Také, prosím, na vědomí, že výstupní proměnná získá hodnotu z předchozího kroku, kde skutečná metoda byla volána na instance aplikace.

Podobně jako výše, Krok implementace pro zbytek scénář kroky jsou prováděny stejným způsobem, rozdíl je ve volání různých metod na instanci aplikace a prosazuje různé výstupní hodnoty.

jakmile jsou implementovány všechny kroky scénáře, mohou být testy provedeny.

výsledný výstup bude vypadat, jak je uvedeno níže:

Konsolidované Výstup

můžete také zobrazit výstup z jednotlivých scénář, který uvádí výstup z jednotlivých kroků:

Scénář Výstup

Závěr

Doufám, že tento článek by vám dal základní pochopení toho, co BDD je a jaké jsou nástroje, které podporují BDD pro .NET, kde jsme probrali Specflow.

diskutovali jsme také o instalaci a spuštění souborů funkcí Specflow pomocí ukázkové aplikace.

kódové soubory

kódové soubory použité v aplikaci jsou uvedeny níže:

CalculatorFeatureSteps.cs

using System;using TechTalk.SpecFlow;using NUnit;using NUnit.Framework;namespace SpecflowBasic.StepDefinitions{public class CalculatorFeatureSteps{// instantiating application instanceCalculatorApplication app = new CalculatorApplication();// variables to hold input values and the intermeditate resultint input1, input2;double output;public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1){input1 = p0;input2 = p1;}public void GivenIHaveProvidedAsInput(int p0){input1 = p0;}public void WhenIPressAdd(){output = app.add(input1, input2);}public void WhenIPressSubstract(){output = app.subsctract(input1, input2);}public void WhenIPressMultiply(){output = app.multiply(input1, input2);}public void WhenIPressDivide(){output = app.divide(input1, input2);}public void WhenIPressSquareroot(){output = app.squareRoot(input1);}public void ThenTheResultShouldBe(double p0){Assert.AreEqual(p0, output);}}} 

Calculatoapplication.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.config

<?xml version="1.0" encoding="utf-8"?><packages><package version="10.0.3" targetFramework="net461" /><package version="3.11.0" targetFramework="net461" /><package version="2.4.0" targetFramework="net461" /><package version="1.8.5" targetFramework="net461" /><package version="1.8.5" targetFramework="net461" /><package version="1.8.5" targetFramework="net461" /><package version="4.3.0" targetFramework="net461" /></packages>

náš nadcházející tutoriál vás seznámí s příkladem použití Specflow a Selenium Webdriver!

další tutoriál