Greenfield projects are awesome – you can develop highest quality application using best practices on the market. But what if your bread actually is Legacy projects?
Does it mean that you need to descend into darkness of QA absence? Does it mean that you can’t use Agile or modern communication practices like BDD?
This talk will show you how to be successful even with the oldest legacy projects out there through the usage of Agile processes and tools like Impact Mapping, Feature Mapping, Example Workshop, Story and Spec BDDs.
2. BDD Practice Manager
Creator of Behat - Cucumber
for PHP
Software Engineer turned
Stakeholder whisperer
Konstantin
Kudryashov
@everzet
3. This talk is about
• Solving purely technical “TCIAM” problem using
behaviour driven development practices and agile
discovery processes
• Planning a delivery strategy on the basis of change
appreciation
• Real-life experience
62. Questionnaire
1. Where is this product going?
2. Which features need to change?
3. How are they going to change?
4. How to support that change?
63. “BDD Pipeline”
1. Where is this product going?
2. Which features need to change?
3. How are they going to change?
4. How to support that change?
• Impact Mapping
• Value Prioritisation
• Example (3 Amigos) Workshop
• BDD layers
64. 1. Where is this
product going?
Impact Mapping
65. – Gojko Adzic
“Impact mapping is a strategic planning technique
that prevents organisations from getting lost
while building products and delivering projects,
by clearly communicating assumptions, helping
teams align their activities with overall business
objectives and make better roadmap decisions.”
66. Four levels of Impact Map
1. Why? are we doing all this (rewrite)? What is the
goal we’re trying to achieve?
2. Who? will be impacted by it?
3. How? can they help us to achieve the goal?
4. What? can we do to support them?
76. 3. How are these features
going to change?
Example (3 Amigos) workshops
77. Three layers of a User-Story
• Business rule(s)
• Communication
• Acceptance criteria
78. Three layers of a User-Story
• Business rule(s)
• Communication in Examples
• Acceptance criteria
79. In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
80. Scenario: Refunded items should be returned to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
81. Scenario: Replaced items should be returned to stock
Scenario: Refunded items should be returned to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
82. Scenario: ...
Scenario: Replaced items should be returned to stock
Scenario: Refunded items should be returned to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
83. Scenario: ...
Scenario: ...
Scenario: ...
Scenario: ...
Scenario: ...
Scenario: Replaced items should be returned to stock
Scenario: Refunded items should be returned to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
84. Given a customer previously bought a black sweater from us
And we currently have three black sweaters left in stock
When customer returns the sweater for a refund
Then we should have four black sweaters in stock
Scenario: Refunded items should be returned to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
86. Scenario: Refunded items should be returned to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
Given a customer previously bought a black sweater costing 15$ from us
And we currently have three black sweaters left in stock
When customer returns the sweater for a refund
Then we should have four black sweaters in stock
And customer account should be debited with 15$
89. Step#3: Discuss old logic
1. What should this thing do
2. What if it suddenly stops doing it?
3. How would you know if it doesn't work?
4. How would you know if it does?
90. Scenario: Replaced items should be returned to stock
Scenario: Refunded items should be returned to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
91. Scenario: Cost of refunded item should be returned to customer bank account
Scenario: Cost of refunded item should be returned to customer PayPal account
Scenario: Cost of refunded item should be returned to customer via in-shop credits
Scenario: Replaced items should be returned to stock
Scenario: Refunded items should be returned to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
92. @legacy
Scenario: Cost of refunded item should be returned to customer bank account
@legacy
Scenario: Cost of refunded item should be returned to customer PayPal account
@legacy
Scenario: Cost of refunded item should be returned to customer via in-shop credits
Scenario: Replaced items should be returned to stock
Scenario: Refunded items should be returned to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Feature: Returned items go back to stock
93. Step#4: Prepare for A change
1. Cover old behaviour in an end-to-end fashion
2. Make sure that scenarios/tests are green
3. Refactor code to make the lower testing possible
4. Convert scenarios/tests to lower level tests
94. Step#5: Make a change
1. Automate new scenarios
2. Make scenarios green by applying BDD loops