SlideShare a Scribd company logo
Executable Specification Ürgo Ringo
Idea Tests == Examples == Spec
Collaboration
Living documentation
 
Automation
Level of Automation
Tools Concordion
Cucumber
easyb
GreenPepper
jBehave
Automation layers
Specification in jBehave Scenario : new entry is added Given  that  Urgo  published new entry "Hello World" in his  blog When   aggregator  runs Then  aggregated  blog  contains 1 entry with title "Hello World" Scenario : user without Confluence account has his full name as author Given  that user with author name urgo.ringo does not have Confluence account and he published new entry "Hello World" in his blog When  aggregator runs Then  aggregated blog contains entry "Hello World" with author "Urgo Ringo" Scenario : user with Confluence account has his username as author Given  that Urgo has Confluence account with username urgo.ringo and he published new entry "Hello World" in his blog When  aggregator runs Then  it contains entry "Hello World" with author linked to Confluence account with username urgo.ringo
Steps public   class  AddNewEntrySteps { ... @BeforeScenario public   void  setup() { feed  =  new  SimpleSyndFeed(); plugin  =  new  Confluence( currentDateProvider ); plugin .registerBlogToAggregator( feed ); } ...  @AfterScenario public   void  reset() { plugin .uninstallAggregator(); } }

More Related Content

PPTX
Heroku
PPTX
Swift LA Meetup at eHarmony- What's New in Swift 2.0
RTF
appledoc_style
ODP
Consume RESTful APIs with $resource and Restangular
PDF
Git Workshop
PPT
Introduction to JQuery
PDF
Remote Config REST API and Versioning
PDF
Introduction to Retrofit
Heroku
Swift LA Meetup at eHarmony- What's New in Swift 2.0
appledoc_style
Consume RESTful APIs with $resource and Restangular
Git Workshop
Introduction to JQuery
Remote Config REST API and Versioning
Introduction to Retrofit

What's hot (15)

PPTX
Introduction To Git Workshop
PPTX
Annotation processor and compiler plugin
ODP
Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...
PDF
Analysing Github events with Neo4j
PDF
Build a bot workshop async primer - php[tek]
PDF
Sanic: Experience Blazing Fast Python Web Framework
PDF
Using Composer with WordPress - 2.0
PPTX
1. CodeIgniter 1
PDF
Create a fake REST API without writing a single line of code
PDF
Le Wagon - React 101
PDF
Design for succcess with react and storybook.js
PDF
Gigigo Rails Workshop
PPTX
Create first-web application-googleappengine
PPTX
Plug in development
PDF
WWDC18 share
Introduction To Git Workshop
Annotation processor and compiler plugin
Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...
Analysing Github events with Neo4j
Build a bot workshop async primer - php[tek]
Sanic: Experience Blazing Fast Python Web Framework
Using Composer with WordPress - 2.0
1. CodeIgniter 1
Create a fake REST API without writing a single line of code
Le Wagon - React 101
Design for succcess with react and storybook.js
Gigigo Rails Workshop
Create first-web application-googleappengine
Plug in development
WWDC18 share
Ad

Viewers also liked (11)

PDF
Beautiful java script
PDF
Introduction to TDD and BDD
PDF
Lunch and learn: Cucumber and Capybara
PPTX
Automated Acceptance Tests & Tool choice
PPTX
BDD testing with cucumber
PPTX
Test automation with Cucumber-JVM
PDF
Test and Behaviour Driven Development (TDD/BDD)
PDF
Behavior Driven Development and Automation Testing Using Cucumber
PDF
Behavior Driven Development with Cucumber
PDF
Writing Software not Code with Cucumber
PDF
8 Tips for an Awesome Powerpoint Presentation
Beautiful java script
Introduction to TDD and BDD
Lunch and learn: Cucumber and Capybara
Automated Acceptance Tests & Tool choice
BDD testing with cucumber
Test automation with Cucumber-JVM
Test and Behaviour Driven Development (TDD/BDD)
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development with Cucumber
Writing Software not Code with Cucumber
8 Tips for an Awesome Powerpoint Presentation
Ad

