BDD / Specification by example

Post on 15-Feb-2017

211 views 4 download

Transcript of BDD / Specification by example

Specification by Example (BDD)

Agenda

• Software Development Challenges

• BDD to the Rescue

• Spec Examples

• Automation Tools

Creating software products is challenging…

requirements codeS 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 goalsspecifying

deriving scope

collaboratively specifyexamples

refining specification

automatedvalidation of specifications

building

living documentation

requirements codeS 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 v1Feature: 3d Secure

In order to reduce chargeback costsAs a system ownerI want players to go through 3D secure enrollment and verification

BackgroundGiven the card number 4236754 is enrolledAnd the card number 2341238 is not enrolled

Scenario: Enrolled cardGiven the player has a card with number 4236754

And expiry date 12 11And address line 1 Max Weber Platz 23And address line 2 1st floorAnd post code 12300And city VienaAnd country AustriaWhen the player starts a transaction for 10 EURThen 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 v1Then 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.ukAnd the PA-REQ code in the form will be 232325454-

444444232323232

3D-secure v2

Feature: Card enrollment with 3d SecureIn order to reduce chargeback costsAs a system ownerI want players to go through 3D secure enrollment and

verificationbefore proceeding with actual authorization

Scenario Outline: 3d transaction processingGiven 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/