SlideShare uma empresa Scribd logo
1 de 60
Get What You Need,
Not What You Ask For!
An Intro to ATDD/BDD and HDD

David Bulkin
David.Bulkin@LitheSpeed.com
About Me
David Bulkin

VP Training Services LitheSpeed
+1.215-764-6822
David.Bulkin@lithespeed.com
@davidbulkin
www.LitheSpeed.com
www.linkedin.com/in/davidbulkin
Agile Enablement that’s
pragmatic, not prescriptive.
There is a gap of
understanding between
business and development
Development

Business
There is a also a gap between
what we build and what we
should build.
What we build

What we
should build
In this session, we want to
bridge these gaps…

…and achieve a few
other things along the
way
Perspective before
we start…
TDD
Developer builds what she thinks the
business explained.
1. Write a failing test
As a bonus, get a
better design and
automated unit
testing.

Red

1. Write a
failing test

Refactor

3. Make code better

Green

2. Make code work
ATDD/BDD
Use shared language to build what
the business really requested.
As a bonus get
automated
acceptance test
HDD	
  
Use shared language
to better understand
what is really needed.
Learn and pivot
for real success!

1. Develop a Business Plan
Case

Learn

Ideas

Data

Build

Code

Measure

3. Adjust the Business
Goals & Approach

2. Deliver Working
System
2

Testable
Example
Example: We’re developing an early, basic,
consumer calculator.
It’s 1972, the year of the last Apollo
mission to the moon.

7

8

9

4

5

6

1

2

3

+

0

=

Clear
Calculator Constraints
•  8 bits

7

8

9

4

5

6

1

2

3

+

0

=

Clear

•  Can store 0 to 255.
•  Unsigned, meaning that it
cannot handle negative
numbers.
•  Handles only plus and minus
operations.
With this calculator, the user can:
• 
• 
• 
• 

Enter a number
Enter an operand
(plus or minus)
Enter another
number
Press the “=“ to
calculate

For example,
12 + 10 = 22
14 + 3 = 17
10 – 8 = 2

12	
  

7
4
1

8
75
42

9

+	
  
69
8
3 610	
  
75 8 9 =	
  
+ 1- 42*53 8 9
7 6
Cle
22	
  
=2 5 6
ar + 1- 4*73 8 9
Cl
=2 3
ear+ 1 4* 5 6
Cl
ear

+ = 2* 3
1Cl
0
ear+ = =
Clear
Let’s create simple tests for the results
that do the following:
•  Ensure math is correct
•  Check boundaries
•  Test for results our calculator
can’t handle
•  Checking only for valid
sequence of input:
1.  Number
2.  Operand (+ or -)
3.  Number
4.  Equals

7

8

9

4

5

6

1

2

3

+

0

-

Clear

=
What I mean by valid sequence of input:

7

8

9

4

5

6

1

2

3

+

0

=

Clear

Not worried about:
•  + +
•  12 - - 10
•  etc.
Just valid entry sequence
to test math:
12 + 10 = 22
Let’s create a test of the math, assuming valid
input, and checking the boundaries of what our
calculator can handle.
Number (A)

0

Operand

+

Number (B)

0

Result?

0
Let’s create a test of the math, assuming valid
input, and checking the boundaries of what our
calculator can handle.
Number (A)

0
0
1

Operand

+
+
+

Number (B)

0
1
254

Result?

0
1
255
Now that I got
you started, do
some more
examples…
Let’s create a test of the math, assuming valid
input, and checking the boundaries of what our
calculator can handle.
Number (A)

0
0
1
1
255
1
1

Operand

+
+
+
+
-

Number (B)

Result?

0
1
254
255
254
0
2

0
1
255
ERR
1
1
ERR
t’s
Le
Organ
ize
Our
Happy path tests
Valid Addition
Number (A)

Operand

Number (B)

Result?

 0

+

0

0

0 

+

1

1

99

+

100

199

254

+

1

255

Number (B)

Result?

Valid Subtraction
Number (A)

Operand

0

-

0

0

1 

-

0

1

100

-

50

50

255

-

255

0
Unhappy path tests
Invalid Addition
Number (A)

Operand

Number (B)

Result?

255

+

1

ERR

128

+

128

ERR

Number (B)

Result?

Invalid Subtraction
Number (A)

Operand

0

-

1

ERR

1 

-

2

ERR

128

-

200

ERR
2

Testable
Example
A ticket to Agile Land:
Agile Land Theme Park
Admit One – Ages 3 to 103

