SlideShare una empresa de Scribd logo
1 de 31
SOLVING PROBLEMS FAST
A ccept ance Test D riven D evelopment
Nik Crabtree
Lead Principal Software Engineer @ ASOS
 Why TDD?
 The TDD cycle
 Why ATDD?
 Shared understanding
 Shared ownership
 Test-first approach
 The ATDD cycle
 The big picture
SOLVING PROBLEMS FAST
A ccept ance Test D riven D evelopment
WHY TDD?
W hat problems does it solve?
 It’s not clear exactly what needs to be done before writing the code
 It’s not clear whether all of the code you’re writing meets a known requirement
 It’s not clear whether the codebase already meets the requirement, intentionally or otherwise.
 Long feedback cycles
 Documenting the code is done through comments or an entirely separate resource.
TDD also has one key-side effect…
 You implicitly create and maintain a regression test suite that lets you know immediately if
you break something later on.
THE TDD CYCLE
TDD
Write a test that
exercises the smallest
unit of new externally
visible behaviour
The unit test should fail,
proving that the codebase
does not already support
the new behaviour
Make the simplest code
change possible to
implement the new
behaviour
The unit test should now
pass, indicating that the
code base supports the
new behaviour with a
specific input
The structure of the code
written to pass the test
(not the behaviour) may
need to be altered so that
it is more clear and
maintainable.
1
2
34
5
6
The unit test should still
pass, as the behaviour
should not have changed
WHY ATDD?
W hat problems does it solve?
• The flow of requirements is sometimes disconnected
• Unable to take stories into sprint due to poor requirements definition
• Rework when requirements are not implemented as expected
• Acceptance criteria is of variable quality and format and requires
translation/transformation
• Collaboration between the three amigos is inconsistent
• Mini-waterfall testing leads to longer feedback cycles
• Second class citizens in development teams
SHARED
OWNERSHIP
High quality software
High trust teams
High performing teams
SHARED OWNERSHIP
It ’s a t hree - legged race, not a relay
Let’s talk about Scrum and agile development practices
Scrum makes some very specific statements about ownership
SHARED OWNERSHIP
It ’s a t hree - legged race, not a relay
 Scrum recognizes no titles for Development Team members other than
Developer
 Scrum recognizes no sub-teams in the Development Team… like testing
or business analysis.
 Individual Development Team members may have specialized skills and
areas of focus, but accountability belongs to the Development Team as a
whole.
http://www.scrumguides.org/scrum-guide.html
SHARED OWNERSHIP
It ’s a t hree - legged race, not a relay
There are no heroes
 The Development Team is responsible for delivering the PBIs in the sprint
backlog.
 The Development Team should feel a collective sense of pride and
achievement in getting those PBIs to done.
SHARED OWNERSHIP
It ’s a t hree - legged race, not a relay
There is no ‘dev complete’
 A PBI is done when it is proven to meet all of the acceptance criteria.
 There are no hand-offs in a high-performing team.
 There are no second-class citizens in a high-trust team.
SHARED UNDERSTANDING
D oes everyone have a copy of t he hymn sheet ?
How do we make sure everyone understands what’s required?
 Write requirements in a common format
 Use ubiquitous language
 Keep a domain dictionary
 Talk!
SHARED UNDERSTANDING
D oes everyone have a copy of t he hymn sheet ?
One common format is GWT…
 Given this state
 When I perform this action
 Then I see this result
SHARED UNDERSTANDING
D oes everyone have a copy of t he hymn sheet ?
A GWT is…
A logical function to which we:
 provide known input
 invoke an action
 assert a known output
SHARED UNDERSTANDING
D oes everyone have a copy of t he hymn sheet ?
A unit test is…
A logical function to which we:
 provide known input
 invoke an action
 assert a known output
SHARED UNDERSTANDING
D oes everyone have a copy of t he hymn sheet ?
An acceptance test is…
A logical function to which we:
 provide known input
 invoke an action
 assert a known output
SHARED UNDERSTANDING
D oes everyone have a copy of t he hymn sheet ?
A functional requirement is…
A logical function to which we:
 provide known input
 invoke an action
 assert a known output
