Top Banner
BDD, Gherkin, Cucumber and why we need it
25

«BDD, Gherkin, Cucumber and why we need it for successful product development»

Jan 09, 2017

Download

Technology

Provectus
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: «BDD, Gherkin, Cucumber and why we need it for successful product development»

BDD, Gherkin, Cucumber and why we need it

Page 2: «BDD, Gherkin, Cucumber and why we need it for successful product development»

7

Impact Mapping

Story Mapping

Establishing a shared understandingWhy?

How?Code

Epics

Deliverables, Outputs

Impacts, Outcomes

Easier to define upfront Harder to define upfront

User Activities

User Stories

Goals

AcceptanceCriteria

Bugreports

Isolated,formalizedexamples

Examples

Page 3: «BDD, Gherkin, Cucumber and why we need it for successful product development»

8

Collecting Acceptance Criteria

“I would try to put a book into the shopping cart …”

“I’d check whether the shopping cart is empty, when I enter the shop …”

As a potential customerI want to collect books in a shopping cart

So that I can order several books at once.

“Imagine this story is already implemented:

how would you verify it?”

“I would try to add 1000 books to the shopping cart …”

Page 4: «BDD, Gherkin, Cucumber and why we need it for successful product development»

8

Collecting Acceptance Criteria

“I would try to put a book into the shopping cart …”

“I would try to remove a book from the shopping cart…”

“I’d check whether the shopping cart is empty, when I enter the shop …”

Books can be added to shopping cart.

Books can be removed from shopping cart.

Shopping cart should be empty when entering the shop.

... ? …

As a potential customer

I want to collect books in a shopping cartSo that I can order several books at once.

“Imagine this story is already implemented:

how would you verify it?”

“I would try to add 1000 books to the shopping cart …”

Page 5: «BDD, Gherkin, Cucumber and why we need it for successful product development»

9

Usingexamples

Page 6: «BDD, Gherkin, Cucumber and why we need it for successful product development»

12

Discussion of acceptance criteria

{

}

We would like to encourage new users to buy in our shop.Therefore we offer 10% discount for their first order.

Original idea for the illustration: George Dinwiddiehttp://blog.gdinwiddie.com/

Page 7: «BDD, Gherkin, Cucumber and why we need it for successful product development»

12

Discussion of acceptance criteria

{

}

Register as “bart_bookworm”Go to “/catalog/search”Enter “ISBN-0955683610”Click “Search”Click “Add to Cart”Click “View Cart”Verify “Subtotal” is “$33.75”

We would like to encourage new users to buy in our shop.Therefore we offer 10% discount for their first order.

Original idea for the illustration: George Dinwiddiehttp://blog.gdinwiddie.com/

Page 8: «BDD, Gherkin, Cucumber and why we need it for successful product development»

16

Discussion of acceptance criteria

publicvoidTestInitialOrderDiscount(){

Customer newCustomer= newCustomer();Order newOrder= newOrder(newCustomer);newOrder.AddBook(

Catalog.Find(“ISBN-0955683610”));Assert.Equals(33.75,

newOrder.Subtotal);}

Register as “bart_bookworm”Go to “/catalog/search”Enter “ISBN-0955683610”Click “Search”Click “Add to Cart”Click “View Cart”Verify “Subtotal” is “$33.75”

We would like to encourage new users to buy in our shop.Therefore we offer 10% discount for their first order.

Original idea for the illustration: George Dinwiddiehttp://blog.gdinwiddie.com/

Page 9: «BDD, Gherkin, Cucumber and why we need it for successful product development»

13

Specification by ExampleExamples …• make abstract descriptions

better understandable

However …• examples are usually not formally

exchanged or documented

Examples Tests

Requirements

consist of

describe verifyfulfillment of

Page 10: «BDD, Gherkin, Cucumber and why we need it for successful product development»

16

Discussionofacceptancecriteria

publicvoidTestInitialOrderDiscount(){

Customer newCustomer= newCustomer();Order newOrder= newOrder(newCustomer);newOrder.AddBook(

Catalog.Find(“ISBN-0955683610”));Assert.Equals(33.75,

newOrder.Subtotal);}

Register as “bart_bookworm”Go to “/catalog/search”Enter “ISBN-0955683610”Click “Search”Click “Add to Cart”Click “View Cart”Verify “Subtotal” is “$33.75”

We would like to encourage new users to buy in our shop.Therefore we offer 10% discount for their first order.

Original idea for the illustration: George Dinwiddiehttp://blog.gdinwiddie.com/

Page 11: «BDD, Gherkin, Cucumber and why we need it for successful product development»

