BDD (behavior-driven development) suunnittelumenetelmän käyttö ...
Transcript of BDD (behavior-driven development) suunnittelumenetelmän käyttö ...
![Page 1: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/1.jpg)
BDD (behavior-driven development) suunnittelumenetelmän käyttö open
source projektissa, case: SpecFlow/.NET.
Pekka Ollikainen
Open Source Microsoft CodePlex
![Page 2: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/2.jpg)
![Page 3: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/3.jpg)
bio
• Verkkosivustovastaava Suomen Sarjakuvaseura ry alk. 08/2013
• Web-ohjelmoinnin erikoistumisopinnot Arcada AMK 2009-2010
• HUK Tampereen yliopisto
![Page 4: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/4.jpg)
![Page 5: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/5.jpg)
![Page 6: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/6.jpg)
Scripts for all Reasons 1
• Elokuvan tekemisen ja ohjelmistokehityksen samanalaisuuksia:
• Käsikirjoitus(script) vs. vaatimusmäärittely(requirments)
• Storyboards vs. Mockups
• Digital film distribution vs. Distrobution via app stores
![Page 7: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/7.jpg)
Scripts for all Reasons 2
• Käsikirjoitus/vaatimusmäärittely dokumentit kertovat millainen elokuva/ohjelmisto halutaan tehdä ja miten
• Käsikirjoitus koostuu kohtauksista, vaatimusmäärittelyt featureista(feature) ja skenaarioista(scenarios)
• Käsikirjoituksella on muoto ja funktio
• Vaatimusmäärittelyllä muoto ja ohjelmistolla on funktio
![Page 8: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/8.jpg)
Behaviour Driven Developement
• behavior-driven development (BDD) is a software development process based on test-driven development
• how software development should be managed by both business interests and technical insight
• use of specialized software tools to support the development process
![Page 9: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/9.jpg)
Cucumber
• Gherkin language
• Documenting examples way that it can be easily understood both by stakeholders and by Cucumber
• Gherkin can be call a programming language but its primary goal is human readibility
• Write automate tests that can be read like documentation
![Page 10: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/10.jpg)
Gherkin syntax
• Structure and meaning using set of special keywords
• Feature
• Background
• Scenario
• Given
• When
• Then
![Page 11: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/11.jpg)
Cucumber:Living documentation
• Living: Cucumber testaa kehitettävää järjestelmää jatkuvasti automaattisesti, että se toimisi kunnolla kun otetaan lopulta käyttöön..
• Documentation: Cucumber fasiloi hyvän keskustelun/kommunikaation siitä, miten sovellus toimii nyt ja miten se pitäisi toimia jatkossa..
![Page 12: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/12.jpg)
Esimerkkikoodia Feature: Write blog
As a blog owner
I can write new blog post
Scenario: Write blog
Given I am on the blog homepage
When I click "New Post" link
And I fill "My first blog" as Title
And I fill "Test content" as content
And I click "Post" button
Then I should see the blog I just posted
![Page 13: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/13.jpg)
Esimerkkikoodia Feature: Credit card payment
As a online shopper
I want to pay through my Credit card
So that I can buy stuff online instead of
visiting the super market
Scenario: transaction completed
successfully
Given ...
When ...
Then ...
Scenario: Credit card is invalid
Given ...
When ...
Then ...
![Page 14: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/14.jpg)
How Cucumber executes a
scenario
![Page 15: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/15.jpg)
![Page 16: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/16.jpg)
Write scenario at Gherkin
![Page 17: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/17.jpg)
Add SpecFlow Library
![Page 18: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/18.jpg)
GenerateStepDefinition
![Page 19: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/19.jpg)
Does the Step definitions have matching C# code?
![Page 20: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/20.jpg)
FAIL!!Test Execution Report
![Page 21: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/21.jpg)
Calling for Matching C#Code..
![Page 22: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/22.jpg)
How to apply MVC to Mobile
• Applying MVC to mobile projects http://senchaproject.codeplex.com/wikipage?title=How%20to%20apply%20MVC%20to%20mobile%20project&referringTitle=Home
![Page 23: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/23.jpg)
Our scenarios
Scenario:Android device Given Android access the application And OS configuration N When Switcher is On Then UI will be rendered with UI library X Scenario:iPhone device Given iPhone access the application And OS configuration N When Switcher is On Then UI will be rendered with UI library Y Scenario:Windows phone device Given Windows phone access the application And OS configuration N When Switcher is On Then UI will be rendered with UI library Z
![Page 24: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/24.jpg)
Project statistics
![Page 25: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/25.jpg)
History
![Page 26: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/26.jpg)
lähteet:
• CODEMagazine, May/June 2013
• Instant Cucumber BDD How-to, Packt 2013
• The Cucumber Book, The Pragmatic Programmers,2012
• Cucumber Recipes, The Pragmatic Programmers,2013
• Projektiyhdistys/PRY/Projektitoiminta 1/2013
![Page 27: BDD (behavior-driven development) suunnittelumenetelmän käyttö ...](https://reader034.fdocuments.net/reader034/viewer/2022050807/5874ce771a28ab981f8bb48e/html5/thumbnails/27.jpg)
Johtopäätöksiä Cucumber
• Luonnollinen kieli ja keskustelun rakenteet ohjelmistosuunnittelun lähtökohtana
• ”demokraatinen”suunnittelukieli
• +Vaihteittainen työskentelymalli
• -käyttöönotto ohjelmistohankkessa ei yksinkertaista