SHARED UNDERSTANDING
D oes everyone have a copy of t he hymn sheet ?
Which means…?
 Turning functional requirements into acceptance tests into unit tests into
working software can (and should!) be done from exactly the same set of
criteria
 Everyone involved is singing from the same hymn sheet. No-one gets the
words wrong, no-one sings out of tune.
TEST-FIRST APPROACH
Set t he course bef ore st art ing t he race
Test first development is…
 A lean approach to development (avoid gold-plating, over-engineering,
YAGNI)
 A way of being confident that software meets requirements from the first
line of code
 All about understanding what you are doing and why
TEST-FIRST APPROACH
Set t he course bef ore st art ing t he race
Acceptance criteria
Test-first development is fuelled by acceptance criteria. Acceptance criteria is…
 Defined and agreed by the Development Team with the Product Owner
 Written in a business readable, domain specific language, like Gherkin
 Written from an Outside-In perspective
 Expectations of behaviour, not implementation
THE ATDD CYCLE
DISCUSS DISTIL
DEVELOPDEMO
The team asks questions
They may break down the feature
They may add new features to the backlog
They should establish a shared
understanding
DISCUSS
The team formalises
the acceptance criteria
They use a format like Gherkin
They use ubiquitous language
They do not include implementation details
The feature should now be ready to sprint
DISCUSS DISTIL
Developers turn formal acceptance
criteria into automated tests
Transform ubiquitous language into domain
objects
Add technical scenarios
Executable requirements
DISCUSS DISTIL
DEVELOP
DISCUSS
The feature is ready to demo
They already know it meets the
requirements
They may perform some exploratory
testing, including gamifying, red team/blue
team, etc.
Sprint review
DISTIL
DEVELOPDEMO
TDD
Automated
acceptance
tests are red
Automated
acceptance
tests are green
DISCUSS DISTIL
DEVELOPDEMO
THE BIG PICTURE
LEARN
PROTOTYPEIDEA
BUILDBACKLOG
MEASUREITERATE
ROUGH
IDEA
SELECTED TERRITORY
ROLLOUT
FULL
ROLLOUT
TES
T
NON-FUNCTIONAL
PROTOTYPE
FUNCTIONAL
PROTOTYPE
A/B
MVT TEST
ATDD
Q & A
@asostechnik
@asos_careers
https://asos.tech

Más contenido relacionado

La actualidad más candente

Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect couple
Stephen Tucker
 
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Zohirul Alam Tiemoon
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
Lim Chanmann
 
Understanding, measuring and improving code quality in JavaScript
Understanding, measuring and improving code quality in JavaScriptUnderstanding, measuring and improving code quality in JavaScript
Understanding, measuring and improving code quality in JavaScript
Mark Daggett
 

La actualidad más candente (20)

Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect couple
 
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
 
DevTestOps
DevTestOpsDevTestOps
DevTestOps
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven Development
 
A Journey from DevOps to DevTestOps: Infusing Continuous Quality
A Journey from DevOps to DevTestOps: Infusing Continuous QualityA Journey from DevOps to DevTestOps: Infusing Continuous Quality
A Journey from DevOps to DevTestOps: Infusing Continuous Quality
 
(A)TDD The what, why and how
(A)TDD The what, why and how(A)TDD The what, why and how
(A)TDD The what, why and how
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven development
 
Tdd
TddTdd
Tdd
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
TDD refresher
TDD refresherTDD refresher
TDD refresher
 
TDD with Ruby
TDD with RubyTDD with Ruby
TDD with Ruby
 
Check in dance
Check in danceCheck in dance
Check in dance
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
ATDD in practice
ATDD in practiceATDD in practice
ATDD in practice
 
Understanding, measuring and improving code quality in JavaScript
Understanding, measuring and improving code quality in JavaScriptUnderstanding, measuring and improving code quality in JavaScript
Understanding, measuring and improving code quality in JavaScript
 
Unwritten Manual for Pair Programming
Unwritten Manual for Pair ProgrammingUnwritten Manual for Pair Programming
Unwritten Manual for Pair Programming
 

