41
Copyright © 2015 SolutionsIQ Inc. All rights reserved. 6801 185th Ave NE, Suite 200 Redmond, WA 98052 solutionsiq.com 1.800.235.4091 Behavior Driven development Introduction PREPARED BY Ranjith Tharayil Agile Coach SolutionsIQ

Introduction to BDD

Embed Size (px)

Citation preview

Page 1: Introduction to BDD

Copyright © 2015 SolutionsIQ Inc. All rights reserved.

6801 185th Ave NE, Suite 200Redmond, WA 98052solutionsiq.com1.800.235.4091

Behavior Driven development Introduction

PREPARED BYRanjith TharayilAgile Coach SolutionsIQ

Terri Sharp
Background artwork, logo and address block are locked.Customize it: Unused text placeholders can be deleted if not needed. The title placeholder will hold up to three lines of text, sub title holds up to two lines of text. For readability, it would be better not to change the size of the text on the title slides.
Page 2: Introduction to BDD

2

Not again , Stop the crap we have seen this

Terri Sharp
This slide shows the first three levels of the bullet list heirarchy. You can unbold the subhead line if you wish, or use the Increase List Level button to move through the levels:Level one, Calibri 19pt boldLevel two, Calibri 19pt regularLevel three, Calibri 19pt regular with double carat bulletLevel four, Calibri 17pt regular with hyphen bulletLevel five, Calibri 17pt regular with square bulletCustomize it: Change text size if needed to fit for an extremely text-heavy layout.
Page 3: Introduction to BDD

3

History

public class CustomerLookupTest extends TestCase { testFindsCustomerById() { ... } testFailsForDuplicateCustomers() { ... } ...}

renders something like this:

CustomerLookup- finds customer by id- fails for duplicate customers- ...

Dan North

• Thought experiment • AgileDox• Chris Stevenson

Page 4: Introduction to BDD

4

“ ”BDD is about implementing an application by describing it from the point of view of its stakeholders

Terri Sharp
The gray background box is locked. A blank version (no gray box) is available if needed.Customize it: Move the quote marks to fit around your text. The text placeholder can be changed as needed, if you wish to use smaller text and add an image or graphic.
Page 5: Introduction to BDD

5

Title: Customer withdraws cashAs a customer, I want to withdraw cash from an ATM,so that I don’t have to wait in line at the bank.

Scenario 1: Account is in creditGiven the account is in creditAnd the card is validAnd the dispenser contains cashWhen the customer requests cashThen ensure the account is debitedAnd ensure cash is dispensedAnd ensure the card is returned

Scenario 2: Account is overdrawn past the overdraft limitGiven the account is overdrawnAnd the card is validWhen the customer requests cashThen ensure a rejection message is displayedAnd ensure cash is not dispensedAnd ensure the card is returned

Terri Sharp
This slide shows the first three levels of the bullet list heirarchy. You can unbold the subhead line if you wish, or use the Increase List Level button to move through the levels:Level one, Calibri 19pt boldLevel two, Calibri 19pt regularLevel three, Calibri 19pt regular with double carat bulletLevel four, Calibri 17pt regular with hyphen bulletLevel five, Calibri 17pt regular with square bulletCustomize it: Change text size if needed to fit for an extremely text-heavy layout.
Page 6: Introduction to BDD

6

The Philosophy

Product Owner

Developers Quality Assurance

Production Support

Business

Page 7: Introduction to BDD

7

Lack of Collaboration

Terri Sharp
This slide shows the first three levels of the bullet list heirarchy. You can unbold the subhead line if you wish, or use the Increase List Level button to move through the levels:Level one, Calibri 19pt boldLevel two, Calibri 19pt regularLevel three, Calibri 19pt regular with double carat bulletLevel four, Calibri 17pt regular with hyphen bulletLevel five, Calibri 17pt regular with square bulletCustomize it: Change text size if needed to fit for an extremely text-heavy layout.
Page 8: Introduction to BDD

8

The old school of thought , Inside Out

Test

Code

Spec

Inside Out

Page 9: Introduction to BDD

9

The BDD school of thought ,Outside in

Spec

Test

Code

Outside in

Page 10: Introduction to BDD

10

BDD pros

• High collaboration

