SlideShare une entreprise Scribd logo
1  sur  39
Patterns and practices of building
Gherkin based
living documentations
Building SpecLog with SpecFlow
CHRISTIAN HASSA & GASPAR NAGY
ch@techtalk.at & gn@techtalk.at
19th November 2010
Agenda
Walkthrough: Using SpecFlow in a project
• Gathering requirements & formulating acceptance
criteria
• Development & testing concept
• Build & release process, reports
Special challenges
• User Stories vs. Features
• Synchronization Scenarios
• Tool Widgets
• Automation Helpers
About Us
Project Sponsor SpecFlow
Product Owner, Coach
Twitter: @chr99ha
Gáspár Nagy
TechTalk
Committer to SpecFlow
http://gasparnagy.blogspot.com
Twitter: @gasparnagy
Christian Hassa
TechTalk
TechTalk is a software development and
consulting company with ~60 people
located in Vienna, Budapest and Zürich.
We focus on Scrum and .NET.
The research is partially supported by the
project of Eötvös Loránd University:
TÁMOP-4.2.1.B-09/1/KMR-2010-0003
About You
Who knows SpecFlow?
Who knows Cucumber or jBehave
(Gherkin)?
Process Walkthrough
Using SpecFlow in a project
Our Domain: SpecLog
A product developed by TechTalk
managing flow of requirements in agile projects
integrates with SpecFlow and TFS
Team size: ~ 7 people
WPF SmartClient
• central repository
or stand-alone
• occasionally
connected
Deriving scope from goals … is not easy
Deriving user stories from …
… vision/business goals: too far away
… actor goals: not focused enough
Roadmap helped to focus
First milestone goal:
„use SpecLog for SpecLog“
(even if it hurts …)
vision
Product
Backlog
Epic
User Story
Epic
User Story
User Story
User Story
User Story
business
goals
Roadmap
derive scope from goals
actor
goals
Our first milestone
Some actor-goals for our first milestone
Illustrating user stories with examples:
acceptance criteria
Product
Backlog
Epic
User Story
Epic
User Story
User Story
User Story
User Story
Sprint
Backlog
illustrate
using
examples
UI Scribbles as key examples
Acceptance Criteria
as key examples
US
US
US
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Refining: Formalization in Gherkin
• Formalization in pairs
• Ideal: Developer + Product Owner
• Scenario tags: @specifiedSprint
Backlog
US
US
US
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria Given
When
Then
…
…
…
refine
the
specification
UI Scribbles as key examples
specification with examples
Acceptance Criteria
as key examples
Automating Gherkin scenarios
Automation of Gherkin scenarios
… too costly on UI (custom WPF UI)
… instead on controller
Sprint
Backlog
US
US
US
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria Given
When
Then
…
…
…
SpecFlow
{ … }
{ … }
{ … }
automate
literally
specification with examples
executable
specification
Scenario tags:
@automated
@manual
Development concept
In development we have to find the right balance between…
• High quality – the application will be used by a broad
audience
• Changing directions – the implementation also serves as a
test for the concept
Our goals are
• Develop the application outside-in
• Preferable AC by AC
• Automate AC through controller (view model) layer
• Design concept but no detailed design upfront
• Many things from XP (TDD, Pair programming, common
code ownership)
Demo
Outside-in Development
Task Board
The tasks are aligned to the AC
We use TFS with Excel fronted
Build & Release Process, Reports
We wanted to build a confortable infrastructure that
supports our process
• CI
• Short release cycle through automated build
• Build quality measures
• Reports
Automated Builds - CI
Runs on every check-in (no gated check-in)
No versioning
Builds the application & runs unit tests (*.Tests)
• Fails if any of these fails
Automated Builds – Acceptance
Triggered by check-ins, cumulated (1h)
Verifies build quality
• Executes automated acceptance tests
• Detects version compatibility issues
Produces ready-to-use release
• Increments version number
• Produces an installer
• Generates test execution report (“living
documentation”)
• Publishes the results on a website
Build Result Web
Test Execution Report
Test Execution Report
Executing Acceptance Test
Implementation of an AC can be a longer process
• Might need several days
• Might be developed by more then one person
• Execution of the entire test suite might be long
We cannot expect that all acceptance test passes all the
time
What we rather need is
• Ensure that “done” stories are still working
• Get a feedback about the stories currently
implemented
Executing Acceptance Test
Testing
Developer: Smoke testing of UI
• tag user story with „TestIt“
Tester: exploratory testing of all „TestIt“ user stories
• time boxed, once a week
Limited number of manually executed workflow tests
• extended with new features
Bugs: formulized to Gherkin acceptance criteria
• when automation possible
• grouped to user story on backlog when not fixed
immediately
Special Challenges
in applying BDD
Living documentation
Sprint
Backlog
US
US
US
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria
Acceptance
Criteria Given
When
Then
…
…
…
F
F F
F F F
F F
AC
AC
AC
AC
AC
Automation
{ … }
{ … }
{ … }
refine
the
specification
validate
continuously
specification with examples
executable
specification
living documentation
Features “done”Current sprint
AC
US
AC
AC
AC
US
AC
AC
merge
when
accepted
validate
continuously
Evolving the living documentation
Product/Sprint Backlog
User Story 1
AccCrit 1
AccCrit 2
User Story 2
AccCrit 3
AccCrit 4
Living Documentation
Feature 1
AccCrit 1
AccCrit 2
Feature n
AccCrit 4
AccCrit m
User Story n
AccCrit 5
AccCrit m
AccCrit 3
AccCrit 5
„Done“
• Next possible increments of
product (units of work)
• Organized /refined according
to priority, value, effort, risk,
actor-goals, …
• Product Documentation
• Organized/refined according to
functionality and overview
• Versioned/maintained with
source code
Synchronization Scenarios
The application should support collaborative editing with
multiple occasionally connected clients
• This is a general cross-cutting concern
• Hard to test manually
• Essential feature of the application
Solution: we concretize this requirement for each story
where it can be applied
• This is part of a check list – so we don’t forget it
Synchronization Scenarios
Synchronization of a user story “value text”
@automated @done
Scenario: should synchronize value text of user story
Given a workspace for a shared repository
And the workspace is active on 'Client1'
And the repository is open on 'Client2'
And a user story is in the repository
When I set the value text of the user story to 'some value' on 'Client1'
And all changes are synchronized
Then the user story in the repository on 'Client2' should have the value
text 'some value'
Synchronization Scenarios
Specifying goal text in “local mode” – no need to mention clients
@automated @done
Scenario: should be able to specify value text for user story through
card
Given an active workspace for a repository
And a user story in the repository
And a card for the user story on the workspace
When I set the value text of the user story to 'some value'
Then the user story in the repository should have the value text 'some
value'
Synchronization Scenarios
Specifying AC headline (title) – no need to mention workspaces even
@automated @done
Scenario: Acceptance criteria can be described with a headline
Given a user story
And an acceptance criterion for the user story
When I set the headline of the acceptance criterion to 'some headline'
Then the acceptance criterion should have the headline 'some headline' in
the repository
[Given("a user story")]
public void GivenAUserStory()
{
EnsureOpenStandaloneRepository();
GivenAUserStoryIsInTheRepository();
}
Synchronization Scenarios
Conflict resolution – for the winner
@automated @done @conflict_resolution
Scenario Outline: first synchronized concurrent modification of requirement goal text should win
Given a workspace for a shared repository
And the workspace is active on 'Client1'
And the workspace is active on 'Client2'
And a <requirement> is in the repository
When I set the goal text of the <requirement> to 'some goal1' on 'Client1'
And I set the goal text of the <requirement> to 'some goal2' on 'Client2'
And all changes are synchronized by 'Client1'
And all changes are synchronized by 'Client2'
And all changes are synchronized by 'Client1'
Then the <requirement> in the repository should have the goal text 'some goal1'
Examples:
| requirement |
| business goal |
| actor-goal |
| user story |
Synchronization Scenarios
Conflict resolution – for the looser
@automated @specified @conflict_resolution
Scenario Outline: concurrent modifications of goal text of requirements that lose should be
captured as conflicts
Given a workspace for a shared repository
And the workspace is active on 'Client1'
And the workspace is active on 'Client2'
And a <requirement> is in the repository
And the <requirement> has no conflicts
When I set the goal text of the <requirement> to 'some goal1' on 'Client1'
And I set the goal text of the <requirement> to 'some goal2' on 'Client2'
And all changes are synchronized by 'Client1'
And all changes are synchronized by 'Client2'
Then the <requirement> in the repository should have the conflict 'conflicting goal: some
goal2' introduced by 'Client2'
Examples:
| requirement |
| business goal |
| actor-goal |
| user story |
Dealing with cross-cutting concepts
Tool-widget
• Floats over workspace
• Can be open/closed using control bar
• Position kept per user session
Formalizing tool widget concept in Gherkin
examples for
tool widget
concept
examples of
tool widgets
(extended over time)
manual test
that there is a
specific tool widget
instance
TestContext, TestClient, TestServer &
Automation Drivers
When automating acceptance criteria, similar tasks have
to be solved from different step bindings
• These should also communicate with each other
Given a user story
And an acceptance criterion for the user story
• TestContext is a class that is injected into the step
binding classes to provide a platform for the
communication
• TestClient, TestServer – entry points for the
automation of a client or a server instance
• Automation Drivers – grouping together the
automation code for automating a class (view model)
Demo
TestContext, TestClient, TestServer & Automation
Drivers
Questions and Answers
Thank you!
More information at
• www.specflow.org
• www.speclog.org
• www.techtalk.at
www.specflow.org