Similar a UXDX London 2018 Nik Crabtree - Enhancing the Processes of Test Driven Development

Why Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamWhy Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My Team
Rob Curry
 

Similar a UXDX London 2018 Nik Crabtree - Enhancing the Processes of Test Driven Development (20)

Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
 
Approaching ATDD/BDD
Approaching ATDD/BDDApproaching ATDD/BDD
Approaching ATDD/BDD
 
Continuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software WestContinuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software West
 
Wednesday Webinar on "Strengthening your Agility with BDD - A demo using Cucu...
Wednesday Webinar on "Strengthening your Agility with BDD - A demo using Cucu...Wednesday Webinar on "Strengthening your Agility with BDD - A demo using Cucu...
Wednesday Webinar on "Strengthening your Agility with BDD - A demo using Cucu...
 
Agile testing
Agile testingAgile testing
Agile testing
 
Introduction to Test Driven Development
Introduction to Test Driven DevelopmentIntroduction to Test Driven Development
Introduction to Test Driven Development
 
DevOpsDays Jakarta Igites
DevOpsDays Jakarta IgitesDevOpsDays Jakarta Igites
DevOpsDays Jakarta Igites
 
JavaScript Unit Testing
JavaScript Unit TestingJavaScript Unit Testing
JavaScript Unit Testing
 
Why Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamWhy Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My Team
 
Agile testing
Agile testingAgile testing
Agile testing
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile Adoption
 
Overcome-3-common-aem-delivery-challenges
Overcome-3-common-aem-delivery-challengesOvercome-3-common-aem-delivery-challenges
Overcome-3-common-aem-delivery-challenges
 
Case Study: Time Warner Cable's Formula for Maximizing Adobe Experience Manager
Case Study: Time Warner Cable's Formula for Maximizing Adobe Experience Manager Case Study: Time Warner Cable's Formula for Maximizing Adobe Experience Manager
Case Study: Time Warner Cable's Formula for Maximizing Adobe Experience Manager
 
Journey's diary developing a framework using tdd
Journey's diary   developing a framework using tddJourney's diary   developing a framework using tdd
Journey's diary developing a framework using tdd
 
Being an Agile Tester
Being an Agile TesterBeing an Agile Tester
Being an Agile Tester
 
Agile Mëtteg #5: Agile Testing
Agile Mëtteg #5: Agile TestingAgile Mëtteg #5: Agile Testing
Agile Mëtteg #5: Agile Testing
 
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
 
Agile Project Management
Agile Project ManagementAgile Project Management
Agile Project Management
 
Bridging the communication gap
Bridging the communication gapBridging the communication gap
Bridging the communication gap
 
Introduction to BDD (Behavior-Driven Development)
Introduction to BDD (Behavior-Driven Development)Introduction to BDD (Behavior-Driven Development)
Introduction to BDD (Behavior-Driven Development)
 

Más de UXDXConf

Embracing Uncertainty in Product Delivery_ Martin Reilly_ UXDX_ EMEA_2023
Embracing Uncertainty in Product Delivery_ Martin Reilly_ UXDX_ EMEA_2023Embracing Uncertainty in Product Delivery_ Martin Reilly_ UXDX_ EMEA_2023
Embracing Uncertainty in Product Delivery_ Martin Reilly_ UXDX_ EMEA_2023
UXDXConf
 

Más de UXDXConf (20)

Breaking Silos_The Shift from a Software Delivery to a Product Development Mi...
Breaking Silos_The Shift from a Software Delivery to a Product Development Mi...Breaking Silos_The Shift from a Software Delivery to a Product Development Mi...
Breaking Silos_The Shift from a Software Delivery to a Product Development Mi...
 
How Intercom built ‘Fin’, a GPT-4 powered chatbot_Fergal Reid_UXDX_EMEA_2023
How Intercom built ‘Fin’, a GPT-4 powered chatbot_Fergal Reid_UXDX_EMEA_2023How Intercom built ‘Fin’, a GPT-4 powered chatbot_Fergal Reid_UXDX_EMEA_2023
How Intercom built ‘Fin’, a GPT-4 powered chatbot_Fergal Reid_UXDX_EMEA_2023
 