17

… with formalized examples

Given

When the user adds a book with the price of EUR 37.5 into the shopping cart

Then the shopping cart sub-total is EUR 33.75.

Original idea for the illustration: George Dinwiddiehttp://blog.gdinwidiee.com

the user has not ordered yet

Page 12: «BDD, Gherkin, Cucumber and why we need it for successful product development»

18

Discover hidden assumptions

Actually, this is not quite right:Books on sale should be excluded.

Original idea for the illustration: George Dinwiddiehttp://blog.gdinwidiee.com

Page 13: «BDD, Gherkin, Cucumber and why we need it for successful product development»

19

Collaboration: 3 amigos

“HappyPath”

Technical feasability

Exceptions, border cases

Original idea for the illustration: George Dinwiddiehttp://blog.gdinwidiee.com

Page 14: «BDD, Gherkin, Cucumber and why we need it for successful product development»

20

Abstract acceptance criteria

Asa shop visitorI want to collect books in my shopping basketso that I can purchase multiple books at once.

Books can be added to the shopping basket

Books can be removed from the shopping basket

Shopping basket is initially empty

The same book can be added multiple times to the shopping basket

Page 15: «BDD, Gherkin, Cucumber and why we need it for successful product development»

21

Examples in Gherkin

As a shop visitorI want to collect books in my shopping basketso that I can purchase multiple books at once.

Books can be added to the shopping basket

Given my shopping basket is empty

When I add the book “Harry Potter” to my shopping basket

Thenmy shopping basket should contain 1 copy of “Harry Potter”

Page 16: «BDD, Gherkin, Cucumber and why we need it for successful product development»

22

Asa shop visitorI want to collect books in my shopping basketso that I can purchase multiple books at once.

Examples in Gherkin

Given my shopping basket contains 1 copy of “Harry Potter”

When I add the book “Harry Potter” to my shopping basket

Thenmy shopping basket should contain 2 copies of “Harry Potter”

The same book can be added multiple times to the shopping basket

Page 17: «BDD, Gherkin, Cucumber and why we need it for successful product development»

23

The same book can be added multiple times to the shopping basket

Structure of examples

Given my shopping basket contains 1 copy of “Harry Potter”

When I add the book “Harry Potter” to my shopping basket

Then my shopping basket should contain 2 copies of “Harry Potter”

Title: Describes intention/abstract acceptance criterion

Arrange: Context, initial state of the system

Act: Execution of the feature

Assert: Assertion of observable behaviour

And I should see the warning: “Book already existed in basket”

Triple-Aconstraint“Checks”

Chainingup steps

Page 18: «BDD, Gherkin, Cucumber and why we need it for successful product development»

25

Purpose of the examples

• Shared understanding of

acceptance criteria

• Documentation:

system details

•Regression-tests:violated assumptions

Page 19: «BDD, Gherkin, Cucumber and why we need it for successful product development»

26

Continuous validation with automation

Given my shopping basket contains 1 copy of “Harry Potter”

When I add the book “Harry Potter” to my shopping basket

Then my shopping basket should contain 2 copies of “Harry Potter”

System

„Step Definitions“ are binding individual stepsto an automatable interface of the application.

Automatableinterface

UIAutomation

Automation does not necessarily have to bind to the UI.

Automatability of system is supported/evolving with development.

Page 20: «BDD, Gherkin, Cucumber and why we need it for successful product development»

24

Automation examples

Page 21: «BDD, Gherkin, Cucumber and why we need it for successful product development»

24

NO

Page 22: «BDD, Gherkin, Cucumber and why we need it for successful product development»

https://github.com/radiant/radiant/tree/master/features/https://github.com/carrierwaveuploader/carrierwave/tree/master/featureshttps://github.com/webjam/webjam/tree/master/features

Better look at real projects

Page 23: «BDD, Gherkin, Cucumber and why we need it for successful product development»

43

Conclusions• Examples• Illustrate abstract requirements• Trigger new questions: collaborative discovery• Shared understanding

• Living documentation• Automatically validated examples• Business readable regression tests• Reliable source of truth

• Gherkin based automated examples• Open source, cross-platform• Requirement details versioned with source code

Page 24: «BDD, Gherkin, Cucumber and why we need it for successful product development»

44

Gherkin based automationtools

www.cukes.info

www.behat.org

Ruby, Java, JavaScript, C++

www.specflow.org

.NET, Mono, Silverlight, WP7

PHP

Page 25: «BDD, Gherkin, Cucumber and why we need it for successful product development»

45

Books