specflow tutorial ultimate guide bdd tool
Kompletní průvodce výukou vývoje Specflow a chování (BDD):
Co je Specflow?
Specflow je testovací framework podporující postupy BDD v .NET framework. Je to open source framework hostovaný na GitHubu. Pomáhá při používání ATDD (Acceptance test driver development) pro aplikace .NET. S tímto můžeme definovat scénář v prosté angličtině definovaný Gherkinovým jazykem, který je jasně srozumitelný všem.
V přístupu BDD existují různé nástroje pro psaní testů, jako je Cucumber / JBehave pro Javu, Salát pro Python, Jasmine pro Javascript, Specflow pro .NET.
BDD (Behavior Driven Development) je sada postupů nebo přístup podobný TDD (Test Driven Development), jehož cílem je překlenout komunikační propast mezi různými zúčastněnými stranami, jako je produkt, vývojáři a testeři.
Konečným cílem přístupu BDD je vytvořit obchodní požadavky, kterým by celý tým porozuměl, aby nedocházelo k nedorozuměním, a pomáhá dodávat vyvíjenou funkci nejpřijatelnějším způsobem.
Kompletní řada výukových programů Specflow:
Přečtěte si Kompletní řada Specflow Training pro lepší pochopení pojmu.
Výukový program č. 1: Úvod do nástroje Specflow BDD (Tento návod)
Výukový program č. 2: Příklad Specflow a selenu
Výukový program č. 3: Specflow Binding & Advanced Concepts
Výukový program č. 4: Krokové transformace argumentů a tabulky Specflow
Výukový program č. 5: Specflow Living Dokumentace s okurkami
Výukový program č. 6: Generátor zpráv Specflow
Výukový program č. 7: Specflow Interview otázky
Stručný přehled tutoriálů v sérii Specflow:
Tutorial # | Popis |
---|---|
7 | Specflow Interview otázky V tomto tutoriálu je uveden seznam nejoblíbenějších otázek a odpovědí na rozhovor se Specflow, kde můžete úspěšně prozkoumat jakýkoli rozhovor se Specflow na první pokus. |
1 | Úvod do nástroje Specflow BDD (Tento návod) Tento úvodní kurz vám podrobně vysvětlí vše o Specflow. Specflow je testovací framework podporující postupy BDD v .NET framework. Je to open source framework hostovaný na GitHubu. Pomáhá při používání ATDD (Acceptance test driver development) pro aplikace .NET. |
dva | Příklad Specflow a selenu Tento výukový program se zaměří na integraci selenu s rozhraním Specflow prostřednictvím jednoduchého testovacího scénáře vyhledávání videa v aplikaci Youtube. Také zkontrolujete, jak sdílet data napříč různými vazbami prostřednictvím soukromých polí třídy. |
3 | Příklad Specflow a selenu Tento výukový program se zaměří na integraci selenu s rozhraním Specflow prostřednictvím jednoduchého testovacího scénáře vyhledávání videa v aplikaci Youtube. Také zkontrolujete, jak sdílet data napříč různými vazbami prostřednictvím soukromých polí třídy. |
4 | Krokové transformace argumentů a tabulky Specflow Tento informativní tutoriál Specflow podrobně vysvětlí transformace Step Argument, které umožňují vlastní převody typů argumentů Specflow, aby se zabránilo kódům standardních kódů, a tabulky Specflow se hodí, když potřebujete předat mnoho polí / dat v jednom kroku v uživatelsky přívětivé tabulce formát. |
5 | Specflow Living Dokumentace s okurkami Z tohoto kurzu Specflow se dozvíte, jak generovat dobře vypadající živou dokumentaci prostřednictvím otevřeného zdrojového rámce zvaného okurky pomocí vašich stávajících souborů Specflow. |
6 | Generátor zpráv Specflow V tomto kurzu Specflow Reporting se naučíte způsoby provádění testů funkcí Specflow spolu s generováním zpráv HTML prostřednictvím spustitelného souboru Specflow. |
Začněme prvním tutoriálem v této sérii.
Co se naučíte:
Úvod do nástroje Specflow BDD
Podívejte se na video tutoriál:
Zde je video tutoriál o vývoji Specflow a vývoji založeném na chování:
Vlastnosti BDD
Klíčové vlastnosti BDD jsou uvedeny níže:
# 1) Pokouší se definovat chování vyvíjeného systému nebo prvku prostřednictvím příkladu nebo scénáře. Například pokud vytváříte jednoduchou aplikaci pro kalkulačku, pak mezi různá chování patří sčítání, násobení, dělení atd.
Prostřednictvím BDD se tedy všechny zúčastněné strany nejprve setkají, aby rozhodly o chování aplikace, jako je Dodatek, a budou mít scénáře, jak je uvedeno níže.
Given, I have 2 numbers 30 and 50 as input When I add these 2 numbers Then I should get an output of 80
Pokud vidíte výše uvedené znázornění, jedná se o scénář v prosté angličtině, který je jasně kdokoli srozumitelný a objasňuje požadavky na funkci (podle kritérií přijetí). Prvním krokem je tedy formulovat tyto požadavky.
#dva) Nyní se sadou těchto scénářů QA zapisuje testy proti těmto 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 - refaktorujte kód a postup opakujte
# 5) Jakmile je refaktorování kódu dokončeno, měly by projít všechny scénáře / testy.
BDD tedy v podstatě používá přístup TDD a posouvá ho na další úroveň tím, že má některé společné snadno srozumitelné specifikace ve formě scénářů. Představují také samotnou dokumentaci funkcí.
V přístupu BDD existují různé nástroje pro psaní testů, jako je Cucumber / JBehave pro Java, Salát pro Krajta , Jasmine pro Javascript, Specflow pro .NET.
jaký je nejlepší e-mail zdarma
V tomto tutoriálu se zaměříme na Specflow.
Přečtěte si také => Nejlepší nástroje BDD a testovací rámec
Klíčová slova - zadaná, kdy a poté
Ze světa testování jednotek většina z nás zná 3 A, tj. Arrange, Act a Assert. Vzhledem k tomu, kdy a pak jsou ve světě BDD jejich nahrazením.
Pojďme Příklad za pochopení každého z nich. Předpokládejme, že vypisujete 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.
Specifikace může být napsána následovně:
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
Dáno :Slouží k popisu souboru 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 Uspořádat analogicky v testu jednotky, implementace kroku bude muset zajistit, že je přihlášený zákazník.
Když :Používá se k popisu akce nebo kroku provádění. V příkladu ukazuje, že se zákazník pokouší přidat produkt do svého nákupního košíku. Proto se implementace kroku pro tento krok postará o simulační kód pro přidání produktu do košíku. To lze přirovnat k Akt krok v jednotkových testech.
Pak :Toto se používá k popisu výsledku scénáře a v zásadě tam, kde by měla být validace umístěna. Lze jej porovnat s Tvrdit krok ve světě testování jednotek. V tomto příkladu bude kroková implementace tvrdit, zda byl produkt skutečně přidán a množství je stejné jako množství zvolené zákazníkem.
Soubor funkcí
Soubor funkcí je v zásadě seskupením několika scénářů pro vyvíjenou nebo testovanou aplikaci. Lze jej také jednoduše považovat za různé moduly aplikace, kterými lze aplikaci logicky oddělit.
Například:
Aplikace elektronického obchodování se může rozhodnout mít různé soubory funkcí na vysoké úrovni, jako například:
- Funkce přihlášení / odhlášení
- Nákupní košík
- Platba atd.
Co je Specflow?
Specflow je nástroj podporující postupy BDD v rámci .NET. 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 na aplikaci využívající specifikaci podle příkladu paradigma pomáhá lépe porozumět chování aplikace všemi zúčastněnými stranami a tím vede k dodání produktu se správnými očekáváními.
Využívá to kyselá okurka syntaxe pro vytváření funkcí a scénářů. Má také aktivní diskusi / vývojáře Fórum .
Specflow - Začínáme
V této části prozkoumáme instalaci specflow v IDE sady Visual Studio a vytváření souborů funkcí pro jednoduchou aplikaci String Utility.
O ukázkové aplikaci
V tomto kurzu budeme ilustrovat různé funkce rámce Specflow pomocí aplikace Calculator, která má funkce / rozhraní pro poskytování různých operací, jako jsou:
- Přidání 2 čísel.
- Odečtení 2 čísel.
- Dělení a násobení 2 čísel.
- Nalezení druhé odmocniny daného čísla.
Specflow Instalační příručka
Instalace Specflow je dvoufázový proces
# 1) Instalace požadovaných modulů plug-in v prostředí Visual Studio IDE.
- Chcete-li nainstalovat plugin specflow, přejděte do nabídky Nástroje -> Rozšíření a 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 pro Visual Studio 2017“.
#dva) Nastavení projektu se soubory funkcí a definicemi kroků.
- Vytvořte jednoduchý nový projekt v sadě Visual Studio. Můžeme vytvořit jakýkoli druh projektu, jako je projekt Class Library / Console Application / Unit test project atd. Pro zjednodušení se věnujeme projektu Class Class. Pojmenujte projekt jako „SpecflowBasic“.
- Abychom mohli spustit scénáře Specflow, které se chystáme vytvořit, potřebujeme testovacího běžce. Specflow poskytuje běžec z krabice s názvem Specflow + Runner (což je placená verze a bezplatná verze zavádí zpoždění).
(Pro NUnit a MsTest jsou k dispozici i další běžci, které uvidíme v dalších článcích této série).
Instalace Specflow + Runner - Přejděte na Nástroje -> Správce balíčků NuGet -> Konzola správce balíčků.
Jakmile se otevře konzola správce balíčků - spusťte příkaz.
Install-Package SpecRun.SpecFlow
- Abychom mohli hodnoty prosadit, budeme potřebovat také pomoc s testovacím rámcem. NUnit může být jednou z možností a ostatní zahrnují MsTest atd. Chcete-li do aplikace nainstalovat rámec NUnit, 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 CalculatorApplication.
# 4) Jakmile se balíček nainstaluje, vytvořte v projektu 2 složky a pojmenujte je jako Funkce a Definice kroků pro ukládání souborů funkcí a vazeb kroků. Podrobně probereme důvod této organizace složek pro definice funkcí a kroků.
# 5) Nyní do složky funkcí přidejte nový soubor funkcí a pojmenujte jej jako CalculatorFeature.
Uvidíte, že ve výchozím nastavení má soubor prvků nějaký popis v Feature and Scenario.
Nahraďte to tím, co budeme testovat.
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) Generování definic kroků: Specflow poskytuje automatizovaný způsob generování vazeb / implementace pro různé kroky ve scénářích souboru funkcí. Toho lze dosáhnout kliknutím pravým tlačítkem na soubor funkcí a kliknutím na „Generovat definice kroku“.
Tento krok nezaručuje implementaci pro všechny kroky, ale snaží se ze všech sil seskupit běžné kroky ve scénářích a znovu použít co nejvíce vazeb. Dělá to však úkol vyhnout se standardnímu kódu pokaždé, když je třeba implementovat krok scénáře.
Po kliknutí „Generovat definice kroku“ „Zobrazí se okno se seznamem implementací identifikovaných kroků, které procesor detekoval. Lze vybrat nebo zrušit výběr podle požadavků.
V pozdějších částech se podíváme na další podrobnosti o rozevíracím seznamu Styl zobrazeném na výše uvedeném snímku obrazovky.
Prozatím nechme všechny vybrané s výchozím nastavením. Kliknutím na náhled se zobrazí snímek, jak bude implementace vypadat.
Po vytvoření definice kroku, pokud existují nějaké neimplementované kroky, 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é zatím nemají implementaci (nebo mají nějaké nejednoznačné definice kroků).
Ukázková obrazovka ukazuje, že níže:
Poznámka: Definice Step lze vytvořit také ručně - Libovolný soubor .cs s atributem (Binding) je implementační třída Step a Gherkinova syntaxe bude hledat shodu implementace daného kroku scénáře
Provedení
Jak jsme již přidali Specflow + Runner ve výše uvedené části, provádění scénářů je docela jednoduché (protože se jedná o zkušební verzi Specrun, zavádí variabilní zpoždění 10-20 s před spuštěním scénářů., Toto zpoždění není pro registrované varianty k dispozici. a další příchutě běžec Specrun jako NUnit a MsTest).
Pokud všechny kroky mají nebyl implementovány a pokud stále existují vazby, které mají čekající stav. Poté se výstup zobrazí jako nevyřízený.
Zkusme tyto testy / scénáře spustit v tomto okamžiku, kdy pro vazby neexistuje žádná implementace a všechny scénáře čekají na vyřízení.
Zkusme nyní implementovat třídu CalculatorApplication s metodami, které chceme testovat, tj. Sčítat, odčítat, násobit, dělit a sqrt.
Níže je ukázka kódu toho, 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, zkusme přijít na to, jak implementovat vazby pro každý z kroků scénáře.
Podívejme se na postupný přístup k jejich implementaci:
- Nejprve musíme mít instanci aplikace, kterou je třeba otestovat. Pro zjednodušení můžeme vytvořit instanci AUT (třída Application Under Test) v krokových vazbách a použít instanci instance pro skutečné volání různých metod / funkcí podle kroku, který je implementován.
- K zachycení vstupu a výstupu deklarujeme proměnné, které tyto hodnoty uchovávají, aby bylo možné volat funkce na instanci aplikace.
Podívejme se na implementaci end-to-end pro všechny vazby zapojené do ověřování funkce Přidat (zbytek scénářů to jednoduše rozšiřuje).
Scénář Add vypadá takto:
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 postupnou implementaci pro každý z těchto jednotlivých kroků. Pro použití všech krokových implementací deklarujeme instanci testované aplikace, stejně jako proměnné pro uchování vstupních a výstupních proměnných, jak je znázorněno 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 postupně na implementaci kroků scénáře.
Krok 1: Vzhledem k tomu, že jsem poskytl 70 a 20 tak jako vstupy.
(Given(@'I have provided (.*) and (.*) as the inputs')) public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1) { input1 = p0; input2 = p1; }
Zde jsme právě inicializovali vstupní proměnné s hodnotami předanými z kroků scénáře. p0 a p1 jsou hodnoty předávané z kroku scénáře a budou inicializovány jako 70 a 20.
Krok 2: Když stisknu přidat.
(When(@'I press add')) public void WhenIPressAdd() { output = app.add(input1, input2); }
Toto je krok Execution (nebo Act), kde se na testované aplikaci volá skutečná metoda. Všimněte si, že protože vstupní proměnné input1 a input2 již obsahují hodnoty předané v kroku 1, může instance aplikace volat metodu s těmito proměnnými.
Krok 3: - Pak by měl být výsledek 90.
(Then(@'the result should be (.*)')) public void ThenTheResultShouldBe(double p0) { Assert.AreEqual(p0, output); }
Toto je krok Validace (nebo Assert), kde je výstup generován voláním metody a instance aplikace je ověřena oproti očekávanému výstupu.
Všimněte si, že Tvrdit použité klíčové slovo 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í hodnotu false, způsobí to selhání implementace Step a výsledek scénáře se zobrazí jako selhání.
jak přidat prvky pole v javě
Mějte také na paměti, že výstupní proměnná získá hodnotu z předchozího kroku, kdy byla volána skutečná metoda v instanci aplikace.
Podobně jako výše, implementace kroku pro zbytek kroků scénáře se provádějí stejným způsobem, rozdíl je ve volání různých metod na instanci aplikace a prosazování různých výstupních hodnot.
Jakmile jsou implementovány všechny kroky scénáře, lze testy provést.
Výsledný výstup bude vypadat takto:
Můžete si také prohlédnout výstup individuálního scénáře, který také uvádí výstup jednotlivých kroků:
Závěr
Doufám, že vám tento článek poskytne základní znalosti o tom, co je BDD a jaké jsou nástroje, které podporují BDD pro .NET, kde jsme pokryli Specflow.
Také jsme diskutovali o instalaci a spuštění souborů funkcí Specflow pomocí ukázkové aplikace.
Soubory kódu
Níže jsou uvedeny kódové soubory použité v aplikaci:
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; } } }
packages.config
Náš nadcházející výukový program vás seznámí s příkladem použití technologie Specflow a Selenium Webdriver od začátku do konce!
Doporučené čtení
- Výukové programy pro zatmění do hloubky pro začátečníky
- Výukový program TestLink: Laický průvodce nástrojem TestLink Test Management (výuka č. 1)
- Výukový program Bugzilla: Výukový program pro správu defektů
- Výukový program TestComplete: Komplexní průvodce nástrojem pro testování grafického uživatelského rozhraní pro začátečníky
- Výukový program pro automatizaci SeeTest: Průvodce nástrojem pro automatizaci mobilních testů
- Výukový program pro počítačové sítě: Průvodce Ultimate
- Výukový program pro testování přístupnosti WAVE
- Rámec BDD (Behavior Driven Development): Kompletní výukový program