• Early feedback

• Living documentation

• Domain language

• Executable Acceptance criteria

• Enables high Automation

• Enables Disciplined delivery

Page 11: Introduction to BDD

11

Writing scenarios , Modelling the systems as a state Machine .

Scenario 1: Account is in credit

Given the account is in creditAnd the card is validAnd the dispenser contains cash

When the customer requests cash

Then ensure the account is debitedAnd ensure cash is dispensedAnd ensure the card is returned

Given Then

when

Page 12: Introduction to BDD

12

let’s imagine you’re building a credit card payment system

Customers should be prevented from entering invalid credit card details.

If a customer enters a credit card number that isn’t exactly 16 digits long, when they try to submit the form, it should be redisplayed with an error message advising them of the correct number of digits.

Terri Sharp
This slide shows the first three levels of the bullet list heirarchy. You can unbold the subhead line if you wish, or use the Increase List Level button to move through the levels:Level one, Calibri 19pt boldLevel two, Calibri 19pt regularLevel three, Calibri 19pt regular with double carat bulletLevel four, Calibri 17pt regular with hyphen bulletLevel five, Calibri 17pt regular with square bulletCustomize it: Change text size if needed to fit for an extremely text-heavy layout.
Page 13: Introduction to BDD

13

Feature: Withdraw Cash Most customers will use the ATM to make quick withdrawals of cash from their checking or savings accounts. The ATM will only dispense $20 bills.

Scenario: Withdraw money from an account Given my account has a balance of $100 When I withdraw $20 Then $20 will be released by the cash device And my account balance will be $80

Scenario: Amount not a multiple of $20 Given my account has a balance of $100 When I try to withdraw $15 Then I will receive an error that I must specify a multiple of $20

Scenario: Insufficient funds Given my account has a balance of $40 When I try to withdraw $60 Then I will receive an insufficient funds error

Terri Sharp
This slide shows the first three levels of the bullet list heirarchy. You can unbold the subhead line if you wish, or use the Increase List Level button to move through the levels:Level one, Calibri 19pt boldLevel two, Calibri 19pt regularLevel three, Calibri 19pt regular with double carat bulletLevel four, Calibri 17pt regular with hyphen bulletLevel five, Calibri 17pt regular with square bulletCustomize it: Change text size if needed to fit for an extremely text-heavy layout.
Page 14: Introduction to BDD

14

Feature: Feedback when entering invalid credit card details

Background: Given I have chosen some items to buy And I am about to enter my credit card details

Scenario: Credit card number too short When I enter a card number that's only 15 digits long And all the other details are correct And I submit the form Then the form should be redisplayed And I should see a message advising me of the correct number of digits

Scenario: Expiry date invalid When I enter a card expiry date that's in the past And all the other details are correct And I submit the form Then the form should be redisplayed And I should see a message telling me the expiry date must be wrong

Page 15: Introduction to BDD

15

Background

Page 16: Introduction to BDD

16

Background

Page 17: Introduction to BDD

17

Data Tables

Page 18: Introduction to BDD

18

Scenario Outline

Page 19: Introduction to BDD

19

Scenario Outline

Page 20: Introduction to BDD

20

Testing stack

Page 21: Introduction to BDD

21

BDD and test Pyramid

I have shamelessly copied this pic form Mike Cohn's book

Terri Sharp
This slide shows the first three levels of the bullet list heirarchy. You can unbold the subhead line if you wish, or use the Increase List Level button to move through the levels:Level one, Calibri 19pt boldLevel two, Calibri 19pt regularLevel three, Calibri 19pt regular with double carat bulletLevel four, Calibri 17pt regular with hyphen bulletLevel five, Calibri 17pt regular with square bulletCustomize it: Change text size if needed to fit for an extremely text-heavy layout.
Page 22: Introduction to BDD

22

Test iceberg

Page 23: Introduction to BDD

23

The flow

N-1 N N+1

» Sprints

spec

» Sprint planning

» Pull only those with spec ready » Three Amigo Meetings

» BA ,PO» Developers » QA» Production Support » Any one who could

contribute in scenario identification

• Disciplined delivery• Working agreements • DOR• DOD• Less risk of failure

Page 24: Introduction to BDD

24

Scenario Identification