Contenu connexe

Tendances

Trunk-Based Development and Toggling
Trunk-Based Development and TogglingTrunk-Based Development and Toggling
Trunk-Based Development and TogglingBryan Liu
 
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчетыQA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчетыQAFest
 
"Production Driven Development", Serhii Kalinets
"Production Driven Development", Serhii Kalinets"Production Driven Development", Serhii Kalinets
"Production Driven Development", Serhii KalinetsFwdays
 
Introduction to Bdd and cucumber
Introduction to Bdd and cucumberIntroduction to Bdd and cucumber
Introduction to Bdd and cucumberNibu Baby
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAdam Stephensen
 
Continuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsContinuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsSunil Dalal
 
Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013Brian Sam-Bodden
 
Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choicetoddbr
 
An Introduction to Enterprise Design Patterns
An Introduction to Enterprise Design PatternsAn Introduction to Enterprise Design Patterns
An Introduction to Enterprise Design PatternsAdam Stephensen
 
New York Kubernetes: CI/CD Patterns for Kubernetes
New York Kubernetes: CI/CD Patterns for KubernetesNew York Kubernetes: CI/CD Patterns for Kubernetes
New York Kubernetes: CI/CD Patterns for KubernetesAndrew Phillips
 
Refactoring Design Patterns the Functional Way (in Scala)
Refactoring Design Patterns the Functional Way (in Scala)Refactoring Design Patterns the Functional Way (in Scala)
Refactoring Design Patterns the Functional Way (in Scala)Kfir Bloch
 