Leveling Up Design Maturity in a Large-Scale Organisation_ Daniel Heaslip_ U...
Leveling Up  Design Maturity in a Large-Scale Organisation_ Daniel Heaslip_ U...Leveling Up  Design Maturity in a Large-Scale Organisation_ Daniel Heaslip_ U...
Leveling Up Design Maturity in a Large-Scale Organisation_ Daniel Heaslip_ U...
 
Continuous-Research_Mike Brown_UXDX_ EMEA_2023
Continuous-Research_Mike Brown_UXDX_ EMEA_2023Continuous-Research_Mike Brown_UXDX_ EMEA_2023
Continuous-Research_Mike Brown_UXDX_ EMEA_2023
 
Crafting Digital Products for Connected Appliances and Other Stories_ Alexis ...
Crafting Digital Products for Connected Appliances and Other Stories_ Alexis ...Crafting Digital Products for Connected Appliances and Other Stories_ Alexis ...
Crafting Digital Products for Connected Appliances and Other Stories_ Alexis ...
 
Integrating AI _King's journey of Technology Transformation_Steven Collins_ U...
Integrating AI _King's journey of Technology Transformation_Steven Collins_ U...Integrating AI _King's journey of Technology Transformation_Steven Collins_ U...
Integrating AI _King's journey of Technology Transformation_Steven Collins_ U...
 
Seamless UX: Invisible Transactions_Sudev Balakrishan_UXDX_EMEA_2023
Seamless UX: Invisible Transactions_Sudev Balakrishan_UXDX_EMEA_2023Seamless UX: Invisible Transactions_Sudev Balakrishan_UXDX_EMEA_2023
Seamless UX: Invisible Transactions_Sudev Balakrishan_UXDX_EMEA_2023
 
Roadmaps Unveiled_ Lessons from successes, failures and the crucial role of s...
Roadmaps Unveiled_ Lessons from successes, failures and the crucial role of s...Roadmaps Unveiled_ Lessons from successes, failures and the crucial role of s...
Roadmaps Unveiled_ Lessons from successes, failures and the crucial role of s...
 
Operational Evolution_ Harnessing Design for Internal Business Transformation...
Operational Evolution_ Harnessing Design for Internal Business Transformation...Operational Evolution_ Harnessing Design for Internal Business Transformation...
Operational Evolution_ Harnessing Design for Internal Business Transformation...
 
Design Delivery Principles, Accelerating Product Delivery Outcomes in a Compl...
Design Delivery Principles, Accelerating Product Delivery Outcomes in a Compl...Design Delivery Principles, Accelerating Product Delivery Outcomes in a Compl...
Design Delivery Principles, Accelerating Product Delivery Outcomes in a Compl...
 
Innovation Without Adoption Is Meaningless_ Rhiannon White_ UXDX_ EMEA_2023
Innovation Without Adoption Is Meaningless_ Rhiannon White_ UXDX_ EMEA_2023Innovation Without Adoption Is Meaningless_ Rhiannon White_ UXDX_ EMEA_2023
Innovation Without Adoption Is Meaningless_ Rhiannon White_ UXDX_ EMEA_2023
 
Learning Balanced Leadership with Horses_Martina Hodges-Schell_ UXDX_ EMEA_2023
Learning Balanced Leadership with Horses_Martina Hodges-Schell_ UXDX_ EMEA_2023Learning Balanced Leadership with Horses_Martina Hodges-Schell_ UXDX_ EMEA_2023
Learning Balanced Leadership with Horses_Martina Hodges-Schell_ UXDX_ EMEA_2023
 
An Unexpected Approach to Design: Uncovering Hidden Parallels With Writing St...
An Unexpected Approach to Design: Uncovering Hidden Parallels With Writing St...An Unexpected Approach to Design: Uncovering Hidden Parallels With Writing St...
An Unexpected Approach to Design: Uncovering Hidden Parallels With Writing St...
 