More from Ürgo Ringo (6)

PPT
Specificationby example
ODP
Command and Query Responsibility Segregation
PDF
Small tools to improve your (agile) life
ODP
Domain Driven Design
ODP
Unit testing with Easymock
ODP
RIA implementation patterns
Specificationby example
Command and Query Responsibility Segregation
Small tools to improve your (agile) life
Domain Driven Design
Unit testing with Easymock
RIA implementation patterns

Recently uploaded (20)

PDF
Hybrid model detection and classification of lung cancer
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
TLE Review Electricity (Electricity).pptx
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
1. Introduction to Computer Programming.pptx
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
Enhancing emotion recognition model for a student engagement use case through...
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
STKI Israel Market Study 2025 version august
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Architecture types and enterprise applications.pdf
PDF
Hindi spoken digit analysis for native and non-native speakers
PPT
Module 1.ppt Iot fundamentals and Architecture
Hybrid model detection and classification of lung cancer
A comparative study of natural language inference in Swahili using monolingua...
A novel scalable deep ensemble learning framework for big data classification...
TLE Review Electricity (Electricity).pptx
NewMind AI Weekly Chronicles - August'25-Week II
1. Introduction to Computer Programming.pptx
Developing a website for English-speaking practice to English as a foreign la...
Enhancing emotion recognition model for a student engagement use case through...
Final SEM Unit 1 for mit wpu at pune .pptx
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
STKI Israel Market Study 2025 version august
OMC Textile Division Presentation 2021.pptx
Univ-Connecticut-ChatGPT-Presentaion.pdf
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
NewMind AI Weekly Chronicles – August ’25 Week III
Architecture types and enterprise applications.pdf
Hindi spoken digit analysis for native and non-native speakers
Module 1.ppt Iot fundamentals and Architecture

Executable specifiaction

  • 2. Idea Tests == Examples == Spec
  • 5.  
  • 10. easyb
  • 14. Specification in jBehave Scenario : new entry is added Given that Urgo published new entry "Hello World" in his blog When aggregator runs Then aggregated blog contains 1 entry with title "Hello World" Scenario : user without Confluence account has his full name as author Given that user with author name urgo.ringo does not have Confluence account and he published new entry "Hello World" in his blog When aggregator runs Then aggregated blog contains entry "Hello World" with author "Urgo Ringo" Scenario : user with Confluence account has his username as author Given that Urgo has Confluence account with username urgo.ringo and he published new entry "Hello World" in his blog When aggregator runs Then it contains entry "Hello World" with author linked to Confluence account with username urgo.ringo
  • 15. Steps public class AddNewEntrySteps { ... @BeforeScenario public void setup() { feed = new SimpleSyndFeed(); plugin = new Confluence( currentDateProvider ); plugin .registerBlogToAggregator( feed ); } ... @AfterScenario public void reset() { plugin .uninstallAggregator(); } }
  • 16. <given> @Given ( &quot;that Urgo published new entry \&quot;$title\&quot; in his blog&quot; ) public void newBlogEntryPublished(String title) { plugin .installAggregator( &quot;urgo.ringo&quot; ); publishNewBlogEntry(title); }
  • 17. <when> @When ( &quot;aggregator runs&quot; ) public void aggregatorRuns() { plugin .runAggregator(); }
  • 18. <then> @Then ( &quot;aggregated blog contains 1 entry with title \&quot;$title\&quot;&quot; ) public void aggregatedBlogContainNewEntry(String title) { List<ContentEntityObject> entries = plugin .getAggregatedEntries(); assertEquals (1, entries.size()); assertEquals (title, entries.get(0).getTitle()); }
  • 19. Application runner public class Confluence { public void registerBlogToAggregator(SyndFeed feed) { ... } public void uninstallAggregator() { ... } public void installAggregator(String aggregatedAuthor) { ... } public void createUserAccount(String username) { ... } public void runAggregator() { ... } public List<ContentEntityObject> getAggregatedEntries() { ... } }
  • 21. What is the problem?