SlideShare a Scribd company logo
1 of 29
Download to read offline
Succeeding with

Specification by Example
Alistair McKinnell
@amckinnell
ICG
Intelligent Code
Generation
Specification by Example is a
collaborative method for specifying
requirements and tests
One Win
Three Failures
One Maybe
Unit testing
Coding standards
Continuous integration
Refactoring
Continuous deployment
Pair programming
Test-driven development (TDD)
Automated acceptance testing
Collective code ownership
Sustainable pace
Behavior-driven development (BDD)
Emergent design
75%
64%
54%
45%
37%
36%
35%
32%
31%
25%
17%
16%
*Respondents were able to make multiple selections.
Engineering Practices Employed
This year’s survey demonstrated an increased use of coding standards (64% compared to 56%
last year) and the use of continuous integration and refactoring were cited less as practices used.
Development
Testing
Product Nulogy QCloud®
Product Specification
Document Abstract
The following document is a functional product specification of Nulogy’s QCloud solution. This
document is intended to describe each module, structure and overall user environment, however is by
no means exhaustive of all functionality as product functionality enhancements are continuously
released every month.
Confidentiality Statement:
The information contained in this document is confidential and proprietary to Nulogy. This information
may not be used for any other purpose and may not be further distributed. Any recipient of this
document who is unwilling to agree to these restrictions should return the document to Nulogy without
reviewing the contents or making further distribution. Review of this document shall constitute
agreement to the restrictions stated above.
Development
Testing
Product it 'does not allow blank passwords' do
user = create_user(token: 'token')
encrypted_password_before = user.encrypted_password
put :update, params: { user: {
password: '',
password_confirmation: '',
reset_password_token: 'token'
} }
user.reload
expect(user.reset_password_token).to_not be_nil
expect(encrypted_password_before).to eq(user.encrypted_password)
end
Development
Testing
Product
Development
Testing
Product
Nulogy QCloud®
Product Specification
Document Abstract
The following document is a functional product specification of Nulogy’s QCloud solution. This
document is intended to describe each module, structure and overall user environment, however is by
no means exhaustive of all functionality as product functionality enhancements are continuously
released every month.
Confidentiality Statement:
The information contained in this document is confidential and proprietary to Nulogy. This information
may not be used for any other purpose and may not be further distributed. Any recipient of this
document who is unwilling to agree to these restrictions should return the document to Nulogy without
reviewing the contents or making further distribution. Review of this document shall constitute
agreement to the restrictions stated above.
it 'does not allow blank passwords' do
user = create_user(token: 'token')
encrypted_password_before = user.encrypted_password
put :update, params: { user: {
password: '',
password_confirmation: '',
reset_password_token: 'token'
} }
user.reload
expect(user.reset_password_token).to_not be_nil
expect(encrypted_password_before).to eq(user.encrypted_password)
end
M A N N I N G
KAMIL NICIEJA
FOREWORD BY GOJKO ADŽIC´
Meet specification by example and Gherkin
1. Plan
Software
development
life cycle
3. Launch
4. Feedback 2. Build
Specificati
Figure 1.2 SBE reimagines the software development process by prolonging
the specification process so that it takes place throughout the entire project.
Meet specification by example and Gherkin
1. Plan
Software
development
life cycle
3. Launch
4. Feedback 2. Build
Specificati
Figure 1.2 SBE reimagines the software development process by prolonging
the specification process so that it takes place throughout the entire project.
Meet specification by example and Gherkin
1. Plan
Software
development
life cycle
3. Launch
4. Feedback 2. Build
Specificati
Figure 1.2 SBE reimagines the software development process by prolonging
the specification process so that it takes place throughout the entire project.
Having conversations
Capturing
conversations
Automating
conversations
Deriving scope
from goals
Specifying
collaboratively
Specification by
Example
Illustrating
requirements
using examples
Refining
specifications
Automating tests
based on examples
Validating
frequently
Living
documentation
Having conversations
Capturing
conversations
Automating
conversations
Deriving scope
from goals
Specifying
collaboratively
Specification by
Example
Illustrating
requirements
using examples
Refining
specifications
Automating tests
based on examples
Validating
frequently
Living
documentation
Specification by Example is the art