Embracing Uncertainty in Product Delivery_ Martin Reilly_ UXDX_ EMEA_2023
Embracing Uncertainty in Product Delivery_ Martin Reilly_ UXDX_ EMEA_2023Embracing Uncertainty in Product Delivery_ Martin Reilly_ UXDX_ EMEA_2023
Embracing Uncertainty in Product Delivery_ Martin Reilly_ UXDX_ EMEA_2023
 
Embracing Career Pivots, Navigating Change, and Building a Motivated Remote T...
Embracing Career Pivots, Navigating Change, and Building a Motivated Remote T...Embracing Career Pivots, Navigating Change, and Building a Motivated Remote T...
Embracing Career Pivots, Navigating Change, and Building a Motivated Remote T...
 
Uncharted waters of design leadership_ Anderson Gomes_ UXDX_ EMEA_ 2023
Uncharted waters of design leadership_ Anderson Gomes_ UXDX_ EMEA_ 2023Uncharted waters of design leadership_ Anderson Gomes_ UXDX_ EMEA_ 2023
Uncharted waters of design leadership_ Anderson Gomes_ UXDX_ EMEA_ 2023
 
Enhancing the Impact of User Research_ Fahad Osmani_ UXDX_EMEA_2023
Enhancing the Impact of User Research_ Fahad Osmani_ UXDX_EMEA_2023Enhancing the Impact of User Research_ Fahad Osmani_ UXDX_EMEA_2023
Enhancing the Impact of User Research_ Fahad Osmani_ UXDX_EMEA_2023
 
How to Know Enough to Know You Don't Know_ Shilpi Sinha_UXDX_EMEA_2023
How to Know Enough to Know You Don't Know_ Shilpi Sinha_UXDX_EMEA_2023How to Know Enough to Know You Don't Know_ Shilpi Sinha_UXDX_EMEA_2023
How to Know Enough to Know You Don't Know_ Shilpi Sinha_UXDX_EMEA_2023
 
Lessons Learned From Our Accessibility-First Approach to Data Visualisation- ...
Lessons Learned From Our Accessibility-First Approach to Data Visualisation- ...Lessons Learned From Our Accessibility-First Approach to Data Visualisation- ...
Lessons Learned From Our Accessibility-First Approach to Data Visualisation- ...
 
Fostering a customer-centric culture at an enterprise_UXDX_EMEA_2023
Fostering a customer-centric culture at an enterprise_UXDX_EMEA_2023Fostering a customer-centric culture at an enterprise_UXDX_EMEA_2023
Fostering a customer-centric culture at an enterprise_UXDX_EMEA_2023
 

Último

Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
dollysharma2066
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 

Último (20)

Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
Vivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design SpainVivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design Spain
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxBSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLPVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 