•  Valid 364 Days a Year (not valid on Christmas)
•  Valid for standard park opening and closing times of
9:00 AM to 9:00 PM
•  Valid for one child, 3 and up, or adult
•  Provides free access to most park rides
and attractions, some attractions are
additional.
Approximately 1,000 tickets sold and
used each month
1060
1040
1020
1000
980
960
940
920

Jan

Feb

Mar

Apr

May

Jun

Jul

Aug

Sep

Oct

Nov

Dec
The Solution:
Quantity
Discounts
Solution Quantity Discount Story:

As a member of a sizable
group
I want to purchase large
blocks of one day passes
So that I can get quantity
discounts and save money
Acceptance Criteria Pricing
q 

q 

q 

Purchase <= 50 tickets at $50.00
each, from 1 to 50 inclusive
Purchase 51 to 100 tickets at $40.00
each, from 1 to 100 inclusive
Purchase 101 or more tickets at $30.00
each, from 1 to infinity
Let’s Create a
Testable Spec…
<= 50 tickets at $50.00 each, from 1 to 50 inclusive
51 to 100 tickets at $40.00 each, from 1 to 100 inclusive
101 or more tickets at $30.00 each, from 1 to infinity

Count

Price Each

Total?

0

$50

$0

1

$50

$50
Now that I got you
started…
<= 50 tickets at $50.00 each, from 1 to 50 inclusive 51 to 100
tickets at $40.00 for all tickets, from 1 to 100 inclusive 101 or
more tickets at $30.00 each for all tickets, from 1 to infinity

Count

Price Each

Total?

0

$50

$0

1

$50

$50

50

$50

$2,500

51

$40

$2,040

100

$40

$4,000

101

$30

$3,030
We bridged the gap of
understanding,
but…

Didn’t deliver value!
(We verified but didn’t
validate.)
Let’s Fix Our Acceptance
Criteria…
Acceptance Criteria Pricing
q 
Purchase <= 50 tickets at $50.00 each,
from 1 to 50 inclusive
q 

q 

Purchase 51 to 100 tickets at $40.00
each, from 1 to 100 inclusive
Purchase 101 or more tickets at $30.00
each, from 1 to infinity
Acceptance Criteria Pricing
q  Purchase <= 50 tickets at $50.00
each, from 1 to 50 inclusive
q  Purchase 51 to 100 tickets at $40.00
each, for tickets 51 to 100 inclusive
q  Purchase 101 or more tickets at $30.00
each, for tickets 101 to infinity
Let’s Create a
Testable Spec
Purchased Total for Purchased Total for Purchased Total for
Total
0 to 50
0 to 50? 51 to 100 51 to 100? 101 to ∞ 101 to ∞? Purchase

Count

0

0

$0

0

$0

0

$0

$0

1

1

$50

0

$0

0

$0

$50

50

50

$2,500

0

$0

0

$0

$2,500

51

50

$2,500

1

$40

0

$0

$2,540

100

50

$2,500

50

$2,000

0

$0

$4,500

101

50

$2,500

50

$2,000

1

$30

$4,530
Better!
But, not good
enough!
What’s Next?!
Approximately 1,000 tickets
sold and used each month
1060
1040
1020
1000
980
960
940
920

Jan

Feb

Mar

Apr

May

Jun

Jul

Aug

Sep

Oct

Nov

Dec
1060
1040
1020
1000
980
960
940
920

Jan

What do we
expect next
month and
beyond?
Feb

Mar

Apr

May

Jun

Jul

Aug

Sep

Oct

Nov

Dec
1060
1040
1020
1000
980
960
940
920

Do we
expect to
sell more?

Jan

Feb

Mar

Apr

May

Jun

Jul

Aug

Sep

Oct

Nov

Dec
$$$

What We Would Have Sold?
Price
Level

Qty

Gross?

$50.00

1,000

$50,000

Month 1
Price
Level

Qty?

Gross?

$50.00

800

$40,000

$40.00

200

$8,000

$30.00

200

$6,000

1,200

$54,000

 

We expect
more
gross
revenue!
What
we
get…

What We Would Have Sold?
Price
Level

Qty

Gross?

$50.00

1,000

$50,000

Month 1 - Projected

Month 1 - Actual

Gross?

Price
Level

Qty?

Gross?

800

$40,000

$50.00

400

$20,000

$40.00

200

$8,000

$40.00

400

$16,000

$30.00

200

$6,000

$30.00

450

$13,500

1,250

$49,500

Price
Level

