SlideShare uma empresa Scribd logo
1 de 20
Specification by Example
(BDD)
Agenda
• Software Development Challenges
• BDD to the Rescue
• Spec Examples
• Automation Tools
Creating software products
is challenging…
requirements code
S P
Cliqz
Cost of translation
years
weeks
Behaviour Driven Development
BDD is about eliminating Translation cost
from business to developers
using the language of examples
business goals
specifying
deriving scope
collaboratively specify
examples
refining specification
automated
validation of specifications
building
living documentation
requirements code
S P
years
weeks
Cost of translation
examples
BDD
${ } { }
DDD
Spec examples
What makes a good test
• In domain language
• Easy to understand
• Precise and testable
• Self-explanatory
• Consistent
evaluation scenarios
3D-secure v1
Feature: 3d Secure
In order to reduce chargeback costs
As a system owner
I want players to go through 3D secure enrollment and verification
Background
Given the card number 4236754 is enrolled
And the card number 2341238 is not enrolled
Scenario: Enrolled card
Given the player has a card with number 4236754
And expiry date 12 11
And address line 1 Max Weber Platz 23
And address line 2 1st floor
And post code 12300
And city Viena
And country Austria
When the player starts a transaction for 10 EUR
Then the system will send a message “””
<message type=“ENROLMENT_CHK_MSG”>
<CARD> 4236754</CARD>
</message>
“””
And the system will receive a response “””
<response>
<ENROLEMENT_CHK>enrolled</ENROLEMENT_CHK>
</response>
“””
3D-secure v1
Then the system will send a message “””
<message type=“3D_AUTHORIZE”>
<CARD>4236754</CARD>
<EXPIRY>1211</EXPIRY>
<ADDRESS_LINE1>Max Weber Platz 23</ADDRESS_LINE_1>
<ADDRESS_LINE2>1st floor</ADDRESS_LINE_1>
<POST_CODE>12300</POST_CODE>
<CITY>VIENNA</CITY>
<COUNTRY>AUSTRIA</COUNTRY>
</message>
“””
And the system will receive a response “””
<response>
<AUTHORIZE>
<3D_SECURE_URL>http://hsbc.co.uk</3D_SECURE_URL>
<PA_REQ>232325454-444444232323232</PA_REQ>
</AUTHORIZE>
</response>
“””
And the system will redirect the user to http://hsbc.co.uk
And the PA-REQ code in the form will be 232325454-444444232323232
3D-secure v2
Feature: Card enrollment with 3d Secure
In order to reduce chargeback costs
As a system owner
I want players to go through 3D secure enrollment and verification
before proceeding with actual authorization
Scenario Outline: 3d transaction processing
Given the card was <enrolled>
And 3D Secure gateway response was <response>
Then the transaction status is <status>
Examples: Response arrived
Examples: still waiting for response
Examples: card not enrolled, so not going through 3D at all
enrolled response status
YES cancel CANCELLED
YES authorize
PENDING_AUTHORIZATION
enrolled response status
YES not received yet PENDING 3D SECURE
enrolled response status
NO not received yet PENDING AUTHORIZATION
Automation tools
• Cucumber: http://cucumber.io
• JBehave: http://jbehave.org
• SpecFlow: http://www.specflow.org
• Appium: http://appium.io/

Mais conteúdo relacionado

Semelhante a BDD / Specification by example

Streamlining licensing migration from 3rd party systems
Streamlining licensing migration from 3rd party systemsStreamlining licensing migration from 3rd party systems
Streamlining licensing migration from 3rd party systems
team-WIBU
 
Sensor Interface Descriptors (SID)
Sensor Interface Descriptors (SID)Sensor Interface Descriptors (SID)
Sensor Interface Descriptors (SID)
Arne Bröring
 
Kristopher Moyer Resume 04072016
Kristopher Moyer Resume 04072016Kristopher Moyer Resume 04072016
Kristopher Moyer Resume 04072016
Kris Moyer
 
