Presentation is loading. Please wait.

Presentation is loading. Please wait.

© Hive Studios 2011 Ivan Pavlović, Hive Studios Visual C# MVP, MCT, CSM

Similar presentations


Presentation on theme: "© Hive Studios 2011 Ivan Pavlović, Hive Studios Visual C# MVP, MCT, CSM"— Presentation transcript:

1 © Hive Studios 2011 Ivan Pavlović, Hive Studios Visual C# MVP, MCT, CSM paki@hive-studios.com http://msforge.net/blogs/paki http://twitter.com/ipavlovi

2 © Hive Studios 2011 2 Little bit of slides, a lot of examples What is BDD Language Tools Demos

3 © Hive Studios 2011 3 Unit testing Acceptance / Customer testing Integration testing Performance testing Regression testing

4 © Hive Studios 2011 4 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 © Hive Studios 2011 5 Domain Specific Language Easy to understand by customers Simple sintax, few keywords Feature Background Scenario, Scenario Outline Given, When, Then Localized on 35+ languages

6 © Hive Studios 2011 6 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 © Hive Studios 2011 7 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 © Hive Studios 2011 8 Tools are generating *.feature files Cucumber – Ruby, http://cukes.info/http://cukes.info/ SpecFlow –.NET, http://specflow.orghttp://specflow.org Nunit, MSTest, MBUnit… …a lot of other tools

9 © Hive Studios 2011 9 1.User writes features & scenarios, clarify 2.SpecFlow generates one test per scenario 3.Developer runs test 4.Developer implements missing steps 5.Developer writes production code 6.Move to the next scenario

10 © Hive Studios 2011 10 … 7: Given some precondition 8: And some other precondition 9: When some action by the actor 10: Then some 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… }

11 © Hive Studios 2011 11 … 7: Given I have 5 apples 8: And I eat 2 of them 9: When someone asks how many apples I do have 10: Then I should answer “3 apples” [Given(@„I have (.*) apples")] public void SomePrecondition(int numberOfApples) { … do something… } [Given(@„ I eat (.*) of them")] public void SomePrecondition(int numberOfEatenApples) { … 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 © Hive Studios 2011 12 Scenario: Posting a valid entry Given I am on the posting page And I have filled out the form as follows | Label | Value | | Your name | Jakob | | Your comment | Das ist gut! | When I click the button labelled "Post" Then I should be on the guestbook page And the guestbook entries includes the following | Name | Comment | Posted date | | Jakob | Das ist gut! | (within last minute) | [Given(@"I have filled out the form as follows")] public void FillFormAsFollows(TechTalk.SpecFlow.Table table) { foreach (var row in table.Rows) { ….. Do something … } }

13 © Hive Studios 2011 13 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 © Hive Studios 2011 14 Scenario Outline: TC5 Given I have entered into the calculator And I have entered into the calculator When I press add Then the result should be on the screen Scenarios: addition | x | y | result| | 1 | 2 | 3 | | 2 | 2 | 4 | | 3 | -3 | 0 |

15 © Hive Studios 2011 15 It’s up to you! What you are testing? 1.Public Interfaces / Components 2.WebUI using browser automation WatiN, Selenium 3.WebUI using Request/Respons Http Get/Post 4.Win UI using automation White / Windows UI Automation

16 © Hive Studios 2011 16 Specflow http://specflow.org Gherkin https://github.com/aslakhellesoy/cucumber/wiki/gherkin White http://white.codeplex.com/ WatiN http://watiN.sourceforge.nethttp://watiN.sourceforge.net


Download ppt "© Hive Studios 2011 Ivan Pavlović, Hive Studios Visual C# MVP, MCT, CSM"

Similar presentations


Ads by Google