Automated Acceptance Tests in .NET
Automated Acceptance Tests in .NETAutomated Acceptance Tests in .NET
Automated Acceptance Tests in .NETWyn B. Van Devanter
 
An introduction to unit testing
An introduction to unit testingAn introduction to unit testing
An introduction to unit testingAdam Stephensen
 
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobHow to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobBob Binder
 
Lessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationLessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationBob Binder
 
Devops interview questions 1 www.bigclasses.com
Devops interview questions  1  www.bigclasses.comDevops interview questions  1  www.bigclasses.com
Devops interview questions 1 www.bigclasses.combigclasses.com
 

Tendances (20)

Spring Test Framework
Spring Test FrameworkSpring Test Framework
Spring Test Framework
 
Trunk-Based Development and Toggling
Trunk-Based Development and TogglingTrunk-Based Development and Toggling
Trunk-Based Development and Toggling
 
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчетыQA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
 
"Production Driven Development", Serhii Kalinets
"Production Driven Development", Serhii Kalinets"Production Driven Development", Serhii Kalinets
"Production Driven Development", Serhii Kalinets
 
Introduction to Bdd and cucumber
Introduction to Bdd and cucumberIntroduction to Bdd and cucumber
Introduction to Bdd and cucumber
 
BDD for APIs
BDD for APIsBDD for APIs
BDD for APIs
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
 
Continuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsContinuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applications
 
Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013
 
Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choice
 
An Introduction to Enterprise Design Patterns
An Introduction to Enterprise Design PatternsAn Introduction to Enterprise Design Patterns
An Introduction to Enterprise Design Patterns
 
New York Kubernetes: CI/CD Patterns for Kubernetes
New York Kubernetes: CI/CD Patterns for KubernetesNew York Kubernetes: CI/CD Patterns for Kubernetes
New York Kubernetes: CI/CD Patterns for Kubernetes
 
Refactoring Design Patterns the Functional Way (in Scala)
Refactoring Design Patterns the Functional Way (in Scala)Refactoring Design Patterns the Functional Way (in Scala)
Refactoring Design Patterns the Functional Way (in Scala)
 
Automated Acceptance Tests in .NET
Automated Acceptance Tests in .NETAutomated Acceptance Tests in .NET
Automated Acceptance Tests in .NET
 
BDD from QA side
BDD from QA sideBDD from QA side
BDD from QA side
 
An introduction to unit testing
An introduction to unit testingAn introduction to unit testing
An introduction to unit testing
 
SpecFlow for Agile Teams
SpecFlow for Agile TeamsSpecFlow for Agile Teams
SpecFlow for Agile Teams
 
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobHow to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
 
Lessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationLessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentation
 
Devops interview questions 1 www.bigclasses.com
Devops interview questions  1  www.bigclasses.comDevops interview questions  1  www.bigclasses.com
Devops interview questions 1 www.bigclasses.com
 

En vedette

CloudSpokes Overview
CloudSpokes OverviewCloudSpokes Overview
CloudSpokes OverviewJeff Douglas
 
Acceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And FriendsAcceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And FriendsChristopher Bartling
 
Writing Effective User Stories
Writing Effective User StoriesWriting Effective User Stories
Writing Effective User StoriesJaneve George
 
Acceptance Criteria with SpecFlow
Acceptance Criteria with SpecFlowAcceptance Criteria with SpecFlow
Acceptance Criteria with SpecFlowMarcin Floryan
 
Cross mobile testautomation mit Xamarin & SpecFlow
Cross mobile testautomation mit Xamarin & SpecFlowCross mobile testautomation mit Xamarin & SpecFlow
Cross mobile testautomation mit Xamarin & SpecFlowChristian Hassa
 
Phone Systems Brisbane - 16 questions a 27 year telco veteran would ask befor...
Phone Systems Brisbane - 16 questions a 27 year telco veteran would ask befor...Phone Systems Brisbane - 16 questions a 27 year telco veteran would ask befor...
Phone Systems Brisbane - 16 questions a 27 year telco veteran would ask befor...Greg Eicke
 
Le Studio Graphique presentation
Le Studio Graphique presentationLe Studio Graphique presentation
Le Studio Graphique presentationMaillard Stéphanie
 
Modas Urbanas De MéXico
Modas Urbanas De MéXicoModas Urbanas De MéXico
Modas Urbanas De MéXicosureycortes
 
Pueblos fantasmas de Argentina
Pueblos fantasmas de ArgentinaPueblos fantasmas de Argentina
Pueblos fantasmas de ArgentinaJulianBonfigli
 
How can we trust the historical reliability of new testament with fonts
How can we trust the historical reliability of new testament with fontsHow can we trust the historical reliability of new testament with fonts
How can we trust the historical reliability of new testament with fontsSteve Warsa
 
Cristina Rey Entrevista Revista Ejecutivos
Cristina Rey Entrevista Revista EjecutivosCristina Rey Entrevista Revista Ejecutivos
Cristina Rey Entrevista Revista EjecutivosOptimediaSpain
 