Qty?

$50.00

 

1,200

$54,000

 
What else
should we
know?
How about average
net revenue from
concessions and
parking per
attendee?
Curren
t

Month Two
Qty?
We are selling close
1,000
1,000
to the expected
 
 
 
number of tickets,
Pricebut, to people who
Level
Qty?
$50.00
400
$40.00 spend less!
400

Expected

Price Level
$50.00
 

$30.00
 

 

Actual

Ticket Additional Additional
Gross? Per Person?
Total?
$50,000
$20
$20,000
 
 
 
 
 
 
Ticket Additional Additional
Gross? Per Person?
Total?
$20,000
$20
$8,000
$16,000
$20
$8,000
$15,000
$20
$10,000
 
 
 
 
 
 
Ticket Additional Additional
Gross? Per Person?
Total?
$20,000
$20
$8,000
$16,000
$8
$3,200
$13,500
$4
$1,800
 
 
 

 
Price Level
$50.00
$40.00
$30.00
 

500
1,300

Qty?
400
400
450
1,250

 

Gross?
$70,000
$70,000

Gross?
$28,000
$24,000
$25,000
$77,000

Gross?
$28,000
$19,200
$15,300
$62,500
Pivot
What would
you do now?
What else do
you need to
know?
Testable
examples work
for the
business too!
In Summary
• 

User stories and acceptance criteria are easily
misunderstood, so support them with testable
examples.

• 

Our business rules are not always well thought
out, so use testable examples to question,
identify, and fix bad rules

• 

We often don’t understand the business impact
of what we build, so question & prove
assumptions with HDD, realign & pivot as
necessary!
Said Another Way…
TDD: Developer building what he/she thinks the
business wants is not enough!
ATDD/BDD: Getting on the same page about what
to build is good, and questioning what you agreed
to with ATDD/BDD is incredibly helpful,
but…
Think about,
align to, and
pivot towards value
with

Hypothesis-Driven
Development (HDD)
Thank You!
David Bulkin

VP Training Services LitheSpeed
+1.215-764-6822
David.Bulkin@lithespeed.com
@davidbulkin
www.LitheSpeed.com
www.linkedin.com/in/davidbulkin

Mais conteúdo relacionado

Destaque

The Timelessness of Lean Management
The Timelessness of Lean ManagementThe Timelessness of Lean Management
The Timelessness of Lean ManagementLitheSpeed
 
The Agile Analyst: Making Agile Methods Work for You
The Agile Analyst: Making Agile Methods Work for YouThe Agile Analyst: Making Agile Methods Work for You
The Agile Analyst: Making Agile Methods Work for YouLitheSpeed
 
Five Steps to a More Agile Organization
Five Steps to a More Agile OrganizationFive Steps to a More Agile Organization
Five Steps to a More Agile OrganizationLitheSpeed
 
Driving Lean Innovation on Agile Teams
Driving Lean Innovation on Agile TeamsDriving Lean Innovation on Agile Teams
Driving Lean Innovation on Agile TeamsLitheSpeed
 
Making Improvement Standard: Dynamic Agile Practices through Lean Standard Work
Making Improvement Standard: Dynamic Agile Practices through Lean Standard WorkMaking Improvement Standard: Dynamic Agile Practices through Lean Standard Work
Making Improvement Standard: Dynamic Agile Practices through Lean Standard WorkLitheSpeed
 
Five Steps to a More Agile Organization: Adopting Agility at Scale
Five Steps to a More Agile Organization: Adopting Agility at ScaleFive Steps to a More Agile Organization: Adopting Agility at Scale
Five Steps to a More Agile Organization: Adopting Agility at ScaleLitheSpeed
 
Continuous Improvement Tricks
Continuous Improvement TricksContinuous Improvement Tricks
Continuous Improvement TricksLitheSpeed
 
The Agile PMO: From Process Police to Adaptive Leadership
The Agile PMO: From Process Police to Adaptive LeadershipThe Agile PMO: From Process Police to Adaptive Leadership
The Agile PMO: From Process Police to Adaptive LeadershipLitheSpeed
 

Destaque (8)

The Timelessness of Lean Management
The Timelessness of Lean ManagementThe Timelessness of Lean Management
The Timelessness of Lean Management
 
The Agile Analyst: Making Agile Methods Work for You
The Agile Analyst: Making Agile Methods Work for YouThe Agile Analyst: Making Agile Methods Work for You
The Agile Analyst: Making Agile Methods Work for You
 