of using examples in conversation

to illustrate behaviour
Having conversations
Capturing
conversations
Automating
conversations
Deriving scope
from goals
Specifying
collaboratively
Specification by
Example
Illustrating
requirements
using examples
Refining
specifications
Automating tests
based on examples
Validating
frequently
Living
documentation
13Meet specification by example and Gherkin
If you’re curious about what a specification written in Gherkin looks like, look at this
example:
Feature: Setting starting points and destinations
Scenario: Starting point should be set to current location
Given a commuter that enabled location tracking
When the commuter wants to plan a journey
Then the starting point should be set to current location
1. Plan
Software
development
life cycle
3. Launch
4. Feedback 2. Build
Specification by example
Figure 1.2 SBE reimagines the software development process by prolonging
the specification process so that it takes place throughout the entire project.
Having conversations
Capturing
conversations
Automating
conversations
Deriving scope
from goals
Specifying
collaboratively
Specification by
Example
Illustrating
requirements
using examples
Refining
specifications
Automating tests
based on examples
Validating
frequently
Living
documentation
Requirements
FuturePast and current
User storiesExecutable
specifications
A user story…
An executable
specification…
Is discarded after implementation Is kept after implementation
Is a unit of change Is an effect of the change
Has acceptance criteria Is an acceptance test
Produces short-term results, 

such as cards or tasks
Produces long-term 

living documentation
@javascript
Feature: Configure the Review Sheets Operation
The Review Sheets operation will grant the user access to review sheets that has
been submitted by other users only if they also have the View Sheets operation.
Background:
* PackPlus is the example Company
* Polly Armstrong is a Policy Administrator
* Irene Hughes is a member of the Inspector User Group
* Polly Armstrong has enabled the View Sheets operation for an Inspector
* Polly Armstrong has enabled the Review Sheets operation for an Inspector
Scenario: the Review Sheets operation is enabled
Then Irene Hughes can review sheets
Scenario: the Review Sheets operation is disabled
When Polly Armstrong disables the Review Sheets operation for an Inspector
Then Irene Hughes cannot review sheets
The DeveloperTesting

Maturity Curve
Development
Testing
Product
Nulogy QCloud®
Product Specification
Document Abstract
The following document is a functional product specification of Nulogy’s QCloud solution. This
document is intended to describe each module, structure and overall user environment, however is by
no means exhaustive of all functionality as product functionality enhancements are continuously
released every month.
Confidentiality Statement:
The information contained in this document is confidential and proprietary to Nulogy. This information
may not be used for any other purpose and may not be further distributed. Any recipient of this
document who is unwilling to agree to these restrictions should return the document to Nulogy without
reviewing the contents or making further distribution. Review of this document shall constitute
agreement to the restrictions stated above.
it 'does not allow blank passwords' do
user = create_user(token: 'token')
encrypted_password_before = user.encrypted_password
put :update, params: { user: {
password: '',
password_confirmation: '',
reset_password_token: 'token'
} }
user.reload
expect(user.reset_password_token).to_not be_nil
expect(encrypted_password_before).to eq(user.encrypted_password)
end
Succeeding with Specification by Example

More Related Content

Similar to Succeeding with Specification by Example

Agile for Software as a Medical Device
Agile for Software as a Medical DeviceAgile for Software as a Medical Device
Agile for Software as a Medical DeviceOrthogonal
 
Plagiarism Report SDLC 1.pdf
Plagiarism Report SDLC 1.pdfPlagiarism Report SDLC 1.pdf
Plagiarism Report SDLC 1.pdfOmethSanchitha
 
Software Testing Fundamentals_withlogo.pdf
Software Testing Fundamentals_withlogo.pdfSoftware Testing Fundamentals_withlogo.pdf
Software Testing Fundamentals_withlogo.pdfusmanriaz84
 