Leadbolt Advertiser Deck - 2015
Leadbolt Advertiser Deck - 2015Leadbolt Advertiser Deck - 2015
Leadbolt Advertiser Deck - 2015Brett Pollard
 
Einführung der e funktion 2
Einführung der e funktion 2Einführung der e funktion 2
Einführung der e funktion 2cmeier1963
 

En vedette (20)

CloudSpokes Overview
CloudSpokes OverviewCloudSpokes Overview
CloudSpokes Overview
 
Acceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And FriendsAcceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And Friends
 
Writing Effective User Stories
Writing Effective User StoriesWriting Effective User Stories
Writing Effective User Stories
 
Acceptance Criteria with SpecFlow
Acceptance Criteria with SpecFlowAcceptance Criteria with SpecFlow
Acceptance Criteria with SpecFlow
 
Cross mobile testautomation mit Xamarin & SpecFlow
Cross mobile testautomation mit Xamarin & SpecFlowCross mobile testautomation mit Xamarin & SpecFlow
Cross mobile testautomation mit Xamarin & SpecFlow
 
Phone Systems Brisbane - 16 questions a 27 year telco veteran would ask befor...
Phone Systems Brisbane - 16 questions a 27 year telco veteran would ask befor...Phone Systems Brisbane - 16 questions a 27 year telco veteran would ask befor...
Phone Systems Brisbane - 16 questions a 27 year telco veteran would ask befor...
 
Le Studio Graphique presentation
Le Studio Graphique presentationLe Studio Graphique presentation
Le Studio Graphique presentation
 
Boletas tucuman
Boletas tucuman  Boletas tucuman
Boletas tucuman
 
Historia fedo
Historia fedoHistoria fedo
Historia fedo
 
Modas Urbanas De MéXico
Modas Urbanas De MéXicoModas Urbanas De MéXico
Modas Urbanas De MéXico
 
Bilanz 2012
Bilanz 2012Bilanz 2012
Bilanz 2012
 
Lindorff - den forsømte kommunikation
Lindorff - den forsømte kommunikationLindorff - den forsømte kommunikation
Lindorff - den forsømte kommunikation
 
Vertetesia
VertetesiaVertetesia
Vertetesia
 
Pueblos fantasmas de Argentina
Pueblos fantasmas de ArgentinaPueblos fantasmas de Argentina
Pueblos fantasmas de Argentina
 
How can we trust the historical reliability of new testament with fonts
How can we trust the historical reliability of new testament with fontsHow can we trust the historical reliability of new testament with fonts
How can we trust the historical reliability of new testament with fonts
 
Cristina Rey Entrevista Revista Ejecutivos
Cristina Rey Entrevista Revista EjecutivosCristina Rey Entrevista Revista Ejecutivos
Cristina Rey Entrevista Revista Ejecutivos
 
Guida ospitalità
Guida ospitalitàGuida ospitalità
Guida ospitalità
 
Leadbolt Advertiser Deck - 2015
Leadbolt Advertiser Deck - 2015Leadbolt Advertiser Deck - 2015
Leadbolt Advertiser Deck - 2015
 
КАК РАСПОЗНАВАТЬ И БОРОТЬСЯ С «ГРАФФИТИ ВРАЖДЫ»
КАК РАСПОЗНАВАТЬ И БОРОТЬСЯ С «ГРАФФИТИ ВРАЖДЫ»КАК РАСПОЗНАВАТЬ И БОРОТЬСЯ С «ГРАФФИТИ ВРАЖДЫ»
КАК РАСПОЗНАВАТЬ И БОРОТЬСЯ С «ГРАФФИТИ ВРАЖДЫ»
 
Einführung der e funktion 2
Einführung der e funktion 2Einführung der e funktion 2
Einführung der e funktion 2
 

Similaire à Tech talk specflow_bddx_hassa_nagy

Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Andrew Phillips
 
Qtp interview questions
Qtp interview questionsQtp interview questions
Qtp interview questionsRamu Palanki
 
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerSpinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerAndrew Phillips
 
