1 / 16

Behavior Driven Development Using Visual Studio 2010 And SpecFlow

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

olive
Download Presentation

Behavior Driven Development Using Visual Studio 2010 And SpecFlow

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

More Related