In the Middle of Printers: (In)security of Pull Printing Solutions
In the Middle of Printers: (In)security of Pull Printing SolutionsIn the Middle of Printers: (In)security of Pull Printing Solutions
In the Middle of Printers: (In)security of Pull Printing Solutions
Positive Hack Days
 
Kerberos Survival Guide SPS Chicago
Kerberos Survival Guide SPS ChicagoKerberos Survival Guide SPS Chicago
Kerberos Survival Guide SPS Chicago
J.D. Wade
 
[OPD 2019] Web Apps vs Blockchain dApps
[OPD 2019] Web Apps vs Blockchain dApps[OPD 2019] Web Apps vs Blockchain dApps
[OPD 2019] Web Apps vs Blockchain dApps
OWASP
 
Arm board design odm electronic
Arm board design odm electronicArm board design odm electronic
Arm board design odm electronic
Venkatesh Dhanapal
 

Semelhante a BDD / Specification by example (20)

Streamlining licensing migration from 3rd party systems
Streamlining licensing migration from 3rd party systemsStreamlining licensing migration from 3rd party systems
Streamlining licensing migration from 3rd party systems
 
KanDDDinsky: Let your domain events flow
KanDDDinsky: Let your domain events flowKanDDDinsky: Let your domain events flow
KanDDDinsky: Let your domain events flow
 
O'Reilly SA: Complex event flows in distributed systems
O'Reilly SA: Complex event flows in distributed systemsO'Reilly SA: Complex event flows in distributed systems
O'Reilly SA: Complex event flows in distributed systems
 
Sensor Interface Descriptors (SID)
Sensor Interface Descriptors (SID)Sensor Interface Descriptors (SID)
Sensor Interface Descriptors (SID)
 
Virtual Design and Construction
Virtual Design and ConstructionVirtual Design and Construction
Virtual Design and Construction
 
Sample 3D Projects_ TMA Solutions
Sample 3D Projects_ TMA SolutionsSample 3D Projects_ TMA Solutions
Sample 3D Projects_ TMA Solutions
 
How to be a smart contract engineer
How to be a smart contract engineerHow to be a smart contract engineer
How to be a smart contract engineer
 
Secure Electronic Transaction (SET)
Secure Electronic Transaction (SET)Secure Electronic Transaction (SET)
Secure Electronic Transaction (SET)
 
Kristopher Moyer Resume 04072016
Kristopher Moyer Resume 04072016Kristopher Moyer Resume 04072016
Kristopher Moyer Resume 04072016
 
3D-Secure 2.2 Webinar
3D-Secure 2.2 Webinar3D-Secure 2.2 Webinar
3D-Secure 2.2 Webinar
 
In the Middle of Printers: (In)security of Pull Printing Solutions
In the Middle of Printers: (In)security of Pull Printing SolutionsIn the Middle of Printers: (In)security of Pull Printing Solutions
In the Middle of Printers: (In)security of Pull Printing Solutions
 
Kerberos Survival Guide SPS Chicago
Kerberos Survival Guide SPS ChicagoKerberos Survival Guide SPS Chicago
Kerberos Survival Guide SPS Chicago
 
You Haven't Seen This 3D Engineering's Overview List on Buzzfeed
You Haven't Seen This 3D Engineering's Overview List on BuzzfeedYou Haven't Seen This 3D Engineering's Overview List on Buzzfeed
You Haven't Seen This 3D Engineering's Overview List on Buzzfeed
 
[OPD 2019] Web Apps vs Blockchain dApps
[OPD 2019] Web Apps vs Blockchain dApps[OPD 2019] Web Apps vs Blockchain dApps
[OPD 2019] Web Apps vs Blockchain dApps
 