Continuous Deployment to the cloud
Continuous Deployment to the cloudContinuous Deployment to the cloud
Continuous Deployment to the cloudVMware Tanzu
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectJadson Santos
 
Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Alan Pearson Mathews
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAdam Getchell
 
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...Lucas Sacramento
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneciberkleid
 
Ultimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on KubernetesUltimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on Kuberneteskloia
 
Requirements Engineering @ Agile
Requirements Engineering @ AgileRequirements Engineering @ Agile
Requirements Engineering @ AgileGirish Khemani
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Amazon Web Services
 
Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Marcin Grzejszczak
 
Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3Ahmed Misbah
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)CIVEL Benoit
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1CIVEL Benoit
 
Release 12 features work arounds and Upgrade
Release 12 features work arounds and UpgradeRelease 12 features work arounds and Upgrade
Release 12 features work arounds and UpgradePrasad Gudipaty M.S., PMP
 

Similaire à Tech talk specflow_bddx_hassa_nagy (20)

Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
 
Qtp interview questions
Qtp interview questionsQtp interview questions
Qtp interview questions
 
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerSpinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
 
Gherkin model BDD
Gherkin model BDDGherkin model BDD
Gherkin model BDD
 
Continuous Deployment to the cloud
Continuous Deployment to the cloudContinuous Deployment to the cloud
Continuous Deployment to the cloud
 
Gherkin model1
Gherkin model1Gherkin model1
Gherkin model1
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete project
 
Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
 
Ultimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on KubernetesUltimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on Kubernetes
 
Requirements Engineering @ Agile
Requirements Engineering @ AgileRequirements Engineering @ Agile
Requirements Engineering @ Agile
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
 
Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5
 
Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3
 
Cucumber_Training_ForQA
Cucumber_Training_ForQACucumber_Training_ForQA
Cucumber_Training_ForQA
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
Release 12 features work arounds and Upgrade
Release 12 features work arounds and UpgradeRelease 12 features work arounds and Upgrade
Release 12 features work arounds and Upgrade
 

Plus de Skills Matter

5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard LawrenceSkills Matter
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applicationsSkills Matter
 
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmScala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmSkills Matter
 
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimOscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimSkills Matter
 
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Skills Matter
 
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlCukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlSkills Matter
 
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsCukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsSkills Matter
 
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Skills Matter
 
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Skills Matter
 
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldProgressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldSkills Matter
 
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Skills Matter
 
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Skills Matter
 
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingA poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingSkills Matter
 
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveRuss miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveSkills Matter
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSkills Matter
 
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tI went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tSkills Matter
 

Plus de Skills Matter (20)

5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applications
 
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmScala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
 
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimOscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheim
 
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
 
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlCukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberl
 
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsCukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.js
 
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
 
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
 
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldProgressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source world
 
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
 
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#
 
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingA poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testing
 
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveRuss miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-dive
 
Serendipity-neo4j
Serendipity-neo4jSerendipity-neo4j
Serendipity-neo4j
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 
Plug 20110217
Plug   20110217Plug   20110217
Plug 20110217
 
Lug presentation
Lug presentationLug presentation
Lug presentation
 
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tI went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_t
 
Plug saiku
Plug   saikuPlug   saiku
Plug saiku
 

Dernier

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 

