specflow tutorial ultimate guide bdd tool
Een complete gids voor Specflow en Behavior Driven Development (BDD) tutorial:
Wat is Specflow?
Specflow is een testraamwerk dat BDD-praktijken in .NET-framework ondersteunt. Het is een open source-framework dat wordt gehost op GitHub. Het helpt bij het gebruik van ATDD (Acceptance Test Driver Development) voor .NET-toepassingen. Hiermee kunnen we een scenario definiëren in gewoon Engels, gedefinieerd door augurken-taal die voor iedereen duidelijk te begrijpen is.
Er zijn verschillende tools voor het schrijven van tests in de BDD-aanpak zoals Cucumber / JBehave voor Java, Lettuce voor Python, Jasmine voor Javascript, Specflow voor .NET.
BDD (Behavior Driven Development) is een reeks praktijken of een benadering die vergelijkbaar is met TDD (Test Driven Development), die tot doel heeft de communicatiekloof tussen verschillende belanghebbenden, zoals producten, ontwikkelaars en testers, te overbruggen.
Het einddoel van de BDD-benadering is om zakelijke vereisten te creëren die door het hele team kunnen worden begrepen om misverstanden te voorkomen en om de functie die wordt ontwikkeld op de meest acceptabele manier te verzenden.
Een complete serie Specflow-zelfstudies:
Lees het Volledige Specflow-trainingsreeks voor een beter begrip van het concept.
Tutorial # 1: Inleiding tot Specflow BDD-tool (Deze tutorial)
Tutorial # 2: Specflow en selenium voorbeeld
Tutorial # 3: Specflow-binding en geavanceerde concepten
Tutorial # 4: Stap Argumenttransformaties en Specflow-tabellen
Tutorial # 5: Specflow Living-documentatie met augurken
Tutorial # 6: Specflow-rapportgenerator
Tutorial # 7: Specflow interviewvragen
Een kort overzicht van zelfstudies in de Specflow-serie:
Tutorial # | Omschrijving |
---|---|
7 | Specflow interviewvragen Een lijst met de meest populaire Specflow-interviewvragen en antwoorden met voorbeelden is bijgevoegd in deze tutorial zodat je elk Specflow-interview bij de eerste poging succesvol kunt kraken. |
1 | Inleiding tot Specflow BDD-tool (Deze tutorial) Deze inleidende tutorial legt je alles over Specflow in detail uit. Specflow is een testraamwerk dat BDD-praktijken in .NET-framework ondersteunt. Het is een open source-framework dat wordt gehost op GitHub. Het helpt bij het gebruik van ATDD (Acceptance Test Driver Development) voor .NET-toepassingen. |
twee | Specflow en selenium voorbeeld Deze tutorial zal zich concentreren op de integratie van Selenium met Specflow-framework door middel van een eenvoudig testscenario van video zoeken op YouTube-applicatie. U zult ook controleren hoe u gegevens over verschillende bindingen kunt delen via privéklasse-velden. |
3 | Specflow en selenium voorbeeld Deze tutorial zal zich concentreren op de integratie van Selenium met Specflow-framework door middel van een eenvoudig testscenario van video zoeken op YouTube-applicatie. U zult ook controleren hoe u gegevens over verschillende bindingen kunt delen via privéklasse-velden. |
4 | Stap Argumenttransformaties en Specflow-tabellen Deze informatieve Specflow-tutorial zal in detail uitleggen over Step Argument-transformaties die aangepaste typeconversies voor Specflow-argumenten mogelijk maken om standaardcode te vermijden en Specflow-tabellen zijn handig wanneer je veel velden / gegevens in één stap moet doorgeven in een gebruiksvriendelijke tabel. formaat. |
5 | Specflow Living-documentatie met augurken In deze Specflow-zelfstudie leert u hoe u goed uitziende, levende documentatie kunt genereren via een open source-framework, pickles genaamd, met behulp van uw bestaande Specflow-bestanden. |
6 | Specflow-rapportgenerator In deze Specflow Reporting-zelfstudie leert u hoe u Specflow-functietests kunt uitvoeren en HTML-rapporten kunt genereren via het uitvoerbare bestand Specflow. |
Laten we beginnen met de eerste tutorial in deze serie.
Wat je leert:
Inleiding tot Specflow BDD-tool
Bekijk de video-tutorial:
Hier is een video-tutorial over Specflow en gedragsgestuurde ontwikkeling:
Kenmerken van BDD
De belangrijkste kenmerken van BDD worden hieronder toegelicht:
# 1) Het probeert het gedrag van het systeem of de functie die wordt ontwikkeld te definiëren aan de hand van een voorbeeld of scenario. Als u bijvoorbeeld een eenvoudige rekenmachinetoepassing bouwt, zijn de verschillende gedragingen onder meer optellen, vermenigvuldigen, delen, enz.
Daarom zullen via BDD alle belanghebbenden eerst samenkomen om het gedrag van de applicatie, zoals Addition, te beslissen en scenario's hebben zoals hieronder weergegeven.
Als u de bovenstaande weergave ziet, is het een scenario in gewoon Engels dat voor iedereen duidelijk begrijpelijk is en de vereisten voor een functie duidelijk maakt (volgens de acceptatiecriteria). Daarom is de eerste stap het formuleren van deze vereisten.
#twee) Nu met een set van deze scenario's, schrijft de QA tests tegen deze en dit zal in eerste instantie mislukken omdat de functie nog niet is ontwikkeld.
# 3) Nu schrijft de ontwikkelaar een feature code en voert deze tests opnieuw uit.
# 4) De tests kunnen slagen of mislukken. Als dit niet lukt: refactorcode en herhaal het proces
# 5) Zodra de code-refactoring is voltooid, moeten alle scenario's / tests slagen.
Daarom gebruikt BDD in wezen de TDD-benadering en tilt het deze naar een hoger niveau door enkele gemeenschappelijke, gemakkelijk te begrijpen specificaties te hebben in de vorm van scenario's. Ze vertegenwoordigen ook de functiedocumentatie op zich.
Er zijn verschillende tools voor het schrijven van tests in de BDD-benadering, zoals Cucumber / JBehave voor Java, Lettuce voor Python , Jasmine voor Javascript, Specflow voor .NET.
sql ontwikkelaar interviewvragen en antwoorden pdf
In deze tutorial zullen we ons concentreren op Specflow.
Lees ook => Top BDD-tools en testkader
De sleutelwoorden - Gegeven, wanneer en toen
Uit de wereld van het testen van eenheden zijn de meesten van ons bekend met 3 A's, namelijk Arrange, Act en Assert. Nu, gegeven, wanneer en dan zijn de vervangers hiervoor in de BDD-wereld.
Laten we een Voorbeeld om elk van deze te begrijpen. Stel dat u een scenario opsomt voor het valideren van een product dat wordt toegevoegd aan het winkelwagentje van een e-commercetoepassing waarvoor u als eerste vereiste moet zijn aangemeld.
De specificatie kan als volgt worden geschreven:
Gegeven Dit wordt gebruikt om een reeks randvoorwaarden te beschrijven voor het scenario dat wordt gedefinieerd. In het voorbeeld is de voorwaarde van het scenario bijvoorbeeld een ingelogde klant. Vandaar het vergelijken met de Regelen analogie in een unit-test, de stapimplementatie moet ervoor zorgen dat er een aangemelde klant is.
Wanneer Dit wordt gebruikt om een actie of uitvoeringsstap te beschrijven. In het voorbeeld laat het zien dat de klant een product aan zijn winkelwagentje probeert toe te voegen. Daarom zorgt de stapimplementatie voor deze stap voor de simulatiecode om een product aan de winkelwagen toe te voegen. Dit kan worden vergeleken met de handelen stap in de Unit-tests.
Vervolgens Dit wordt gebruikt om het resultaat van het scenario te beschrijven en in wezen waar de validaties moeten worden geplaatst. Het kan worden vergeleken met de Beweren stap in de wereld van het testen van eenheden. In het voorbeeld hier zal de stapimplementatie bevestigen of het product daadwerkelijk is toegevoegd en de hoeveelheid hetzelfde is als die werd gekozen door de klant.
Het functiebestand
Het feature-bestand is in wezen een groep van meerdere scenario's voor de applicatie die wordt ontwikkeld of getest. Het kan ook eenvoudig worden gezien als verschillende modules van de applicatie waarmee de applicatie logisch kan worden gescheiden.
Bijvoorbeeld:
Een e-commercetoepassing kan besluiten om verschillende functiebestanden op hoog niveau te hebben, zoals:
- Login / Logout-functionaliteit
- Winkelmand
- Betaling etc.
Wat is Specflow?
Specflow is een tool die BDD-praktijken in .NET-framework ondersteunt. Het is een open source-framework dat wordt gehost op GitHub. Het helpt bij het gebruik van ATDD (Acceptance Test Driver Development) voor .NET-toepassingen.
Het binden van zakelijke vereisten voor een applicatie met behulp van het Specification By Example-paradigma helpt bij een beter begrip van het applicatiegedrag door alle belanghebbenden en resulteert daardoor in het verzenden van het product met de juiste verwachtingen.
Het maakt gebruik van Augurk syntaxis voor het maken van functies en scenario's. Het heeft ook een actieve discussie / ontwikkelaar forum
Specflow - Aan de slag
In deze sectie onderzoeken we het installeren van specflow in de Visual Studio IDE en het maken van functiebestanden voor een eenvoudige String Utility-toepassing.
Over voorbeeldtoepassing
We zullen in deze tutorial verschillende functies van het Specflow-framework illustreren met behulp van een rekenmachine-applicatie die functies / interfaces heeft om verschillende bewerkingen te bieden, zoals:
- 2 nummers optellen.
- 2 getallen aftrekken.
- 2 getallen delen en vermenigvuldigen.
- De vierkantswortel van het opgegeven getal vinden.
Specflow Installatie gids
De Specflow-installatie is een proces in twee stappen
# 1) De vereiste plug-ins installeren in de Visual Studio IDE.
- Om de specflow-plug-in te installeren, navigeert u naar Tools -> Extension & Updates.
- Klik nu op 'Online' in het linkerpaneel.
- Zoek nu naar specflow in het rechterpaneel.
- Selecteer in de zoekresultaten 'Specflow for Visual Studio 2017'.
#twee) Het project opzetten met feature-bestanden en stapdefinities.
- Maak een eenvoudig nieuw project in Visual Studio. We kunnen elk soort project maken, zoals Class Library / Console Application / Unit-testproject, enz. Voor de eenvoud beginnen we met een Class Library-project. Noem het project 'SpecflowBasic'.
- Om de Specflow-scenario's die we gaan maken uit te voeren, hebben we een testrunner nodig. Specflow biedt een runner uit de doos genaamd Specflow + Runner (dit is een betaalde versie en de gratis versie introduceert een vertraging).
(Er zijn ook andere hardlopers beschikbaar voor NUnit en MsTest die we in de verdere artikelen in deze serie zullen zien).
Specflow + Runner installeren - Navigeer naar Extra -> NuGet-pakketbeheer -> Pakketbeheerconsole.
Zodra de Package Manager-console is geopend, voert u de opdracht uit.
- Om de waarden te bevestigen, hebben we ook de hulp nodig van een testraamwerk. NUnit kan een van de opties zijn en de andere omvatten MsTest, enz. Om het NUnit-framework op de applicatie te installeren, opent u de Package Manager-console en typt u command.
# 3) Maak een nieuwe klasse met de naam 'CalculatorApplication' die onze te testen applicatie wordt. Dit is een eenvoudige klasse met functies om optellen / vermenigvuldigen / delen / vierkantswortel enz. Uit te voeren voor de gegeven invoer. Dit is hoe de klasse CalculatorApplication eruit ziet.
# 4) Zodra het pakket is geïnstalleerd, maakt u twee mappen in het project en noemt u ze Features en Step Definitions voor het opslaan van respectievelijk de feature-bestanden en step-bindingen. We zullen in detail de reden voor deze mappenorganisatie voor Feature & Step-definities bespreken.
# 5) Voeg nu in de features-map een nieuw Feature-bestand toe en noem het CalculatorFeature.
Je zou zien dat het feature-bestand standaard een beschrijving heeft in Feature en Scenario.
Vervang dat door wat we gaan testen.
# 6) Stapdefinities genereren: Specflow biedt een geautomatiseerde manier om bindingen / implementatie te genereren voor de verschillende stappen in feature file-scenario's. Dit kan worden bereikt door met de rechtermuisknop op het feature-bestand te klikken en te klikken op 'Generate Step Definitions'.
Deze stap garandeert geen implementatie voor alle stappen, maar het doet zijn best om de algemene stappen in scenario's te groeperen en zoveel mogelijk bindingen opnieuw te gebruiken. Het maakt echter de taak om standaardcode elke keer te vermijden wanneer een scenariostap moet worden geïmplementeerd.
Na het klikken 'Genereer stapdefinities' Er verschijnt een venster met de geïdentificeerde stapimplementaties die de processor heeft gedetecteerd. Men kan selecteren of deselecteren volgens de vereisten.
In de latere secties zullen we meer details bekijken over de vervolgkeuzelijst Stijl die wordt weergegeven in de bovenstaande schermafbeelding.
Laten we ze voorlopig allemaal geselecteerd houden met de standaardinstellingen. Als u op Voorbeeld klikt, ziet u een momentopname van hoe de implementatie eruit zal zien.
Na het maken van stapdefinities hebben de Feature-bestanden nog steeds een visuele manier om de niet-geïmplementeerde toepassingen te identificeren als er enkele niet-geïmplementeerde stappen zijn. Het toont die stappen in een andere kleur door het absoluut eenvoudig te maken om te weten dat er enkele stappen zijn die nog geen implementatie hebben (of onduidelijke stapdefinities hebben).
Een voorbeeldscherm geeft het volgende weer:
Notitie: De Step-definities kunnen ook handmatig worden gemaakt - Elk .cs-bestand met (Binding) Attribuut is een Step-implementatieklasse en de Gherkin-syntaxis zal zoeken naar de implementatie van de gegeven scenariostap
Uitvoering
Omdat we Specflow + Runner in de bovenstaande sectie al hebben toegevoegd, is het uitvoeren van de scenario's vrij eenvoudig (aangezien het een evaluatieversie van Specrun is, introduceert het een variabele vertraging van 10-20 seconden voordat de scenario's worden uitgevoerd., Deze vertraging is niet aanwezig voor geregistreerde varianten) en andere smaken van Specrun-runner zoals NUnit en MsTest).
Als alle stappen hebben niet geweest geïmplementeerd en of er nog steeds bindingen zijn die een status in behandeling hebben. Vervolgens wordt de uitvoer weergegeven als in behandeling.
Laten we proberen deze tests / scenario's op dit punt uit te voeren als er geen implementatie is voor de bindingen en de scenario's allemaal in behandeling zijn.
Laten we nu proberen de klasse CalculatorApplication te implementeren met de methoden die we willen testen, d.w.z. optellen, aftrekken, vermenigvuldigen, delen en sqrt.
Hieronder vindt u een codevoorbeeld van hoe onze klasse CalculatorApplication eruit ziet:
Zodra de applicatie klaar is, gaan we proberen manieren te vinden om de bindingen voor elk van de scenariostappen te implementeren.
Laten we eens kijken naar de stapsgewijze aanpak om deze te implementeren:
- Ten eerste hebben we een instantie van de applicatie nodig die moet worden getest. Voor de eenvoud kunnen we de AUT (Application Under Test-klasse) instantiëren in stapbindingen en de geïnstantieerde instantie gebruiken om daadwerkelijk verschillende methoden / functies aan te roepen volgens de stap die is geïmplementeerd.
- Om de invoer en uitvoer vast te leggen, declareren we variabelen om deze waarden vast te houden om functies op de applicatie-instantie aan te roepen.
Laten we eens kijken naar de end-to-end-implementatie voor alle bindingen die betrokken zijn bij het valideren van de Add-functionaliteit (de rest van de scenario's breiden dit eenvoudig uit).
Het scenario Toevoegen ziet er uit zoals hieronder weergegeven:
Laten we eens kijken naar de stapimplementatie voor elk van deze afzonderlijke stappen. Voor het gebruik van alle stapimplementaties declareren we een exemplaar van de te testen applicatie en variabelen om invoer- en uitvoervariabelen vast te houden, zoals hieronder wordt weergegeven:
Laten we de implementatie van scenariostappen een voor een bekijken.
Stap 1: Gegeven heb ik 70 en 20 verstrekt zoals de ingangen.
Hier hebben we zojuist de invoervariabelen geïnitialiseerd met de waarden die zijn doorgegeven vanuit de scenariostappen. p0 en p1 zijn de waarden die worden doorgegeven vanuit de scenariostap en worden geïnitialiseerd als respectievelijk 70 & 20.
Stap 2: Als ik op toevoegen druk.
Dit is de uitvoeringsstap (of actiestap) waarbij de feitelijke methode wordt aangeroepen op de te testen applicatie. Merk op dat aangezien de invoervariabelen input1 en input2 al de waarden bevatten die zijn doorgegeven in Stap1, de applicatie-instantie de methode met deze variabelen kan aanroepen.
Stap 3: - Dan zou het resultaat 90 moeten zijn.
Dit is de validatiestap (of bevestig) waarbij de uitvoer wordt gegenereerd door de methodeaanroep en de applicatie-instantie wordt gevalideerd ten opzichte van de verwachte uitvoer.
Merk op dat de Beweren gebruikt trefwoord is van NUnit Framework, dat true of false retourneert, afhankelijk van de validatie / verwachting die is ingesteld. Als het false retourneert, zal de Step-implementatie mislukken en wordt het scenarioresultaat als mislukt weergegeven.
hoe u een website pen test
Houd er ook rekening mee dat de uitvoervariabele de waarde krijgt van de vorige stap waar de feitelijke methode werd aangeroepen op de applicatie-instantie.
Net als hierboven worden Step-implementaties voor de rest van de scenariostappen op dezelfde manier uitgevoerd, het verschil zit hem in het aanroepen van verschillende methoden op de applicatie-instantie en het bevestigen van verschillende uitvoerwaarden.
Zodra alle Scenario-stappen zijn geïmplementeerd, kunnen de tests worden uitgevoerd.
De resulterende uitvoer ziet er uit zoals hieronder weergegeven:
U kunt ook de uitvoer van het individuele scenario bekijken, waarin ook de uitvoer van afzonderlijke stappen wordt vermeld:
Gevolgtrekking
Ik hoop dat dit artikel je een basiskennis zou hebben gegeven van wat BDD is en wat de tools zijn die BDD voor .NET ondersteunen waar we Specflow hebben besproken.
We hebben ook gesproken over het installeren en uitvoeren van Specflow-functiebestanden met behulp van een voorbeeldtoepassing.
Code bestanden
De codebestanden die in de applicatie worden gebruikt, worden hieronder weergegeven:
RekenmachineFeatureSteps.cs
CalculatorApplication.cs
packages.config
Onze aanstaande tutorial zal u informeren over een end-to-end-voorbeeld van het gebruik van Specflow en Selenium Webdriver!
Aanbevolen literatuur
- Diepgaande Eclipse-zelfstudies voor beginners
- TestLink-zelfstudie: een handleiding voor leken voor TestLink-testbeheertool (Tutorial # 1)
- Bugzilla-zelfstudie: Praktische zelfstudie met hulpprogramma voor defectbeheer
- TestComplete-zelfstudie: een uitgebreide GUI-testtoolgids voor beginners
- Zie Testautomatiseringshandleiding: een handleiding voor mobiele testautomatiseringstools
- Zelfstudie voor computernetwerken: de ultieme gids
- Tutorial WAVE Accessibility Testing Tool
- BDD-framework (Behavior Driven Development): een complete zelfstudie