Five Steps to a More Agile Organization
Five Steps to a More Agile OrganizationFive Steps to a More Agile Organization
Five Steps to a More Agile Organization
 
Driving Lean Innovation on Agile Teams
Driving Lean Innovation on Agile TeamsDriving Lean Innovation on Agile Teams
Driving Lean Innovation on Agile Teams
 
Making Improvement Standard: Dynamic Agile Practices through Lean Standard Work
Making Improvement Standard: Dynamic Agile Practices through Lean Standard WorkMaking Improvement Standard: Dynamic Agile Practices through Lean Standard Work
Making Improvement Standard: Dynamic Agile Practices through Lean Standard Work
 
Five Steps to a More Agile Organization: Adopting Agility at Scale
Five Steps to a More Agile Organization: Adopting Agility at ScaleFive Steps to a More Agile Organization: Adopting Agility at Scale
Five Steps to a More Agile Organization: Adopting Agility at Scale
 
Continuous Improvement Tricks
Continuous Improvement TricksContinuous Improvement Tricks
Continuous Improvement Tricks
 
The Agile PMO: From Process Police to Adaptive Leadership
The Agile PMO: From Process Police to Adaptive LeadershipThe Agile PMO: From Process Police to Adaptive Leadership
The Agile PMO: From Process Police to Adaptive Leadership
 

Semelhante a An Intro to ATDD/BDD and HDD: Get What You Need, Not What You Ask For!

August 2010 Sat Training
August 2010 Sat TrainingAugust 2010 Sat Training
August 2010 Sat Trainingthe212system
 
Financial Forecasting For WordPress Businesses
Financial Forecasting For WordPress BusinessesFinancial Forecasting For WordPress Businesses
Financial Forecasting For WordPress BusinessesCaldera Labs
 
3.1 Rounding And Estimating
3.1 Rounding And Estimating3.1 Rounding And Estimating
3.1 Rounding And EstimatingJessca Lundin
 
Technological Solutions
Technological SolutionsTechnological Solutions
Technological SolutionsAlex Luna
 
Technological Solutions
Technological SolutionsTechnological Solutions
Technological SolutionsAlex Luna
 
Qvi Bplan
Qvi BplanQvi Bplan
Qvi Bplansajanz
 
International marketing customer relationship management
International marketing   customer relationship managementInternational marketing   customer relationship management
International marketing customer relationship managementstevetalks81
 
Simplified Forecasting masterclass CPA Australia Congress 2016 udpate
Simplified Forecasting masterclass CPA Australia Congress 2016 udpateSimplified Forecasting masterclass CPA Australia Congress 2016 udpate
Simplified Forecasting masterclass CPA Australia Congress 2016 udpateTim Richardson
 
Bplan 110128010005-phpapp02
Bplan 110128010005-phpapp02Bplan 110128010005-phpapp02
Bplan 110128010005-phpapp02ksyogesh
 
Skip-counting-workbook
Skip-counting-workbookSkip-counting-workbook
Skip-counting-workbookMariGiopato
 
Everyday math ppt
Everyday math pptEveryday math ppt
Everyday math pptjbpotts
 
3 Geeky Habits of Successful Affiliate Managers
3 Geeky Habits of Successful Affiliate Managers3 Geeky Habits of Successful Affiliate Managers
3 Geeky Habits of Successful Affiliate ManagersAffiliate Summit
 
Eleven Essentials for Young Entrepreneurs
Eleven Essentials for Young EntrepreneursEleven Essentials for Young Entrepreneurs
Eleven Essentials for Young EntrepreneursStephen King
 
By now you all should be having clearer idea of your research pape
By now you all should be having clearer idea of your research papeBy now you all should be having clearer idea of your research pape
By now you all should be having clearer idea of your research papeTawnaDelatorrejs
 
Chapter3.3prealg
Chapter3.3prealgChapter3.3prealg
Chapter3.3prealgnglaze10
 
04 2-decision trees-2016-09-23
04 2-decision trees-2016-09-2304 2-decision trees-2016-09-23
04 2-decision trees-2016-09-23IshanSingh75
 
Assumptions: Check yo'self before you wreck yourself
Assumptions: Check yo'self before you wreck yourselfAssumptions: Check yo'self before you wreck yourself
Assumptions: Check yo'self before you wreck yourselfErin Shellman
 

Semelhante a An Intro to ATDD/BDD and HDD: Get What You Need, Not What You Ask For! (20)

August 2010 Sat Training
August 2010 Sat TrainingAugust 2010 Sat Training
August 2010 Sat Training
 
