its testing-jim-but-not-as-we-know-it-devoxx
TRANSCRIPT
@YourTwitterHandle#YourSessionHashtag
It’s testing, Jim, but not as we know it
John Ferguson Smart @wakaleo https://java.net/blogs/johnsmart http://www.wakaleo.com
@wakaleo#bddinactionuk
It’s testing, Jim, but not as we know it
John Ferguson Smart
Consultant Trainer Mentor Author Speaker Coder
@wakaleo#bddinactionuk
It’s testing, Jim, but not as we know it
John Ferguson Smart
Consultant Trainer Mentor Author Speaker Coder
@wakaleo#bddinactionuk
It’s testing, Jim, but not as we know it
John Ferguson Smart
Consultant Trainer Mentor Author Speaker Coder
@wakaleo#bddinactionuk
It’s testing, Jim, but not as we know it
John Ferguson Smart
Consultant Trainer Mentor Author Speaker Coder
@wakaleo#bddinactionuk
Behaviour Driven Development
@wakaleo#bddinactionuk
Behaviour Driven Development
Using examples
@wakaleo#bddinactionuk
Behaviour Driven Development
Using examples a shared understanding
@wakaleo#bddinactionuk
Behaviour Driven Development
Using examples a shared understanding
surface uncertainty
@wakaleo#bddinactionuk
Behaviour Driven Development
Using examples a shared understanding
surface uncertainty software that matters
@wakaleo#bddinactionuk
Behaviour Driven Development
BDD
@wakaleo#bddinactionuk
Behaviour Driven Development
BDDCollaboration
@wakaleo#bddinactionuk
Behaviour Driven Development
BDD
Hunting out value
Collaboration
@wakaleo#bddinactionuk
Behaviour Driven Development
BDD
Hunting out value
Collaboration
Building the right software
@wakaleo#bddinactionuk
Behaviour Driven Development
BDD
Hunting out value Automated Acceptance Criteria
Collaboration
Building the right software
@wakaleo#bddinactionuk
Behaviour Driven Development
BDD
Hunting out value Automated Acceptance Criteria
API and code design
Collaboration
Building the right software
@wakaleo#bddinactionuk
Behaviour Driven Development
BDD
Hunting out value Automated Acceptance Criteria
API and code design
Collaboration
Building the software right
Building the right software
@wakaleo#bddinactionuk
Behaviour Driven Development
BDD
Hunting out value Automated Acceptance Criteria
API and code design
Collaboration
Building the software right
Building the right software
Living Documentation
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner tells the business
analyst what he wants
12 The business
analyst writes a requirements
document
3 The developer translates the requirements into software
4 The tester translates the requirements
into test cases 5 The technical writer translates
the software into functional and technical
documentationA traditional development process
BDD in a nutshell
@wakaleo#bddinactionuk
The business owner and the business
analyst have a conversation about
what he needs.
1
2
3
4 The tester uses these scenarios as the basis for
her tests
5
The automated tests provide feedback on progress and help
document the application
The business analyst, the developer and the tester elaborate the
requirements together.
The scenarios guide the developer and act as
automated tests
They define requirements as
structured, English-language format
"scenarios"
A BDD development process
@wakaleo#bddinactionuk
The business owner and the business
analyst have a conversation about
what he needs.
1
2
3
4 The tester uses these scenarios as the basis for
her tests
5
The automated tests provide feedback on progress and help
document the application
The business analyst, the developer and the tester elaborate the
requirements together.
The scenarios guide the developer and act as
automated tests
They define requirements as
structured, English-language format
"scenarios"
A BDD development process
@wakaleo#bddinactionuk
The business owner and the business
analyst have a conversation about
what he needs.
1
2
3
4 The tester uses these scenarios as the basis for
her tests
5
The automated tests provide feedback on progress and help
document the application
The business analyst, the developer and the tester elaborate the
requirements together.
The scenarios guide the developer and act as
automated tests
They define requirements as
structured, English-language format
"scenarios"
A BDD development process
@wakaleo#bddinactionuk
The business owner and the business
analyst have a conversation about
what he needs.
1
2
3
4 The tester uses these scenarios as the basis for
her tests
5
The automated tests provide feedback on progress and help
document the application
The business analyst, the developer and the tester elaborate the
requirements together.
The scenarios guide the developer and act as
automated tests
They define requirements as
structured, English-language format
"scenarios"
A BDD development process
@wakaleo#bddinactionuk
The business owner and the business
analyst have a conversation about
what he needs.
1
2
3
4 The tester uses these scenarios as the basis for
her tests
5
The automated tests provide feedback on progress and help
document the application
The business analyst, the developer and the tester elaborate the
requirements together.
The scenarios guide the developer and act as
automated tests
They define requirements as
structured, English-language format
"scenarios"
A BDD development process
@wakaleo#bddinactionuk
The business owner and the business
analyst have a conversation about
what he needs.
1
2
3
4 The tester uses these scenarios as the basis for
her tests
5
The automated tests provide feedback on progress and help
document the application
The business analyst, the developer and the tester elaborate the
requirements together.
The scenarios guide the developer and act as
automated tests
They define requirements as
structured, English-language format
"scenarios"
A BDD development process
@wakaleo#bddinactionuk
The business owner and the business
analyst have a conversation about
what he needs.
1
2
3
4 The tester uses these scenarios as the basis for
her tests
5
The automated tests provide feedback on progress and help
document the application
The business analyst, the developer and the tester elaborate the
requirements together.
The scenarios guide the developer and act as
automated tests
They define requirements as
structured, English-language format
"scenarios"
A BDD development process
•Specifica8ons are elaborated collabora8vely •Specifica8ons use a common language •Executable specifica8ons provide fast feedback
@wakaleo#bddinactionuk
Building software that matters
Building the thing right
Building the right thing
Wha
t
How
Mis
alig
ned
requ
irem
ents
Poor craftsmanship
@wakaleo#bddinactionuk
Building software that matters
Building the thing right
Building the right thing
Wha
t
How
Mis
alig
ned
requ
irem
ents
Poor craftsmanship
Solves the wrong problem well
@wakaleo#bddinactionuk
Building software that matters
Building the thing right
Building the right thing
Wha
t
How
Mis
alig
ned
requ
irem
ents
Poor craftsmanship
Solves the wrong problem well
Solves the right problem poorly
@wakaleo#bddinactionuk
Building software that matters
Building the thing right
Building the right thing
Wha
t
How
Mis
alig
ned
requ
irem
ents
Poor craftsmanship
Buggy and useless
Solves the wrong problem well
Solves the right problem poorly
@wakaleo#bddinactionuk
Building software that matters
Building the thing right
Building the right thing
Wha
t
How
Mis
alig
ned
requ
irem
ents
Poor craftsmanship
Buggy and useless
Slow to change
Solves the wrong problem well
Solves the right problem poorly
@wakaleo#bddinactionuk
Building software that matters
Building the thing right
Building the right thing
Wha
t
How
Mis
alig
ned
requ
irem
ents
Poor craftsmanship
Buggy and useless
Hard to maintain
Slow to change
Solves the wrong problem well
Solves the right problem poorly
@wakaleo#bddinactionuk
Building software that matters
Building the thing right
Building the right thing
Wha
t
How
Mis
alig
ned
requ
irem
ents
Poor craftsmanship
Buggy and useless
Hard to maintain
Slow to change
Does what the business needs Reliable Easy to maintain
Solves the wrong problem well
Solves the right problem poorly
“Show me the money”
@wakaleo#bddinactionuk
Building software that matters
Business Goal
Business Goal
Business Goal
We start with a business goal
@wakaleo#bddinactionuk
Building software that matters
Business Goal
Business Goal
Business Goal
We start with a business goal
“Increase *cket sales by 5% over the next year by encouraging travelers to fly with Flying High
rather than with a rival company.”
@wakaleo#bddinactionuk
Building software that matters
Business Goal
Business Goal
Business Goal
What features will enable us to deliver this goal?
FeaturesFeaturesFeatures
@wakaleo#bddinactionuk
Building software that matters
Business Goal
Business Goal
Business Goal
What features will enable us to deliver this goal?
FeaturesFeaturesFeatures
Earn Frequent Flyer points from flights
@wakaleo#bddinactionuk
Building software that matters
Business Goal
Business Goal
Business Goal
What features will enable us to deliver this goal?
FeaturesFeaturesFeatures
Earn Frequent Flyer points from flights
Earn Frequent Flyer points from purchases
@wakaleo#bddinactionuk
Building software that matters
Business Goal
Business Goal
Business Goal
What features will enable us to deliver this goal?
FeaturesFeaturesFeatures
Earn Frequent Flyer points from flights
Earn Frequent Flyer points from purchases
View Frequent Flyer account balance online
@wakaleo#bddinactionuk
Building software that matters
Business Goal
Business Goal
Business Goal FeaturesFeaturesFeatures
We use conversa8ons around examples to build up our understanding of these features
FeaturesFeaturesExamples
@wakaleo#bddinactionuk
Building software that matters
Business Goal
Business Goal
Business Goal FeaturesFeaturesFeatures
We use conversa8ons around examples to build up our understanding of these features
FeaturesFeaturesExamples
“A new Frequent Flyer member starts off with Bronze status”
@wakaleo#bddinactionuk
Building software that matters
Business Goal
Business Goal
Business Goal FeaturesFeaturesFeatures
We use conversa8ons around examples to build up our understanding of these features
FeaturesFeaturesExamples
“A new Frequent Flyer member starts off with Bronze status”
“If she earns 300 points, she becomes a Silver Frequent Flyer member”
@wakaleo#bddinactionuk
Increase ticket sales revenue by 5%
Frequent Flyer members
Call centre staff
Buy more tickets
Encourage friends to join
Spend less time on phone sales
Purchase flights with redeemed miles
Purchase other goods with redeemed miles
Facebook and Twitter integration
Online sales
Why Who How What
Building software that matters
Techniques like Impact Mapping can help us discuss what features are worth building
@wakaleo#bddinactionuk
BDD - you don’t know what you don’t knowUnderstanding of what needs to be
delivered
Time
@wakaleo#bddinactionuk
BDD - you don’t know what you don’t knowUnderstanding of what needs to be
delivered
Time
Requirementsphase done
AnalysisPhase done
@wakaleo#bddinactionuk
BDD - you don’t know what you don’t knowUnderstanding of what needs to be
delivered
Time
Requirementsphase done
AnalysisPhase done
@wakaleo#bddinactionuk
BDD - you don’t know what you don’t knowUnderstanding of what needs to be
delivered
Time
Requirementsphase done
AnalysisPhase done
•Our ignorance decreases over 8me • It does not decrease at a linear rate • It does not always decrease in a predictable way
@wakaleo#bddinactionuk
BDD - building a shared understanding
@wakaleo#bddinactionuk
BDD - building a shared understanding
“Having the conversa/on is more important than
recording the conversa/on is more important than
automa/ng the conversa/on” -‐ Liz Keogh
Building a shared understanding
The essence of BDD
@wakaleo#bddinactionuk
BDD - building a shared understanding
Story
bug reports
Working code boring
manual tes*ng
WASTEBA
Developer
TesterMany teams build features like this
@wakaleo#bddinactionuk
BDD - building a shared understanding
A liKle collabora8on goes a long way
Story
@wakaleo#bddinactionuk
BDD - building a shared understanding
A liKle collabora8on goes a long way
Story
@wakaleo#bddinactionuk
BDD - building a shared understanding
A liKle collabora8on goes a long way
Story
@wakaleo#bddinactionuk
BDD - building a shared understanding
A liKle collabora8on goes a long way
Story
@wakaleo#bddinactionuk
BDD - building a shared understanding
A liKle collabora8on goes a long way
StoryExamples
@wakaleo#bddinactionuk
BDD - building a shared understanding
A liKle collabora8on goes a long way
StoryExamplesAutomated acceptance criteria
@wakaleo#bddinactionuk
BDD - building a shared understanding
A liKle collabora8on goes a long way
Shared understanding
StoryExamplesAutomated acceptance criteria
@wakaleo#bddinactionuk
BDD - building a shared understanding
A liKle collabora8on goes a long way
Working code and
Working Automated Acceptance Tests
Shared understanding
StoryExamplesAutomated acceptance criteria
@wakaleo#bddinactionuk
BDD - building a shared understanding
A liKle collabora8on goes a long way
Working code and
Working Automated Acceptance Tests
Exploratory tes*ng, usability tes*ng...
Shared understanding
StoryExamplesAutomated acceptance criteria
@wakaleo#bddinactionuk
BDD - building a shared understandingBA and/or product owner
Tester Developer Automatable Acceptance Criteria
Shared understanding
@wakaleo#bddinactionuk
BDD - building a shared understandingBA and/or product owner
Tester Developer Automatable Acceptance Criteria
Shared understanding
“The Three Amigos”
@wakaleo#bddinactionuk
BDD - building a shared understanding
@wakaleo#bddinactionuk
BDD - building a shared understanding
“The Three Amigos”
@wakaleo#bddinactionuk
BDD - building a shared understanding
“The Three Amigos”
@wakaleo#bddinactionuk
BDD - building a shared understanding
“The Three Amigos”
@wakaleo#bddinactionuk
BDD - building a shared understanding
“The Three Amigos”
@wakaleo#bddinactionuk
BDD - building a shared understanding
“The Three Amigos”
@wakaleo#bddinactionuk
Discovering requirements through examples
@wakaleo#bddinactionuk
Discovering requirements through examples
“A new Frequent Flyer member starts off with Bronze status”
@wakaleo#bddinactionuk
Discovering requirements through examples
“A new Frequent Flyer member starts off with Bronze status”
“If she earns 300 points, she becomes a Silver Frequent Flyer member”
@wakaleo#bddinactionuk
Discovering requirements through examples
“A new Frequent Flyer member starts off with Bronze status”
“If she earns 300 points, she becomes a Silver Frequent Flyer member”
“If I ask for the details about the flight FH-‐102, I should see that it is a Sydney to Hong Kong flight that leaves at 11:55pm ”
@wakaleo#bddinactionuk
Discovering requirements through examples
“A new Frequent Flyer member starts off with Bronze status”
“If she earns 300 points, she becomes a Silver Frequent Flyer member”
“If I ask for the details about the flight FH-‐102, I should see that it is a Sydney to Hong Kong flight that leaves at 11:55pm ”
•Explore requirements •Discover what we don’t know •Clarify ambigui8es • Iden8fy assump8ons and misunderstandings
@wakaleo#bddinactionuk
Discovering requirements through examples
We express the examples in a structured format using simple English phrases
@wakaleo#bddinactionuk
Discovering requirements through examples
We express the examples in a structured format using simple English phrases
@wakaleo#bddinactionuk
Discovering requirements through examples
We express the examples in a structured format using simple English phrases
@wakaleo#bddinactionuk
Discovering requirements through examples
We express the examples in a structured format using simple English phrases
@wakaleo#bddinactionuk
Automated acceptance criteria
“It is fun to have fun But you have to know how”
*Dr Seuss, “The Cat in the Hat”
*
@wakaleo#bddinactionuk
Automated acceptance criteria
@wakaleo#bddinactionuk
Automated acceptance criteria
@wakaleo#bddinactionuk
Business Rules
Business Flow
Page/Component interac*ons
Page/Component/Service API
Write testing APIs, not test scripts
@wakaleo#bddinactionuk
Business Rules
Business Flow
Page/Component interac*ons
Page/Component/Service API
Write testing APIs, not test scripts
@wakaleo#bddinactionuk
Business Rules
Business Flow
Page/Component interac*ons
Page/Component/Service API
Write testing APIs, not test scripts
@wakaleo#bddinactionuk
Business Rules
Business Flow
Page/Component interac*ons
Page/Component/Service API
Write testing APIs, not test scripts
@wakaleo#bddinactionuk
Business Rules
Business Flow
Page/Component interac*ons
Page/Component/Service API
Write testing APIs, not test scripts
@wakaleo#bddinactionuk
Work together!
@wakaleo#bddinactionuk
Work together!
•Discuss tes8ng strategies in the “Three Amigos” sessions •Factor testability into the design •Developers and testers pair to implement the automated tests
@wakaleo#bddinactionuk
Focus on business value
@wakaleo#bddinactionuk
Focus on business value
@wakaleo#bddinactionuk
Focus on business value
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Illustrates delivered features
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
A star*ng point for manual tests
Illustrates delivered features
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
A star*ng point for manual tests
Illustrates delivered features
Progress repor*ng
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
A star*ng point for manual tests
Illustrates delivered features
Func*onal and technical documenta*on
Progress repor*ng
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Living documenta8on gives an up-‐to-‐date overview of the project status
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
How many tests passed
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
How many failed
How many tests passed
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
How many failed
How many tests passed
How many weren’t run
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
What tests exist for a given feature
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
What tests exist for a given feature
How stable the feature is
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
How a feature was tested
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
What a feature looks like
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
What a feature looks like
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test reports tell us…
What a feature looks like
@wakaleo#bddinactionuk
Living Documentation - DIY!
@wakaleo#bddinactionuk
Living Documentation - DIY!
It’s the approach, not the tool
@wakaleo#bddinactionuk
Living Documentation - DIY!
It’s the approach, not the tool
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Test results do not tell us what was not tested
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
What do we plan to deliver?
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
What do we plan to deliver?
What has been done?
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
What do we plan to deliver?
What has been done? What is in progress
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
What do we plan to deliver?
What has been done? What is in progress
What hasn’t been started yet
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
What do we plan to deliver?
What has been done? What is in progress
What hasn’t been started yet
How many automated and manual tests were performed
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
What stories are defined for this
feature?
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
What stories are defined for this
feature?
How many stories have automated acceptance criteria?
@wakaleo#bddinactionuk
Living Documentation - completing the cycle
Feature Coverage tells us…
What stories are defined for this
feature?
How many stories have automated acceptance criteria?
What acceptance criteria have been
automated?
@wakaleo#bddinactionuk
BDD gotchas
12
3
4
@wakaleo#bddinactionuk
BDD gotchas
12
3
4An8-‐paKern 1 The business analyst writes the scenarios and then gives them to the other team members.
@wakaleo#bddinactionuk
BDD gotchas
12
3
4
@wakaleo#bddinactionuk
BDD gotchas
12
3
4
An8-‐paKern 2 The tester writes the scenarios at the end to implement an automated test suite.
@wakaleo#bddinactionuk
BDD gotchas
1
2
3
45
@wakaleo#bddinactionuk
BDD gotchas
1
2
3
45
@wakaleo#bddinactionuk
BDD gotchas
1
2
3
45
An8-‐paKern 3 The “Three Amigos” sessions don’t result in usable scenarios, so the developer invents them aAerwards.
@wakaleo#bddinactionuk
BDD gotchas
1
2
3
45
@wakaleo#bddinactionuk
BDD gotchas
1
2
3
45
An8-‐paKern 4 The scenarios are too UI-‐centric or detail-‐focused, and neglect to express the core business value.
@wakaleo#bddinactionuk
BDD benefits
@wakaleo#bddinactionuk
BDD benefits
•Focus effort •Reduce waste and misaligned requirements
@wakaleo#bddinactionuk
BDD benefits
Deliver more valuable soXware
@wakaleo#bddinactionuk
BDD benefits
Make changes safely
@wakaleo#bddinactionuk
BDD benefits
Faster and more reliable releases
@wakaleo#bddinactionuk
BDD benefits
Reduced maintenance costs
@YourTwitterHandle#DVXFR14{session hashtag} @YourTwitterHandle#YourSessionHashtag
Q & A