Deploy & Configure Remote Desktop Gateway in Windows Server 2008 R2 By Barek-IT
Deploy & Configure Remote Desktop Gateway in Windows Server 2008 R2 By Barek-ITDeploy & Configure Remote Desktop Gateway in Windows Server 2008 R2 By Barek-IT
Deploy & Configure Remote Desktop Gateway in Windows Server 2008 R2 By Barek-IT
 
Arm board design odm electronic
Arm board design odm electronicArm board design odm electronic
Arm board design odm electronic
 
Engineering Document Management Software | EDMS Software Overview
Engineering Document Management Software | EDMS Software OverviewEngineering Document Management Software | EDMS Software Overview
Engineering Document Management Software | EDMS Software Overview
 
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsWebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
 
12 Years in DNS Security As a Defender
12 Years in DNS Security As a Defender12 Years in DNS Security As a Defender
12 Years in DNS Security As a Defender
 
The Elastix Call Center Protocol Revealed
The Elastix Call Center Protocol RevealedThe Elastix Call Center Protocol Revealed
The Elastix Call Center Protocol Revealed
 

Último

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Último (20)

TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 

BDD / Specification by example

  • 2. Agenda • Software Development Challenges • BDD to the Rescue • Spec Examples • Automation Tools
  • 4. requirements code S P Cliqz Cost of translation years weeks
  • 5.
  • 6. Behaviour Driven Development BDD is about eliminating Translation cost from business to developers using the language of examples
  • 13. requirements code S P years weeks Cost of translation examples BDD ${ } { } DDD
  • 15. What makes a good test • In domain language • Easy to understand • Precise and testable • Self-explanatory • Consistent
  • 17. 3D-secure v1 Feature: 3d Secure In order to reduce chargeback costs As a system owner I want players to go through 3D secure enrollment and verification Background Given the card number 4236754 is enrolled And the card number 2341238 is not enrolled Scenario: Enrolled card Given the player has a card with number 4236754 And expiry date 12 11 And address line 1 Max Weber Platz 23 And address line 2 1st floor And post code 12300 And city Viena And country Austria When the player starts a transaction for 10 EUR Then the system will send a message “”” <message type=“ENROLMENT_CHK_MSG”> <CARD> 4236754</CARD> </message> “”” And the system will receive a response “”” <response> <ENROLEMENT_CHK>enrolled</ENROLEMENT_CHK> </response> “””
  • 18. 3D-secure v1 Then the system will send a message “”” <message type=“3D_AUTHORIZE”> <CARD>4236754</CARD> <EXPIRY>1211</EXPIRY> <ADDRESS_LINE1>Max Weber Platz 23</ADDRESS_LINE_1> <ADDRESS_LINE2>1st floor</ADDRESS_LINE_1> <POST_CODE>12300</POST_CODE> <CITY>VIENNA</CITY> <COUNTRY>AUSTRIA</COUNTRY> </message> “”” And the system will receive a response “”” <response> <AUTHORIZE> <3D_SECURE_URL>http://hsbc.co.uk</3D_SECURE_URL> <PA_REQ>232325454-444444232323232</PA_REQ> </AUTHORIZE> </response> “”” And the system will redirect the user to http://hsbc.co.uk And the PA-REQ code in the form will be 232325454-444444232323232
  • 19. 3D-secure v2 Feature: Card enrollment with 3d Secure In order to reduce chargeback costs As a system owner I want players to go through 3D secure enrollment and verification before proceeding with actual authorization Scenario Outline: 3d transaction processing Given the card was <enrolled> And 3D Secure gateway response was <response> Then the transaction status is <status> Examples: Response arrived Examples: still waiting for response Examples: card not enrolled, so not going through 3D at all enrolled response status YES cancel CANCELLED YES authorize PENDING_AUTHORIZATION enrolled response status YES not received yet PENDING 3D SECURE enrolled response status NO not received yet PENDING AUTHORIZATION
  • 20. Automation tools • Cucumber: http://cucumber.io • JBehave: http://jbehave.org • SpecFlow: http://www.specflow.org • Appium: http://appium.io/