Financial Forecasting For WordPress Businesses
Financial Forecasting For WordPress BusinessesFinancial Forecasting For WordPress Businesses
Financial Forecasting For WordPress Businesses
 
Pricing spreadsheet pdf
Pricing spreadsheet pdfPricing spreadsheet pdf
Pricing spreadsheet pdf
 
3.1 Rounding And Estimating
3.1 Rounding And Estimating3.1 Rounding And Estimating
3.1 Rounding And Estimating
 
Technological Solutions
Technological SolutionsTechnological Solutions
Technological Solutions
 
Technological Solutions
Technological SolutionsTechnological Solutions
Technological Solutions
 
Qvi Bplan
Qvi BplanQvi Bplan
Qvi Bplan
 
International marketing customer relationship management
International marketing   customer relationship managementInternational marketing   customer relationship management
International marketing customer relationship management
 
Simplified Forecasting masterclass CPA Australia Congress 2016 udpate
Simplified Forecasting masterclass CPA Australia Congress 2016 udpateSimplified Forecasting masterclass CPA Australia Congress 2016 udpate
Simplified Forecasting masterclass CPA Australia Congress 2016 udpate
 
Bplan 110128010005-phpapp02
Bplan 110128010005-phpapp02Bplan 110128010005-phpapp02
Bplan 110128010005-phpapp02
 
AIA2019 - Rick Rasmussen - Startup Financials
AIA2019 - Rick Rasmussen - Startup FinancialsAIA2019 - Rick Rasmussen - Startup Financials
AIA2019 - Rick Rasmussen - Startup Financials
 
Skip-counting-workbook
Skip-counting-workbookSkip-counting-workbook
Skip-counting-workbook
 
Fstm ppt 2020
Fstm ppt 2020Fstm ppt 2020
Fstm ppt 2020
 
Everyday math ppt
Everyday math pptEveryday math ppt
Everyday math ppt
 
3 Geeky Habits of Successful Affiliate Managers
3 Geeky Habits of Successful Affiliate Managers3 Geeky Habits of Successful Affiliate Managers
3 Geeky Habits of Successful Affiliate Managers
 
Eleven Essentials for Young Entrepreneurs
Eleven Essentials for Young EntrepreneursEleven Essentials for Young Entrepreneurs
Eleven Essentials for Young Entrepreneurs
 
By now you all should be having clearer idea of your research pape
By now you all should be having clearer idea of your research papeBy now you all should be having clearer idea of your research pape
By now you all should be having clearer idea of your research pape
 
Chapter3.3prealg
Chapter3.3prealgChapter3.3prealg
Chapter3.3prealg
 
04 2-decision trees-2016-09-23
04 2-decision trees-2016-09-2304 2-decision trees-2016-09-23
04 2-decision trees-2016-09-23
 
Assumptions: Check yo'self before you wreck yourself
Assumptions: Check yo'self before you wreck yourselfAssumptions: Check yo'self before you wreck yourself
Assumptions: Check yo'self before you wreck yourself
 

Mais de LitheSpeed

Transformational Leadership for Business Agility - AgileDC 2018
Transformational Leadership for Business Agility - AgileDC 2018Transformational Leadership for Business Agility - AgileDC 2018
Transformational Leadership for Business Agility - AgileDC 2018LitheSpeed
 
Build Measure Learn: Designing your MVP
Build Measure Learn: Designing your MVPBuild Measure Learn: Designing your MVP
Build Measure Learn: Designing your MVPLitheSpeed
 
Agile Trends in Government
Agile Trends in GovernmentAgile Trends in Government
Agile Trends in GovernmentLitheSpeed
 
Advancing the Retrospective: Dynamic Lean & Agile Continuous Improvement Tech...
Advancing the Retrospective: Dynamic Lean & Agile Continuous Improvement Tech...Advancing the Retrospective: Dynamic Lean & Agile Continuous Improvement Tech...
Advancing the Retrospective: Dynamic Lean & Agile Continuous Improvement Tech...LitheSpeed
 
Story Mapping in Depth
Story Mapping in DepthStory Mapping in Depth
Story Mapping in DepthLitheSpeed
 
Lean Startup Tools for Agile Product Teams
Lean Startup Tools for Agile Product TeamsLean Startup Tools for Agile Product Teams
Lean Startup Tools for Agile Product TeamsLitheSpeed
 