Functional:Happy path

Sad path

Constraints

Page 25: Introduction to BDD

25

Feature injection The aim of Feature Injection is to flesh out the minimum set of features that will provide

the most benefit to stakeholders in terms of achieving their business goals

1.  Hunt the value.2.  Inject the features.3.  Spot the examples

Page 26: Introduction to BDD

26

When to Embrace BDD ?

The problem

• Full team participation

• ROI

• waste of time

“Assumption BDD is practices in its fullest of its sprits” and still there is question on ROI

Abstract : Behaviour Driven Development (BDD) is a collaborative and disciplined technique to help us build

the right product. In the last decade BDD has had her own bit of glory and criticism. Many teams in the recent

past have reaped benefits from this technical practice, while some teams complain that are yet to find any

value. This article focuses on answering two questions; Why BDD might not always be the right choice? What

are the ideal conditions when teams should adopt it?

Page 27: Introduction to BDD

27

The Gap

Page 28: Introduction to BDD

28

Complexity

Page 29: Introduction to BDD

29

When to use Behaviour Driven Development

Page 30: Introduction to BDD

30

How to measure complexity

Points Complexity Description

1 Just about everyone in the world has done this

2 Lots of people have done this, including someone on our team.

3 Someone in our company has done this, or we have access to expertise

4 Someone in the world did this, but not in our organization (and probably

at a competitor)

5 Nobody in the world has ever done this before

Second Order ignorance We say second order of ignorance exist if “when I don't know that I don't know something”.

Liz Keogh

Page 31: Introduction to BDD

31

BDD for maintenance projects ?

• Lots of legacy code • Enhancements

• Defect fix

• Production issues

Page 32: Introduction to BDD

Adapting BDD for software maintenance projects using the “dEep” model.

we can categories the type of work into 4 different types .

32

d , defects

E ,Complex Enhancement

e ,Simple Enhancements

p , urgent production issues

Page 33: Introduction to BDD

33

E , Complex Enhancements

• classical BDD style:

• 3 Amigo meetings

• specification by example

• pull based

• TDD strategy , etc

• working agreements ,DOR ,DOD

• highly disciplined

• Full team participation

Page 34: Introduction to BDD

34

e ,Smaller Enhancements

• Skip 3 Amigo meetings

• cover the module with scenarios based test

• Express new requirements in the form of a scenario

• get the spec reviewed by BA/PO , dev ,QA .

• Highly pragmatic approach ,

• (need basis ) UT or E2E test

• test first approach or TDD

Page 35: Introduction to BDD

35

d, Defects

• d came to existence because there was a hole in your test pyramid

• fix the hole that caused the issue ,may be a test or two , be pragmatic

• fix the code , again test first strategy

Page 36: Introduction to BDD

36

p, urgent production issues

• fix the code first & deploy

• put a card in your back log to fix the hole in test pyramid which caused the issues

• Test last strategy

Page 37: Introduction to BDD

37

BDD in a nut shell

I have shamelessly copied this pic from Rachel's

blog

Terri Sharp
This layout is for a single image, chart or infographic to fill the entire live space of the slide.Customize it: Add a text box filled with white as a caption, if needed.For a true full frame slide image (no title), use the Blank slide master, it has no title placeholder and no gray rule, and use the Insert > Picture command.
Page 38: Introduction to BDD

38

Key Question

I have shamelessly copied this pic from Naresh Jain PPT

Page 39: Introduction to BDD

BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.

Terri Sharp
The gray background box is locked. A blank version (no gray box) is available if needed.Customize it: Move the quote marks to fit around your text. The text placeholder can be changed as needed, if you wish to use smaller text and add an image or graphic.
Page 40: Introduction to BDD

40

“BDD doesn't come with BRAINS kindly use yours”

Terri Sharp
Customize it: Feel free to add an image or graphic to the right side of the box, if needed.
Page 41: Introduction to BDD

41

Thank you!solutionsiq.com / 1.800.235.4091

» Acknowledgments :» Sharad Julka for proposing the catchy name “dEep”

» Images in this document are shameless coped from 2 books » BDD in Action ,Manning » The Cucumber Book

Terri Sharp
Customize it: Thank you slide can also be used to provide additional contact information.