Manoj Kolhe - Testing in Agile Environment
Manoj Kolhe - Testing in Agile EnvironmentManoj Kolhe - Testing in Agile Environment
Manoj Kolhe - Testing in Agile EnvironmentManoj Kolhe
 
Experimentation at Blue Apron (webinar)
Experimentation at Blue Apron (webinar)Experimentation at Blue Apron (webinar)
Experimentation at Blue Apron (webinar)Optimizely
 
Estimating test effort part 1 of 2
Estimating test effort part 1 of 2Estimating test effort part 1 of 2
Estimating test effort part 1 of 2Ian McDonald
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileIosif Itkin
 
Priyanka Singh_testing_resume
Priyanka Singh_testing_resumePriyanka Singh_testing_resume
Priyanka Singh_testing_resumePriyanka Singh
 
QA is not quality
QA is not qualityQA is not quality
QA is not qualityAlex Wilson
 
Chapter 2 - Fundamental Agile Testing Principle, Practices & Process
Chapter 2 - Fundamental Agile Testing Principle, Practices & ProcessChapter 2 - Fundamental Agile Testing Principle, Practices & Process
Chapter 2 - Fundamental Agile Testing Principle, Practices & ProcessNeeraj Kumar Singh
 
Manual Testing real time questions .pdf
Manual Testing real time questions .pdfManual Testing real time questions .pdf
Manual Testing real time questions .pdfTiktokIndia2
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryOptimizely
 
The 10 commandments of an agile tester in a legacy world
The 10 commandments of an agile tester in a legacy worldThe 10 commandments of an agile tester in a legacy world
The 10 commandments of an agile tester in a legacy worldAgilePractitionersIL
 
Implementation of agile methodology in mobile automation testing
Implementation of agile methodology in mobile automation testingImplementation of agile methodology in mobile automation testing
Implementation of agile methodology in mobile automation testingKailash khoiwal
 
Test Automation Framework An Insight into Some Popular Automation Frameworks.pdf
Test Automation Framework An Insight into Some Popular Automation Frameworks.pdfTest Automation Framework An Insight into Some Popular Automation Frameworks.pdf
Test Automation Framework An Insight into Some Popular Automation Frameworks.pdfSerena Gray
 

Similar to Succeeding with Specification by Example (20)

Agile for Software as a Medical Device
Agile for Software as a Medical DeviceAgile for Software as a Medical Device
Agile for Software as a Medical Device
 
Plagiarism Report SDLC 1.pdf
Plagiarism Report SDLC 1.pdfPlagiarism Report SDLC 1.pdf
Plagiarism Report SDLC 1.pdf
 
Software Testing Fundamentals_withlogo.pdf
Software Testing Fundamentals_withlogo.pdfSoftware Testing Fundamentals_withlogo.pdf
Software Testing Fundamentals_withlogo.pdf
 
jayachandra
jayachandrajayachandra
jayachandra
 
Software Engineering CSE/IT.pptx
 Software Engineering CSE/IT.pptx Software Engineering CSE/IT.pptx
Software Engineering CSE/IT.pptx
 
Manoj Kolhe - Testing in Agile Environment
Manoj Kolhe - Testing in Agile EnvironmentManoj Kolhe - Testing in Agile Environment
Manoj Kolhe - Testing in Agile Environment
 
Experimentation at Blue Apron (webinar)
Experimentation at Blue Apron (webinar)Experimentation at Blue Apron (webinar)
Experimentation at Blue Apron (webinar)
 
Estimating test effort part 1 of 2
Estimating test effort part 1 of 2Estimating test effort part 1 of 2
Estimating test effort part 1 of 2
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibile
 
Priyanka Singh_testing_resume
Priyanka Singh_testing_resumePriyanka Singh_testing_resume
Priyanka Singh_testing_resume
 
QA is not quality
QA is not qualityQA is not quality
QA is not quality
 