UXDX London 2018 Nik Crabtree - Enhancing the Processes of Test Driven Development

  • 1.
  • 2. SOLVING PROBLEMS FAST A ccept ance Test D riven D evelopment Nik Crabtree Lead Principal Software Engineer @ ASOS
  • 3.  Why TDD?  The TDD cycle  Why ATDD?  Shared understanding  Shared ownership  Test-first approach  The ATDD cycle  The big picture SOLVING PROBLEMS FAST A ccept ance Test D riven D evelopment
  • 4. WHY TDD? W hat problems does it solve?  It’s not clear exactly what needs to be done before writing the code  It’s not clear whether all of the code you’re writing meets a known requirement  It’s not clear whether the codebase already meets the requirement, intentionally or otherwise.  Long feedback cycles  Documenting the code is done through comments or an entirely separate resource. TDD also has one key-side effect…  You implicitly create and maintain a regression test suite that lets you know immediately if you break something later on.
  • 6. TDD Write a test that exercises the smallest unit of new externally visible behaviour The unit test should fail, proving that the codebase does not already support the new behaviour Make the simplest code change possible to implement the new behaviour The unit test should now pass, indicating that the code base supports the new behaviour with a specific input The structure of the code written to pass the test (not the behaviour) may need to be altered so that it is more clear and maintainable. 1 2 34 5 6 The unit test should still pass, as the behaviour should not have changed
  • 7. WHY ATDD? W hat problems does it solve? • The flow of requirements is sometimes disconnected • Unable to take stories into sprint due to poor requirements definition • Rework when requirements are not implemented as expected • Acceptance criteria is of variable quality and format and requires translation/transformation • Collaboration between the three amigos is inconsistent • Mini-waterfall testing leads to longer feedback cycles • Second class citizens in development teams
  • 8. SHARED OWNERSHIP High quality software High trust teams High performing teams
  • 9. SHARED OWNERSHIP It ’s a t hree - legged race, not a relay Let’s talk about Scrum and agile development practices Scrum makes some very specific statements about ownership
  • 10. SHARED OWNERSHIP It ’s a t hree - legged race, not a relay  Scrum recognizes no titles for Development Team members other than Developer  Scrum recognizes no sub-teams in the Development Team… like testing or business analysis.  Individual Development Team members may have specialized skills and areas of focus, but accountability belongs to the Development Team as a whole. http://www.scrumguides.org/scrum-guide.html
  • 11. SHARED OWNERSHIP It ’s a t hree - legged race, not a relay There are no heroes  The Development Team is responsible for delivering the PBIs in the sprint backlog.  The Development Team should feel a collective sense of pride and achievement in getting those PBIs to done.
  • 12. SHARED OWNERSHIP It ’s a t hree - legged race, not a relay There is no ‘dev complete’  A PBI is done when it is proven to meet all of the acceptance criteria.  There are no hand-offs in a high-performing team.  There are no second-class citizens in a high-trust team.
  • 13. SHARED UNDERSTANDING D oes everyone have a copy of t he hymn sheet ? How do we make sure everyone understands what’s required?  Write requirements in a common format  Use ubiquitous language  Keep a domain dictionary  Talk!
  • 14. SHARED UNDERSTANDING D oes everyone have a copy of t he hymn sheet ? One common format is GWT…  Given this state  When I perform this action  Then I see this result
  • 15. SHARED UNDERSTANDING D oes everyone have a copy of t he hymn sheet ? A GWT is… A logical function to which we:  provide known input  invoke an action  assert a known output
  • 16. SHARED UNDERSTANDING D oes everyone have a copy of t he hymn sheet ? A unit test is… A logical function to which we:  provide known input  invoke an action  assert a known output
  • 17. SHARED UNDERSTANDING D oes everyone have a copy of t he hymn sheet ? An acceptance test is… A logical function to which we:  provide known input  invoke an action  assert a known output
  • 18. SHARED UNDERSTANDING D oes everyone have a copy of t he hymn sheet ? A functional requirement is… A logical function to which we:  provide known input  invoke an action  assert a known output
  • 19. SHARED UNDERSTANDING D oes everyone have a copy of t he hymn sheet ? Which means…?  Turning functional requirements into acceptance tests into unit tests into working software can (and should!) be done from exactly the same set of criteria  Everyone involved is singing from the same hymn sheet. No-one gets the words wrong, no-one sings out of tune.
  • 20. TEST-FIRST APPROACH Set t he course bef ore st art ing t he race Test first development is…  A lean approach to development (avoid gold-plating, over-engineering, YAGNI)  A way of being confident that software meets requirements from the first line of code  All about understanding what you are doing and why
  • 21. TEST-FIRST APPROACH Set t he course bef ore st art ing t he race Acceptance criteria Test-first development is fuelled by acceptance criteria. Acceptance criteria is…  Defined and agreed by the Development Team with the Product Owner  Written in a business readable, domain specific language, like Gherkin  Written from an Outside-In perspective  Expectations of behaviour, not implementation
  • 24. The team asks questions They may break down the feature They may add new features to the backlog They should establish a shared understanding DISCUSS
  • 25. The team formalises the acceptance criteria They use a format like Gherkin They use ubiquitous language They do not include implementation details The feature should now be ready to sprint DISCUSS DISTIL
  • 26. Developers turn formal acceptance criteria into automated tests Transform ubiquitous language into domain objects Add technical scenarios Executable requirements DISCUSS DISTIL DEVELOP
  • 27. DISCUSS The feature is ready to demo They already know it meets the requirements They may perform some exploratory testing, including gamifying, red team/blue team, etc. Sprint review DISTIL DEVELOPDEMO

Notas del editor

  1. Will Val