Dernier (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 

Tech talk specflow_bddx_hassa_nagy

  • 1. Patterns and practices of building Gherkin based living documentations Building SpecLog with SpecFlow CHRISTIAN HASSA & GASPAR NAGY ch@techtalk.at & gn@techtalk.at 19th November 2010
  • 2. Agenda Walkthrough: Using SpecFlow in a project • Gathering requirements & formulating acceptance criteria • Development & testing concept • Build & release process, reports Special challenges • User Stories vs. Features • Synchronization Scenarios • Tool Widgets • Automation Helpers
  • 3. About Us Project Sponsor SpecFlow Product Owner, Coach Twitter: @chr99ha Gáspár Nagy TechTalk Committer to SpecFlow http://gasparnagy.blogspot.com Twitter: @gasparnagy Christian Hassa TechTalk TechTalk is a software development and consulting company with ~60 people located in Vienna, Budapest and Zürich. We focus on Scrum and .NET. The research is partially supported by the project of Eötvös Loránd University: TÁMOP-4.2.1.B-09/1/KMR-2010-0003
  • 4. About You Who knows SpecFlow? Who knows Cucumber or jBehave (Gherkin)?
  • 6. Our Domain: SpecLog A product developed by TechTalk managing flow of requirements in agile projects integrates with SpecFlow and TFS Team size: ~ 7 people WPF SmartClient • central repository or stand-alone • occasionally connected
  • 7. Deriving scope from goals … is not easy Deriving user stories from … … vision/business goals: too far away … actor goals: not focused enough Roadmap helped to focus First milestone goal: „use SpecLog for SpecLog“ (even if it hurts …) vision Product Backlog Epic User Story Epic User Story User Story User Story User Story business goals Roadmap derive scope from goals actor goals
  • 9. Some actor-goals for our first milestone
  • 10. Illustrating user stories with examples: acceptance criteria Product Backlog Epic User Story Epic User Story User Story User Story User Story Sprint Backlog illustrate using examples UI Scribbles as key examples Acceptance Criteria as key examples US US US Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria
  • 11. Refining: Formalization in Gherkin • Formalization in pairs • Ideal: Developer + Product Owner • Scenario tags: @specifiedSprint Backlog US US US Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Given When Then … … … refine the specification UI Scribbles as key examples specification with examples Acceptance Criteria as key examples
  • 12. Automating Gherkin scenarios Automation of Gherkin scenarios … too costly on UI (custom WPF UI) … instead on controller Sprint Backlog US US US Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Given When Then … … … SpecFlow { … } { … } { … } automate literally specification with examples executable specification Scenario tags: @automated @manual
  • 13. Development concept In development we have to find the right balance between… • High quality – the application will be used by a broad audience • Changing directions – the implementation also serves as a test for the concept Our goals are • Develop the application outside-in • Preferable AC by AC • Automate AC through controller (view model) layer • Design concept but no detailed design upfront • Many things from XP (TDD, Pair programming, common code ownership)
  • 15. Task Board The tasks are aligned to the AC We use TFS with Excel fronted
  • 16. Build & Release Process, Reports We wanted to build a confortable infrastructure that supports our process • CI • Short release cycle through automated build • Build quality measures • Reports
  • 17. Automated Builds - CI Runs on every check-in (no gated check-in) No versioning Builds the application & runs unit tests (*.Tests) • Fails if any of these fails
  • 18. Automated Builds – Acceptance Triggered by check-ins, cumulated (1h) Verifies build quality • Executes automated acceptance tests • Detects version compatibility issues Produces ready-to-use release • Increments version number • Produces an installer • Generates test execution report (“living documentation”) • Publishes the results on a website
  • 22. Executing Acceptance Test Implementation of an AC can be a longer process • Might need several days • Might be developed by more then one person • Execution of the entire test suite might be long We cannot expect that all acceptance test passes all the time What we rather need is • Ensure that “done” stories are still working • Get a feedback about the stories currently implemented
  • 24. Testing Developer: Smoke testing of UI • tag user story with „TestIt“ Tester: exploratory testing of all „TestIt“ user stories • time boxed, once a week Limited number of manually executed workflow tests • extended with new features Bugs: formulized to Gherkin acceptance criteria • when automation possible • grouped to user story on backlog when not fixed immediately
  • 26. Living documentation Sprint Backlog US US US Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Acceptance Criteria Given When Then … … … F F F F F F F F AC AC AC AC AC Automation { … } { … } { … } refine the specification validate continuously specification with examples executable specification living documentation Features “done”Current sprint AC US AC AC AC US AC AC merge when accepted validate continuously
  • 27. Evolving the living documentation Product/Sprint Backlog User Story 1 AccCrit 1 AccCrit 2 User Story 2 AccCrit 3 AccCrit 4 Living Documentation Feature 1 AccCrit 1 AccCrit 2 Feature n AccCrit 4 AccCrit m User Story n AccCrit 5 AccCrit m AccCrit 3 AccCrit 5 „Done“ • Next possible increments of product (units of work) • Organized /refined according to priority, value, effort, risk, actor-goals, … • Product Documentation • Organized/refined according to functionality and overview • Versioned/maintained with source code
  • 28. Synchronization Scenarios The application should support collaborative editing with multiple occasionally connected clients • This is a general cross-cutting concern • Hard to test manually • Essential feature of the application Solution: we concretize this requirement for each story where it can be applied • This is part of a check list – so we don’t forget it
  • 29. Synchronization Scenarios Synchronization of a user story “value text” @automated @done Scenario: should synchronize value text of user story Given a workspace for a shared repository And the workspace is active on 'Client1' And the repository is open on 'Client2' And a user story is in the repository When I set the value text of the user story to 'some value' on 'Client1' And all changes are synchronized Then the user story in the repository on 'Client2' should have the value text 'some value'
  • 30. Synchronization Scenarios Specifying goal text in “local mode” – no need to mention clients @automated @done Scenario: should be able to specify value text for user story through card Given an active workspace for a repository And a user story in the repository And a card for the user story on the workspace When I set the value text of the user story to 'some value' Then the user story in the repository should have the value text 'some value'
  • 31. Synchronization Scenarios Specifying AC headline (title) – no need to mention workspaces even @automated @done Scenario: Acceptance criteria can be described with a headline Given a user story And an acceptance criterion for the user story When I set the headline of the acceptance criterion to 'some headline' Then the acceptance criterion should have the headline 'some headline' in the repository [Given("a user story")] public void GivenAUserStory() { EnsureOpenStandaloneRepository(); GivenAUserStoryIsInTheRepository(); }
  • 32. Synchronization Scenarios Conflict resolution – for the winner @automated @done @conflict_resolution Scenario Outline: first synchronized concurrent modification of requirement goal text should win Given a workspace for a shared repository And the workspace is active on 'Client1' And the workspace is active on 'Client2' And a <requirement> is in the repository When I set the goal text of the <requirement> to 'some goal1' on 'Client1' And I set the goal text of the <requirement> to 'some goal2' on 'Client2' And all changes are synchronized by 'Client1' And all changes are synchronized by 'Client2' And all changes are synchronized by 'Client1' Then the <requirement> in the repository should have the goal text 'some goal1' Examples: | requirement | | business goal | | actor-goal | | user story |
  • 33. Synchronization Scenarios Conflict resolution – for the looser @automated @specified @conflict_resolution Scenario Outline: concurrent modifications of goal text of requirements that lose should be captured as conflicts Given a workspace for a shared repository And the workspace is active on 'Client1' And the workspace is active on 'Client2' And a <requirement> is in the repository And the <requirement> has no conflicts When I set the goal text of the <requirement> to 'some goal1' on 'Client1' And I set the goal text of the <requirement> to 'some goal2' on 'Client2' And all changes are synchronized by 'Client1' And all changes are synchronized by 'Client2' Then the <requirement> in the repository should have the conflict 'conflicting goal: some goal2' introduced by 'Client2' Examples: | requirement | | business goal | | actor-goal | | user story |
  • 34. Dealing with cross-cutting concepts Tool-widget • Floats over workspace • Can be open/closed using control bar • Position kept per user session
  • 35. Formalizing tool widget concept in Gherkin examples for tool widget concept examples of tool widgets (extended over time) manual test that there is a specific tool widget instance
  • 36. TestContext, TestClient, TestServer & Automation Drivers When automating acceptance criteria, similar tasks have to be solved from different step bindings • These should also communicate with each other Given a user story And an acceptance criterion for the user story • TestContext is a class that is injected into the step binding classes to provide a platform for the communication • TestClient, TestServer – entry points for the automation of a client or a server instance • Automation Drivers – grouping together the automation code for automating a class (view model)
  • 39. Thank you! More information at • www.specflow.org • www.speclog.org • www.techtalk.at www.specflow.org