The Past and Future of Agility: Lean and Agile Trends and Prognostication
The Past and Future of Agility: Lean and Agile Trends and PrognosticationThe Past and Future of Agility: Lean and Agile Trends and Prognostication
The Past and Future of Agility: Lean and Agile Trends and PrognosticationLitheSpeed
 
Making Improvement Standard: Making Agile Practices Dynamic through Lean Stan...
Making Improvement Standard: Making Agile Practices Dynamic through Lean Stan...Making Improvement Standard: Making Agile Practices Dynamic through Lean Stan...
Making Improvement Standard: Making Agile Practices Dynamic through Lean Stan...LitheSpeed
 
Agile Transformation at The National Geographic Society
Agile Transformation at The National Geographic SocietyAgile Transformation at The National Geographic Society
Agile Transformation at The National Geographic SocietyLitheSpeed
 
Agile Agile: Adapting Practices to Support Explosive Growth by Ben Foster
Agile Agile: Adapting Practices to Support Explosive Growth by Ben FosterAgile Agile: Adapting Practices to Support Explosive Growth by Ben Foster
Agile Agile: Adapting Practices to Support Explosive Growth by Ben FosterLitheSpeed
 

Mais de LitheSpeed (10)

Transformational Leadership for Business Agility - AgileDC 2018
Transformational Leadership for Business Agility - AgileDC 2018Transformational Leadership for Business Agility - AgileDC 2018
Transformational Leadership for Business Agility - AgileDC 2018
 
Build Measure Learn: Designing your MVP
Build Measure Learn: Designing your MVPBuild Measure Learn: Designing your MVP
Build Measure Learn: Designing your MVP
 
Agile Trends in Government
Agile Trends in GovernmentAgile Trends in Government
Agile Trends in Government
 
Advancing the Retrospective: Dynamic Lean & Agile Continuous Improvement Tech...
Advancing the Retrospective: Dynamic Lean & Agile Continuous Improvement Tech...Advancing the Retrospective: Dynamic Lean & Agile Continuous Improvement Tech...
Advancing the Retrospective: Dynamic Lean & Agile Continuous Improvement Tech...
 
Story Mapping in Depth
Story Mapping in DepthStory Mapping in Depth
Story Mapping in Depth
 
Lean Startup Tools for Agile Product Teams
Lean Startup Tools for Agile Product TeamsLean Startup Tools for Agile Product Teams
Lean Startup Tools for Agile Product Teams
 
The Past and Future of Agility: Lean and Agile Trends and Prognostication
The Past and Future of Agility: Lean and Agile Trends and PrognosticationThe Past and Future of Agility: Lean and Agile Trends and Prognostication
The Past and Future of Agility: Lean and Agile Trends and Prognostication
 
Making Improvement Standard: Making Agile Practices Dynamic through Lean Stan...
Making Improvement Standard: Making Agile Practices Dynamic through Lean Stan...Making Improvement Standard: Making Agile Practices Dynamic through Lean Stan...
Making Improvement Standard: Making Agile Practices Dynamic through Lean Stan...
 
Agile Transformation at The National Geographic Society
Agile Transformation at The National Geographic SocietyAgile Transformation at The National Geographic Society
Agile Transformation at The National Geographic Society
 
Agile Agile: Adapting Practices to Support Explosive Growth by Ben Foster
Agile Agile: Adapting Practices to Support Explosive Growth by Ben FosterAgile Agile: Adapting Practices to Support Explosive Growth by Ben Foster
Agile Agile: Adapting Practices to Support Explosive Growth by Ben Foster
 

