SlideServe
Menu
Préférences
© SlideServe · v2026

Behavior Driven Development Using Visual Studio 2010 And SpecFlow

olive avatar
16 diapositives · 338 Views · Jul 23, 2014

Behavior Driven Development Using Visual Studio 2010 And SpecFlow. Ivan Pavlovi ć, Hive Studios Visual C# MVP, MCT , CSM paki@hive-studios.com http://msforge.net/blogs/paki http://twitter.com/ipavlovi. Agenda. Little bit of s lides , a lot of examples What is BDD Language Tools

Behavior Driven Development Using Visual Studio 2010 And SpecFlow - slide 1
01 / 16Behavior Driven Development Using Visual Studio 2010 And SpecFlow
1 / 17

Télécharger la présentation

Behavior Driven Development Using Visual Studio 2010 And SpecFlow
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Behavior Driven DevelopmentUsing Visual Studio 2010 AndSpecFlow Ivan Pavlović, Hive Studios Visual C# MVP, MCT, CSM paki@hive-studios.com http://msforge.net/blogs/paki http://twitter.com/ipavlovi

  2. Agenda • Little bit of slides, a lot of examples • What is BDD • Language • Tools • Demos

  3. Types of Test • Unit testing • Acceptance / Customer testing • Integration testing • Performance testing • Regression testing

  4. BehaviourDrivenDevelopment • One of agile development techniques • Specification driven by examples • Clear communication between domain experts, developers, testers and customers BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters. - Dan North (http://dannorth.net/)

  5. Gherkin • DomainSpecificLanguage • Easy to understand by customers • Simple sintax, few keywords • Feature • Background • Scenario, Scenario Outline • Given,When, Then • Localized on 35+ languages

  6. Example 1: Feature: Some descriptive text of what is desired 2: In order to realize a named business value 3: As an explicit system actor 4: I want to gain some beneficial outcome which furthers the goal 5: 6: Scenario: Some determinable business situation 7: Given some precondition 8: And some other precondition 9: When some action by the actor 10: And some other action 11: And yet another action 12: Then some testable outcome is achieved 13: And something else we can check happens too 14: 15: Scenario: A different situation 16: ...

  7. Real example Feature: Serve coffee In order to earn money Customers should be able to buy coffee at all times Scenario: Buy last coffee Given there are 1 coffees left in the machine And I have deposited 1$ When I press the coffee button Then I should be served a coffee

  8. Tools • Tools are generating *.feature files • Cucumber – Ruby, http://cukes.info/ • SpecFlow– .NET, http://specflow.org • Nunit, MSTest, MBUnit… • …a lot of other tools

  9. Putting All The Pieces Together • User writes features & scenarios, clarify • SpecFlow generates one test per scenario • Developer runs test • Developer implements missing steps • Developer writes production code • Move to the next scenario

  10. Mapping Step Definitions … 7: Given some precondition 8: And some other precondition 9: When some action by the actor 10: Thensome testable outcome is achieved [Given(@„some precondition")] public void SomePrecondition() { … do something… } [Given(@„some other precondition")] public void SomePrecondition() { … do something… } [When(@„some action by the actor")] public void SomePrecondition() { … do something… } [Then(@”some verifiable result”)] Public void VerifyResult() { … do assert… } Test Run

  11. Step Arguments - RegEx … 7: GivenI have 5 apples 8: AndI eat 2 of them 9: Whensomeone asks how many apples I do have 10: Then I should answer “3 apples” [Given(@„I have (.*) apples")] public void SomePrecondition(intnumberOfApples) { … do something… } [Given(@„ I eat (.*) of them")] public void SomePrecondition(intnumberOfEatenApples) { … do something… } [When(@„ someone asks how many apples I do have")] public void SomePrecondition() { … do something… } [Then(@” I should answer \“(.*) apples\””)] Public void VerifyResult(int expected) { … do assert of expected … }

  12. Table Parameters Scenario: Posting a validentry Given I am on the postingpage And I havefilledout the form as follows | Label | Value | | Yourname | Jakob | | Yourcomment | Das ist gut! | When I click the buttonlabelled "Post" Then I should be on the guestbookpage Andthe guestbookentriesincludes the following | Name | Comment | Posted date | | Jakob | Das ist gut! | (within last minute) | [Given(@"I havefilledout the form as follows")] publicvoidFillFormAsFollows(TechTalk.SpecFlow.Tabletable) { foreach(var row in table.Rows) { ….. Do something … } }

  13. Scenario outline - refactoring Scenario: TC1 Add two numbers Given I have entered 1 into the calculator And I have entered 2 into the calculator When I press add Then the result should be 3 on the screen Scenario: TC2 Add two numbers Given I have entered 2 into the calculator And I have entered 2 into the calculator When I press add Then the result should be 4 on the screen

  14. Scenario outline - refactoring Scenario Outline: TC5Given I have entered <x> into the calculatorAnd I have entered <y> into the calculatorWhen I press addThen the result should be <result> on the screenScenarios: addition| x | y | result|| 1 | 2 | 3 || 2 | 2 | 4 | | 3 | -3 | 0 |

  15. How to Implement Step Definitions? • It’s up to you! • What you are testing? • PublicInterfaces / Components • WebUIusingbrowserautomation • WatiN, Selenium • WebUIusingRequest/Respons • Http Get/Post • Win UI usingautomation • White / Windows UI Automation

  16. Resources • Specflow • http://specflow.org • Gherkin • https://github.com/aslakhellesoy/cucumber/wiki/gherkin • White • http://white.codeplex.com/ • WatiN • http://watiN.sourceforge.net