Neeraj_Kumar
Neeraj_KumarNeeraj_Kumar
Neeraj_Kumar
 
Pooja_resume_5.10
Pooja_resume_5.10Pooja_resume_5.10
Pooja_resume_5.10
 
Chapter 2 - Fundamental Agile Testing Principle, Practices & Process
Chapter 2 - Fundamental Agile Testing Principle, Practices & ProcessChapter 2 - Fundamental Agile Testing Principle, Practices & Process
Chapter 2 - Fundamental Agile Testing Principle, Practices & Process
 
Manual Testing real time questions .pdf
Manual Testing real time questions .pdfManual Testing real time questions .pdf
Manual Testing real time questions .pdf
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature Delivery
 
The 10 commandments of an agile tester in a legacy world
The 10 commandments of an agile tester in a legacy worldThe 10 commandments of an agile tester in a legacy world
The 10 commandments of an agile tester in a legacy world
 
Implementation of agile methodology in mobile automation testing
Implementation of agile methodology in mobile automation testingImplementation of agile methodology in mobile automation testing
Implementation of agile methodology in mobile automation testing
 
Test Automation Framework An Insight into Some Popular Automation Frameworks.pdf
Test Automation Framework An Insight into Some Popular Automation Frameworks.pdfTest Automation Framework An Insight into Some Popular Automation Frameworks.pdf
Test Automation Framework An Insight into Some Popular Automation Frameworks.pdf
 
MousumiDebnath-Resume
MousumiDebnath-ResumeMousumiDebnath-Resume
MousumiDebnath-Resume
 

More from Alistair McKinnell

Don't Settle for Poor Names (Or Poor Design)
Don't Settle for Poor Names (Or Poor Design)Don't Settle for Poor Names (Or Poor Design)
Don't Settle for Poor Names (Or Poor Design)Alistair McKinnell
 
What Can Journalists Teach Developers About Writing Source Code?
What Can Journalists Teach Developers About Writing Source Code?What Can Journalists Teach Developers About Writing Source Code?
What Can Journalists Teach Developers About Writing Source Code?Alistair McKinnell
 
Commonality and Variability Analysis: Avoiding Duplicate Code
Commonality and Variability Analysis: Avoiding Duplicate CodeCommonality and Variability Analysis: Avoiding Duplicate Code
Commonality and Variability Analysis: Avoiding Duplicate CodeAlistair McKinnell
 
Agile Tour Shanghai December 2011
Agile Tour Shanghai December 2011Agile Tour Shanghai December 2011
Agile Tour Shanghai December 2011Alistair McKinnell
 
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic Tool
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic ToolAgile Transition in Trouble? Using the Kotter Change Model as a Diagnostic Tool
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic ToolAlistair McKinnell
 
Struggling to Create Maintainable Unit Tests?
Struggling to Create Maintainable Unit Tests?Struggling to Create Maintainable Unit Tests?
Struggling to Create Maintainable Unit Tests?Alistair McKinnell
 

More from Alistair McKinnell (14)

Don't Settle for Poor Names (Or Poor Design)
Don't Settle for Poor Names (Or Poor Design)Don't Settle for Poor Names (Or Poor Design)
Don't Settle for Poor Names (Or Poor Design)
 
Don't Settle for Poor Names
Don't Settle for Poor NamesDon't Settle for Poor Names
Don't Settle for Poor Names
 
The Boy Scout Rule
The Boy Scout RuleThe Boy Scout Rule
The Boy Scout Rule
 
Advanced Developer Testing
Advanced Developer TestingAdvanced Developer Testing
Advanced Developer Testing
 
What Can Journalists Teach Developers About Writing Source Code?
What Can Journalists Teach Developers About Writing Source Code?What Can Journalists Teach Developers About Writing Source Code?
What Can Journalists Teach Developers About Writing Source Code?
 
Ubiquitous Testing
Ubiquitous TestingUbiquitous Testing
Ubiquitous Testing
 