Último

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Último (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

An Intro to ATDD/BDD and HDD: Get What You Need, Not What You Ask For!

  • 1. Get What You Need, Not What You Ask For! An Intro to ATDD/BDD and HDD David Bulkin David.Bulkin@LitheSpeed.com
  • 2. About Me David Bulkin VP Training Services LitheSpeed +1.215-764-6822 David.Bulkin@lithespeed.com @davidbulkin www.LitheSpeed.com www.linkedin.com/in/davidbulkin
  • 4. There is a gap of understanding between business and development Development Business
  • 5. There is a also a gap between what we build and what we should build. What we build What we should build
  • 6. In this session, we want to bridge these gaps… …and achieve a few other things along the way
  • 8. TDD Developer builds what she thinks the business explained. 1. Write a failing test As a bonus, get a better design and automated unit testing. Red 1. Write a failing test Refactor 3. Make code better Green 2. Make code work
  • 9. ATDD/BDD Use shared language to build what the business really requested. As a bonus get automated acceptance test
  • 10. HDD   Use shared language to better understand what is really needed. Learn and pivot for real success! 1. Develop a Business Plan Case Learn Ideas Data Build Code Measure 3. Adjust the Business Goals & Approach 2. Deliver Working System
  • 12. Example: We’re developing an early, basic, consumer calculator. It’s 1972, the year of the last Apollo mission to the moon. 7 8 9 4 5 6 1 2 3 + 0 = Clear
  • 13. Calculator Constraints •  8 bits 7 8 9 4 5 6 1 2 3 + 0 = Clear •  Can store 0 to 255. •  Unsigned, meaning that it cannot handle negative numbers. •  Handles only plus and minus operations.
  • 14. With this calculator, the user can: •  •  •  •  Enter a number Enter an operand (plus or minus) Enter another number Press the “=“ to calculate For example, 12 + 10 = 22 14 + 3 = 17 10 – 8 = 2 12   7 4 1 8 75 42 9 +   69 8 3 610   75 8 9 =   + 1- 42*53 8 9 7 6 Cle 22   =2 5 6 ar + 1- 4*73 8 9 Cl =2 3 ear+ 1 4* 5 6 Cl ear + = 2* 3 1Cl 0 ear+ = = Clear
  • 15. Let’s create simple tests for the results that do the following: •  Ensure math is correct •  Check boundaries •  Test for results our calculator can’t handle •  Checking only for valid sequence of input: 1.  Number 2.  Operand (+ or -) 3.  Number 4.  Equals 7 8 9 4 5 6 1 2 3 + 0 - Clear =
  • 16. What I mean by valid sequence of input: 7 8 9 4 5 6 1 2 3 + 0 = Clear Not worried about: •  + + •  12 - - 10 •  etc. Just valid entry sequence to test math: 12 + 10 = 22
  • 17. Let’s create a test of the math, assuming valid input, and checking the boundaries of what our calculator can handle. Number (A) 0 Operand + Number (B) 0 Result? 0
  • 18. Let’s create a test of the math, assuming valid input, and checking the boundaries of what our calculator can handle. Number (A) 0 0 1 Operand + + + Number (B) 0 1 254 Result? 0 1 255
  • 19. Now that I got you started, do some more examples…
  • 20. Let’s create a test of the math, assuming valid input, and checking the boundaries of what our calculator can handle. Number (A) 0 0 1 1 255 1 1 Operand + + + + - Number (B) Result? 0 1 254 255 254 0 2 0 1 255 ERR 1 1 ERR
  • 22. Happy path tests Valid Addition Number (A) Operand Number (B) Result?  0 + 0 0 0  + 1 1 99 + 100 199 254 + 1 255 Number (B) Result? Valid Subtraction Number (A) Operand 0 - 0 0 1  - 0 1 100 - 50 50 255 - 255 0
  • 23. Unhappy path tests Invalid Addition Number (A) Operand Number (B) Result? 255 + 1 ERR 128 + 128 ERR Number (B) Result? Invalid Subtraction Number (A) Operand 0 - 1 ERR 1  - 2 ERR 128 - 200 ERR
  • 25.
  • 26. A ticket to Agile Land: Agile Land Theme Park Admit One – Ages 3 to 103 •  Valid 364 Days a Year (not valid on Christmas) •  Valid for standard park opening and closing times of 9:00 AM to 9:00 PM •  Valid for one child, 3 and up, or adult •  Provides free access to most park rides and attractions, some attractions are additional.
  • 27. Approximately 1,000 tickets sold and used each month 1060 1040 1020 1000 980 960 940 920 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
  • 28.
  • 30. Solution Quantity Discount Story: As a member of a sizable group I want to purchase large blocks of one day passes So that I can get quantity discounts and save money
  • 31. Acceptance Criteria Pricing q  q  q  Purchase <= 50 tickets at $50.00 each, from 1 to 50 inclusive Purchase 51 to 100 tickets at $40.00 each, from 1 to 100 inclusive Purchase 101 or more tickets at $30.00 each, from 1 to infinity
  • 33. <= 50 tickets at $50.00 each, from 1 to 50 inclusive 51 to 100 tickets at $40.00 each, from 1 to 100 inclusive 101 or more tickets at $30.00 each, from 1 to infinity Count Price Each Total? 0 $50 $0 1 $50 $50
  • 34. Now that I got you started…
  • 35. <= 50 tickets at $50.00 each, from 1 to 50 inclusive 51 to 100 tickets at $40.00 for all tickets, from 1 to 100 inclusive 101 or more tickets at $30.00 each for all tickets, from 1 to infinity Count Price Each Total? 0 $50 $0 1 $50 $50 50 $50 $2,500 51 $40 $2,040 100 $40 $4,000 101 $30 $3,030
  • 36.
  • 37. We bridged the gap of understanding, but… Didn’t deliver value! (We verified but didn’t validate.)
  • 38. Let’s Fix Our Acceptance Criteria… Acceptance Criteria Pricing q  Purchase <= 50 tickets at $50.00 each, from 1 to 50 inclusive q  q  Purchase 51 to 100 tickets at $40.00 each, from 1 to 100 inclusive Purchase 101 or more tickets at $30.00 each, from 1 to infinity
  • 39. Acceptance Criteria Pricing q  Purchase <= 50 tickets at $50.00 each, from 1 to 50 inclusive q  Purchase 51 to 100 tickets at $40.00 each, for tickets 51 to 100 inclusive q  Purchase 101 or more tickets at $30.00 each, for tickets 101 to infinity
  • 41. Purchased Total for Purchased Total for Purchased Total for Total 0 to 50 0 to 50? 51 to 100 51 to 100? 101 to ∞ 101 to ∞? Purchase Count 0 0 $0 0 $0 0 $0 $0 1 1 $50 0 $0 0 $0 $50 50 50 $2,500 0 $0 0 $0 $2,500 51 50 $2,500 1 $40 0 $0 $2,540 100 50 $2,500 50 $2,000 0 $0 $4,500 101 50 $2,500 50 $2,000 1 $30 $4,530
  • 45. Approximately 1,000 tickets sold and used each month 1060 1040 1020 1000 980 960 940 920 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
  • 46. 1060 1040 1020 1000 980 960 940 920 Jan What do we expect next month and beyond? Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
  • 47. 1060 1040 1020 1000 980 960 940 920 Do we expect to sell more? Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
  • 48. $$$ What We Would Have Sold? Price Level Qty Gross? $50.00 1,000 $50,000 Month 1 Price Level Qty? Gross? $50.00 800 $40,000 $40.00 200 $8,000 $30.00 200 $6,000 1,200 $54,000   We expect more gross revenue!
  • 49. What we get… What We Would Have Sold? Price Level Qty Gross? $50.00 1,000 $50,000 Month 1 - Projected Month 1 - Actual Gross? Price Level Qty? Gross? 800 $40,000 $50.00 400 $20,000 $40.00 200 $8,000 $40.00 400 $16,000 $30.00 200 $6,000 $30.00 450 $13,500 1,250 $49,500 Price Level Qty? $50.00   1,200 $54,000  
  • 51. How about average net revenue from concessions and parking per attendee?
  • 52. Curren t Month Two Qty? We are selling close 1,000 1,000 to the expected       number of tickets, Pricebut, to people who Level Qty? $50.00 400 $40.00 spend less! 400 Expected Price Level $50.00   $30.00     Actual Ticket Additional Additional Gross? Per Person? Total? $50,000 $20 $20,000             Ticket Additional Additional Gross? Per Person? Total? $20,000 $20 $8,000 $16,000 $20 $8,000 $15,000 $20 $10,000             Ticket Additional Additional Gross? Per Person? Total? $20,000 $20 $8,000 $16,000 $8 $3,200 $13,500 $4 $1,800         Price Level $50.00 $40.00 $30.00   500 1,300 Qty? 400 400 450 1,250   Gross? $70,000 $70,000 Gross? $28,000 $24,000 $25,000 $77,000 Gross? $28,000 $19,200 $15,300 $62,500
  • 53. Pivot
  • 55. What else do you need to know?
  • 57. In Summary •  User stories and acceptance criteria are easily misunderstood, so support them with testable examples. •  Our business rules are not always well thought out, so use testable examples to question, identify, and fix bad rules •  We often don’t understand the business impact of what we build, so question & prove assumptions with HDD, realign & pivot as necessary!
  • 58. Said Another Way… TDD: Developer building what he/she thinks the business wants is not enough! ATDD/BDD: Getting on the same page about what to build is good, and questioning what you agreed to with ATDD/BDD is incredibly helpful, but…
  • 59. Think about, align to, and pivot towards value with Hypothesis-Driven Development (HDD)
  • 60. Thank You! David Bulkin VP Training Services LitheSpeed +1.215-764-6822 David.Bulkin@lithespeed.com @davidbulkin www.LitheSpeed.com www.linkedin.com/in/davidbulkin