Commonality and Variability Analysis: Avoiding Duplicate Code
Commonality and Variability Analysis: Avoiding Duplicate CodeCommonality and Variability Analysis: Avoiding Duplicate Code
Commonality and Variability Analysis: Avoiding Duplicate Code
 
Simple Design
Simple DesignSimple Design
Simple Design
 
Agile Tour Shanghai December 2011
Agile Tour Shanghai December 2011Agile Tour Shanghai December 2011
Agile Tour Shanghai December 2011
 
Pair Programming
Pair ProgrammingPair Programming
Pair Programming
 
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic Tool
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic ToolAgile Transition in Trouble? Using the Kotter Change Model as a Diagnostic Tool
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic Tool
 
The Story of a Story
The Story of a StoryThe Story of a Story
The Story of a Story
 
The Testing Landscape
The Testing LandscapeThe Testing Landscape
The Testing Landscape
 
Struggling to Create Maintainable Unit Tests?
Struggling to Create Maintainable Unit Tests?Struggling to Create Maintainable Unit Tests?
Struggling to Create Maintainable Unit Tests?
 

Recently uploaded

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 

Recently uploaded (20)

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

Succeeding with Specification by Example

  • 1. Succeeding with
 Specification by Example Alistair McKinnell @amckinnell
  • 3.
  • 4. Specification by Example is a collaborative method for specifying requirements and tests
  • 6. Unit testing Coding standards Continuous integration Refactoring Continuous deployment Pair programming Test-driven development (TDD) Automated acceptance testing Collective code ownership Sustainable pace Behavior-driven development (BDD) Emergent design 75% 64% 54% 45% 37% 36% 35% 32% 31% 25% 17% 16% *Respondents were able to make multiple selections. Engineering Practices Employed This year’s survey demonstrated an increased use of coding standards (64% compared to 56% last year) and the use of continuous integration and refactoring were cited less as practices used.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12. Development Testing Product Nulogy QCloud® Product Specification Document Abstract The following document is a functional product specification of Nulogy’s QCloud solution. This document is intended to describe each module, structure and overall user environment, however is by no means exhaustive of all functionality as product functionality enhancements are continuously released every month. Confidentiality Statement: The information contained in this document is confidential and proprietary to Nulogy. This information may not be used for any other purpose and may not be further distributed. Any recipient of this document who is unwilling to agree to these restrictions should return the document to Nulogy without reviewing the contents or making further distribution. Review of this document shall constitute agreement to the restrictions stated above.
  • 13. Development Testing Product it 'does not allow blank passwords' do user = create_user(token: 'token') encrypted_password_before = user.encrypted_password put :update, params: { user: { password: '', password_confirmation: '', reset_password_token: 'token' } } user.reload expect(user.reset_password_token).to_not be_nil expect(encrypted_password_before).to eq(user.encrypted_password) end
  • 15. Development Testing Product Nulogy QCloud® Product Specification Document Abstract The following document is a functional product specification of Nulogy’s QCloud solution. This document is intended to describe each module, structure and overall user environment, however is by no means exhaustive of all functionality as product functionality enhancements are continuously released every month. Confidentiality Statement: The information contained in this document is confidential and proprietary to Nulogy. This information may not be used for any other purpose and may not be further distributed. Any recipient of this document who is unwilling to agree to these restrictions should return the document to Nulogy without reviewing the contents or making further distribution. Review of this document shall constitute agreement to the restrictions stated above. it 'does not allow blank passwords' do user = create_user(token: 'token') encrypted_password_before = user.encrypted_password put :update, params: { user: { password: '', password_confirmation: '', reset_password_token: 'token' } } user.reload expect(user.reset_password_token).to_not be_nil expect(encrypted_password_before).to eq(user.encrypted_password) end
  • 16. M A N N I N G KAMIL NICIEJA FOREWORD BY GOJKO ADŽIC´
  • 17. Meet specification by example and Gherkin 1. Plan Software development life cycle 3. Launch 4. Feedback 2. Build Specificati Figure 1.2 SBE reimagines the software development process by prolonging the specification process so that it takes place throughout the entire project.
  • 18. Meet specification by example and Gherkin 1. Plan Software development life cycle 3. Launch 4. Feedback 2. Build Specificati Figure 1.2 SBE reimagines the software development process by prolonging the specification process so that it takes place throughout the entire project.
  • 19. Meet specification by example and Gherkin 1. Plan Software development life cycle 3. Launch 4. Feedback 2. Build Specificati Figure 1.2 SBE reimagines the software development process by prolonging the specification process so that it takes place throughout the entire project.
  • 20. Having conversations Capturing conversations Automating conversations Deriving scope from goals Specifying collaboratively Specification by Example Illustrating requirements using examples Refining specifications Automating tests based on examples Validating frequently Living documentation
  • 21. Having conversations Capturing conversations Automating conversations Deriving scope from goals Specifying collaboratively Specification by Example Illustrating requirements using examples Refining specifications Automating tests based on examples Validating frequently Living documentation Specification by Example is the art
 of using examples in conversation
 to illustrate behaviour
  • 22. Having conversations Capturing conversations Automating conversations Deriving scope from goals Specifying collaboratively Specification by Example Illustrating requirements using examples Refining specifications Automating tests based on examples Validating frequently Living documentation
  • 23. 13Meet specification by example and Gherkin If you’re curious about what a specification written in Gherkin looks like, look at this example: Feature: Setting starting points and destinations Scenario: Starting point should be set to current location Given a commuter that enabled location tracking When the commuter wants to plan a journey Then the starting point should be set to current location 1. Plan Software development life cycle 3. Launch 4. Feedback 2. Build Specification by example Figure 1.2 SBE reimagines the software development process by prolonging the specification process so that it takes place throughout the entire project. Having conversations Capturing conversations Automating conversations Deriving scope from goals Specifying collaboratively Specification by Example Illustrating requirements using examples Refining specifications Automating tests based on examples Validating frequently Living documentation
  • 24. Requirements FuturePast and current User storiesExecutable specifications
  • 25. A user story… An executable specification… Is discarded after implementation Is kept after implementation Is a unit of change Is an effect of the change Has acceptance criteria Is an acceptance test Produces short-term results, 
 such as cards or tasks Produces long-term 
 living documentation
  • 26. @javascript Feature: Configure the Review Sheets Operation The Review Sheets operation will grant the user access to review sheets that has been submitted by other users only if they also have the View Sheets operation. Background: * PackPlus is the example Company * Polly Armstrong is a Policy Administrator * Irene Hughes is a member of the Inspector User Group * Polly Armstrong has enabled the View Sheets operation for an Inspector * Polly Armstrong has enabled the Review Sheets operation for an Inspector Scenario: the Review Sheets operation is enabled Then Irene Hughes can review sheets Scenario: the Review Sheets operation is disabled When Polly Armstrong disables the Review Sheets operation for an Inspector Then Irene Hughes cannot review sheets
  • 28. Development Testing Product Nulogy QCloud® Product Specification Document Abstract The following document is a functional product specification of Nulogy’s QCloud solution. This document is intended to describe each module, structure and overall user environment, however is by no means exhaustive of all functionality as product functionality enhancements are continuously released every month. Confidentiality Statement: The information contained in this document is confidential and proprietary to Nulogy. This information may not be used for any other purpose and may not be further distributed. Any recipient of this document who is unwilling to agree to these restrictions should return the document to Nulogy without reviewing the contents or making further distribution. Review of this document shall constitute agreement to the restrictions stated above. it 'does not allow blank passwords' do user = create_user(token: 'token') encrypted_password_before = user.encrypted_password put :update, params: { user: { password: '', password_confirmation: '', reset_password_token: 'token' } } user.reload expect(user.reset_password_token).to_not be_nil expect(encrypted_password_before).to eq(user.encrypted_password) end