SlideShare a Scribd company logo
1 of 23
Download to read offline
© Schalk W. Cronjé Bangalore July 2013
Real World TDD
Schalk W. Cronjé
@ysb33r
ysb33r@gmail.com
© Schalk W. Cronjé Bangalore July 2013
Following a process / using TDD
does not make your testing agile
© Schalk W. Cronjé Bangalore July 2013
You can accept just to do what you are told
or you can decide to be better ...
Image: http://bit.ly/12FKyID
© Schalk W. Cronjé Bangalore July 2013
TDD?
Test-driven Development ?
Test-driven Design ?
© Schalk W. Cronjé Bangalore July 2013
Myth #1
TDD is writing tests
before production code
© Schalk W. Cronjé Bangalore July 2013
London School of Thought
TDD is growing code,
guided by tests
© Schalk W. Cronjé Bangalore July 2013
Myth #2
TDD is only about writing unit tests
© Schalk W. Cronjé Bangalore July 2013
TDD is growing code ...
guided by
unit tests,
integration tests,
functional tests,
deployment tests
© Schalk W. Cronjé Bangalore July 2013
Myth #3
Test code does not have
to be well-written
© Schalk W. Cronjé Bangalore July 2013
The test system is as important
as the production code
http://dhemery.com/pdf/test-automation-zombie-
apocalypse.pdf
© Schalk W. Cronjé Bangalore July 2013
Lean Startup Exception
In short-lived production code,
don't bother with TDD
unless …
It helps you solve the problem
© Schalk W. Cronjé Bangalore July 2013
Myth #4
TDD is only for new code
© Schalk W. Cronjé Bangalore July 2013
You can decide to be better ...
need a code change?
write a test first,
ensure it passes,
break it, fix it,
make the change
add code coverage
© Schalk W. Cronjé Bangalore July 2013
Gärtner's Cultural Patterns of Agile Testing
Separation
Pipelining
Mini-waterfalls
Integrated
Continuous
http://www.ministryoftesting.com/2013/07/cultural-patterns-in-agile-testing/
© Schalk W. Cronjé Bangalore July 2013
delivered
build
Time Factors in Legacy Testing
Feature 3 Dev
Feature 2 Dev
Feature 4 Dev
Feature 1 Dev
Bug
DB
Feature 1 QA
Feature 2 QA
Feature 3 QA
Feature 4 QA
defect trickle feed
Feature 5+ Dev
Feature 5+ QA
delivered
build
Retest fixes QA
understanding
specs
time from raising defect until it is
available for testing
Building test
infrastructure
time to
re-test
basic build
verification
© Schalk W. Cronjé Bangalore July 2013
Test specification up front
Now everyone knows what we plan to test
© Schalk W. Cronjé Bangalore July 2013
Integrate Developers-Testers into pairs
Shared problem-solving leads
to reduced cycle-time
“Two are better then, because they have good reward for
their labor: If either falls down, one can help the other up.
But pity anyone who falls and has no one to help them
up”.
Ecclesiastes 4:9-10 NIV Translation
~ 971 – 931 BC
© Schalk W. Cronjé Bangalore July 2013
Expressive Test Style
def "'and' should join groups when the thousands multiplier is not a multiple
of one hundred" () {
expect:
EnglishNumbers.format( number ) == english_wording
where:
number | english_wording
120_000 | "one hundred and twenty thousand"
323_000 | "three hundred and twenty three thousand"
}
See also: BDD, ATDD, Specification by Example
© Schalk W. Cronjé Bangalore July 2013
Build a walking skeleton before
any (more) features are written
Do the difficult whilst it is easy
– Sun Tzu, “Art of War”
~ 512 BC
Image: http://bit.ly/15BTxMI
© Schalk W. Cronjé Bangalore July 2013
One class
One unit test
One integration test
One deployment script
Continuous Integration
Auto-deployment
Deployment-driven development
© Schalk W. Cronjé Bangalore July 2013
Advanced CI Orchestration
Expensive test sets should be
downstream and parallellised
http://delivervalue.blogspot.co.uk/2013/06/more-advanced-build-flows-with-
jenkins.html
© Schalk W. Cronjé Bangalore July 2013
Conclusion
● There is more than one way
● Think big (beyond unit tests)
● Be the one that makes the difference
© Schalk W. Cronjé Bangalore July 2013
Real World TDD
Schalk W. Cronjé
@ysb33r
ysb33r @ gmail.com

More Related Content

What's hot

Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDDKnoldus Inc.
 
A confused tester in agile world finalversion
A confused tester in agile world finalversionA confused tester in agile world finalversion
A confused tester in agile world finalversionAshish Kumar
 
Agile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveAgile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveWee Witthawaskul
 
Agile Software Development Process Practice in Thai Culture
Agile Software Development Process Practice in Thai CultureAgile Software Development Process Practice in Thai Culture
Agile Software Development Process Practice in Thai CultureWee Witthawaskul
 
不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradlesam chiu
 
Integrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementIntegrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementChris Sterling
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasKJR
 
Continuous Integration for Citizens
Continuous Integration for CitizensContinuous Integration for Citizens
Continuous Integration for CitizensMikhail Zyatin
 
The DevOps Revolution And Beyond...
The DevOps Revolution And Beyond...The DevOps Revolution And Beyond...
The DevOps Revolution And Beyond...Chris Sterling
 
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013ChileAgil
 
Karate API Testing-Complete Guidance by Testrig
Karate API Testing-Complete Guidance by TestrigKarate API Testing-Complete Guidance by Testrig
Karate API Testing-Complete Guidance by TestrigPritiFGaikwad
 
Seven Keys to Navigating Your Agile Testing Transition
Seven Keys to Navigating Your Agile Testing TransitionSeven Keys to Navigating Your Agile Testing Transition
Seven Keys to Navigating Your Agile Testing TransitionTechWell
 
Teaching Kids Programming
Teaching Kids ProgrammingTeaching Kids Programming
Teaching Kids ProgrammingLynn Langit
 
Towards a Push-Button Release
Towards a Push-Button ReleaseTowards a Push-Button Release
Towards a Push-Button ReleaseChris Sterling
 

What's hot (20)

Agile Testing
Agile TestingAgile Testing
Agile Testing
 
Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDD
 
A confused tester in agile world finalversion
A confused tester in agile world finalversionA confused tester in agile world finalversion
A confused tester in agile world finalversion
 
Agile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveAgile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer Perspective
 
Agile Software Development Process Practice in Thai Culture
Agile Software Development Process Practice in Thai CultureAgile Software Development Process Practice in Thai Culture
Agile Software Development Process Practice in Thai Culture
 
不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle
 
Integrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementIntegrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio Management
 
Test Strategy
Test StrategyTest Strategy
Test Strategy
 
AD090 - Agile Landscape
AD090 - Agile LandscapeAD090 - Agile Landscape
AD090 - Agile Landscape
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
 
Continuous Integration for Citizens
Continuous Integration for CitizensContinuous Integration for Citizens
Continuous Integration for Citizens
 
The DevOps Revolution And Beyond...
The DevOps Revolution And Beyond...The DevOps Revolution And Beyond...
The DevOps Revolution And Beyond...
 
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
 
Are we done yet?
Are we done yet?Are we done yet?
Are we done yet?
 
DevTestOps
DevTestOpsDevTestOps
DevTestOps
 
Agile Testing by Example
Agile Testing by ExampleAgile Testing by Example
Agile Testing by Example
 
Karate API Testing-Complete Guidance by Testrig
Karate API Testing-Complete Guidance by TestrigKarate API Testing-Complete Guidance by Testrig
Karate API Testing-Complete Guidance by Testrig
 
Seven Keys to Navigating Your Agile Testing Transition
Seven Keys to Navigating Your Agile Testing TransitionSeven Keys to Navigating Your Agile Testing Transition
Seven Keys to Navigating Your Agile Testing Transition
 
Teaching Kids Programming
Teaching Kids ProgrammingTeaching Kids Programming
Teaching Kids Programming
 
Towards a Push-Button Release
Towards a Push-Button ReleaseTowards a Push-Button Release
Towards a Push-Button Release
 

Viewers also liked

Agile teams - Prosperity Focused, Values-driven
Agile teams - Prosperity Focused, Values-drivenAgile teams - Prosperity Focused, Values-driven
Agile teams - Prosperity Focused, Values-drivenSchalk Cronjé
 
Captain Agile and the Providers of Value
Captain Agile and the Providers of ValueCaptain Agile and the Providers of Value
Captain Agile and the Providers of ValueSchalk Cronjé
 
Prosperity-focused Agile Technology Leadership
Prosperity-focused Agile Technology LeadershipProsperity-focused Agile Technology Leadership
Prosperity-focused Agile Technology LeadershipSchalk Cronjé
 
Agile teams - Value Focused; Values-driven
Agile teams - Value Focused; Values-drivenAgile teams - Value Focused; Values-driven
Agile teams - Value Focused; Values-drivenSchalk Cronjé
 
Groovy VFS (with 1.0 news)
Groovy VFS (with 1.0 news)Groovy VFS (with 1.0 news)
Groovy VFS (with 1.0 news)Schalk Cronjé
 
Basic Gradle Plugin Writing
Basic Gradle Plugin WritingBasic Gradle Plugin Writing
Basic Gradle Plugin WritingSchalk Cronjé
 

Viewers also liked (6)

Agile teams - Prosperity Focused, Values-driven
Agile teams - Prosperity Focused, Values-drivenAgile teams - Prosperity Focused, Values-driven
Agile teams - Prosperity Focused, Values-driven
 
Captain Agile and the Providers of Value
Captain Agile and the Providers of ValueCaptain Agile and the Providers of Value
Captain Agile and the Providers of Value
 
Prosperity-focused Agile Technology Leadership
Prosperity-focused Agile Technology LeadershipProsperity-focused Agile Technology Leadership
Prosperity-focused Agile Technology Leadership
 
Agile teams - Value Focused; Values-driven
Agile teams - Value Focused; Values-drivenAgile teams - Value Focused; Values-driven
Agile teams - Value Focused; Values-driven
 
Groovy VFS (with 1.0 news)
Groovy VFS (with 1.0 news)Groovy VFS (with 1.0 news)
Groovy VFS (with 1.0 news)
 
Basic Gradle Plugin Writing
Basic Gradle Plugin WritingBasic Gradle Plugin Writing
Basic Gradle Plugin Writing
 

Similar to Real World TDD

Don’t Go over the Waterfall: Keep Agile Testing Agile
Don’t Go over the Waterfall: Keep Agile Testing AgileDon’t Go over the Waterfall: Keep Agile Testing Agile
Don’t Go over the Waterfall: Keep Agile Testing AgileTechWell
 
Automated agile testing using Cucumber
Automated agile testing using CucumberAutomated agile testing using Cucumber
Automated agile testing using CucumberNaveen Kumar Singh
 
Test Automation on Large Agile Projects: It's Not a Cakewalk
Test Automation on Large Agile Projects: It's Not a CakewalkTest Automation on Large Agile Projects: It's Not a Cakewalk
Test Automation on Large Agile Projects: It's Not a CakewalkTechWell
 
Professional Cloud DevOps Engineer - Study Group - Week 1
Professional Cloud DevOps Engineer - Study Group - Week 1Professional Cloud DevOps Engineer - Study Group - Week 1
Professional Cloud DevOps Engineer - Study Group - Week 1Ervin Weber
 
Testing in agile
Testing in agileTesting in agile
Testing in agilesachxn1
 
Workshop on Test Driven Development (TDD) Noida
Workshop on Test Driven Development (TDD) NoidaWorkshop on Test Driven Development (TDD) Noida
Workshop on Test Driven Development (TDD) NoidaSaket Bansal
 
Introduction to Test Driven Development
Introduction to Test Driven DevelopmentIntroduction to Test Driven Development
Introduction to Test Driven DevelopmentMichael Denomy
 
Quality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQuality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQASymphony
 
Manual Testing real time questions .pdf
Manual Testing real time questions .pdfManual Testing real time questions .pdf
Manual Testing real time questions .pdfTiktokIndia2
 
Training - Agile Testing
Training - Agile TestingTraining - Agile Testing
Training - Agile TestingSudipta Lahiri
 
Agile Gurugram 2019 Conferecne | A "Quality" Debate - Rethinking the mindset ...
Agile Gurugram 2019 Conferecne | A "Quality" Debate - Rethinking the mindset ...Agile Gurugram 2019 Conferecne | A "Quality" Debate - Rethinking the mindset ...
Agile Gurugram 2019 Conferecne | A "Quality" Debate - Rethinking the mindset ...AgileNetwork
 
Repeating the "Quality Debate" @ Agile Gurugram 2019 Conference
Repeating the "Quality Debate" @ Agile Gurugram 2019 ConferenceRepeating the "Quality Debate" @ Agile Gurugram 2019 Conference
Repeating the "Quality Debate" @ Agile Gurugram 2019 ConferenceVishal Prasad
 
Gaurav Bharadwaj_ORACLE_ADF_HNC.DOCX
Gaurav Bharadwaj_ORACLE_ADF_HNC.DOCXGaurav Bharadwaj_ORACLE_ADF_HNC.DOCX
Gaurav Bharadwaj_ORACLE_ADF_HNC.DOCXGaurav Bharadwaj
 
Succeeding with Specification by Example
Succeeding with Specification by ExampleSucceeding with Specification by Example
Succeeding with Specification by ExampleAlistair McKinnell
 
Paul Ellarby - Why do scrum?
Paul Ellarby - Why do scrum?Paul Ellarby - Why do scrum?
Paul Ellarby - Why do scrum?Paul Ellarby
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Developmentpmanvi
 
Inside Behavior Driven Development
Inside Behavior Driven DevelopmentInside Behavior Driven Development
Inside Behavior Driven DevelopmentCamille Bell
 

Similar to Real World TDD (20)

Don’t Go over the Waterfall: Keep Agile Testing Agile
Don’t Go over the Waterfall: Keep Agile Testing AgileDon’t Go over the Waterfall: Keep Agile Testing Agile
Don’t Go over the Waterfall: Keep Agile Testing Agile
 
Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd   seven years afterIan Cooper webinar for DDD Iran: Kent beck style tdd   seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
 
Agile Testing - What is it?
Agile Testing - What is it?Agile Testing - What is it?
Agile Testing - What is it?
 
Automated agile testing using Cucumber
Automated agile testing using CucumberAutomated agile testing using Cucumber
Automated agile testing using Cucumber
 
Test Automation on Large Agile Projects: It's Not a Cakewalk
Test Automation on Large Agile Projects: It's Not a CakewalkTest Automation on Large Agile Projects: It's Not a Cakewalk
Test Automation on Large Agile Projects: It's Not a Cakewalk
 
Professional Cloud DevOps Engineer - Study Group - Week 1
Professional Cloud DevOps Engineer - Study Group - Week 1Professional Cloud DevOps Engineer - Study Group - Week 1
Professional Cloud DevOps Engineer - Study Group - Week 1
 
Testing in agile
Testing in agileTesting in agile
Testing in agile
 
Workshop on Test Driven Development (TDD) Noida
Workshop on Test Driven Development (TDD) NoidaWorkshop on Test Driven Development (TDD) Noida
Workshop on Test Driven Development (TDD) Noida
 
Introduction to Test Driven Development
Introduction to Test Driven DevelopmentIntroduction to Test Driven Development
Introduction to Test Driven Development
 
Quality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQuality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the Enterprise
 
Manual Testing real time questions .pdf
Manual Testing real time questions .pdfManual Testing real time questions .pdf
Manual Testing real time questions .pdf
 
Training - Agile Testing
Training - Agile TestingTraining - Agile Testing
Training - Agile Testing
 
Agile Gurugram 2019 Conferecne | A "Quality" Debate - Rethinking the mindset ...
Agile Gurugram 2019 Conferecne | A "Quality" Debate - Rethinking the mindset ...Agile Gurugram 2019 Conferecne | A "Quality" Debate - Rethinking the mindset ...
Agile Gurugram 2019 Conferecne | A "Quality" Debate - Rethinking the mindset ...
 
Repeating the "Quality Debate" @ Agile Gurugram 2019 Conference
Repeating the "Quality Debate" @ Agile Gurugram 2019 ConferenceRepeating the "Quality Debate" @ Agile Gurugram 2019 Conference
Repeating the "Quality Debate" @ Agile Gurugram 2019 Conference
 
Continuous Innovation
Continuous InnovationContinuous Innovation
Continuous Innovation
 
Gaurav Bharadwaj_ORACLE_ADF_HNC.DOCX
Gaurav Bharadwaj_ORACLE_ADF_HNC.DOCXGaurav Bharadwaj_ORACLE_ADF_HNC.DOCX
Gaurav Bharadwaj_ORACLE_ADF_HNC.DOCX
 
Succeeding with Specification by Example
Succeeding with Specification by ExampleSucceeding with Specification by Example
Succeeding with Specification by Example
 
Paul Ellarby - Why do scrum?
Paul Ellarby - Why do scrum?Paul Ellarby - Why do scrum?
Paul Ellarby - Why do scrum?
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Inside Behavior Driven Development
Inside Behavior Driven DevelopmentInside Behavior Driven Development
Inside Behavior Driven Development
 

More from Schalk Cronjé

DocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM WorldDocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM WorldSchalk Cronjé
 
What's new in Asciidoctor
What's new in AsciidoctorWhat's new in Asciidoctor
What's new in AsciidoctorSchalk Cronjé
 
Probability Management
Probability ManagementProbability Management
Probability ManagementSchalk Cronjé
 
Seeking Enligtenment - A journey of purpose rather than instruction
Seeking Enligtenment  - A journey of purpose rather than instructionSeeking Enligtenment  - A journey of purpose rather than instruction
Seeking Enligtenment - A journey of purpose rather than instructionSchalk Cronjé
 
Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Schalk Cronjé
 
Gradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 versionGradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 versionSchalk Cronjé
 
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers VersionCool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers VersionSchalk Cronjé
 
Cool JVM Tools to Help You Test
Cool JVM Tools to Help You TestCool JVM Tools to Help You Test
Cool JVM Tools to Help You TestSchalk Cronjé
 
Using the Groovy Ecosystem for Rapid JVM Development
Using the Groovy Ecosystem for Rapid JVM DevelopmentUsing the Groovy Ecosystem for Rapid JVM Development
Using the Groovy Ecosystem for Rapid JVM DevelopmentSchalk Cronjé
 
Seeking Enligtenment - A journey of purpose rather tan instruction
Seeking Enligtenment - A journey of purpose rather tan instructionSeeking Enligtenment - A journey of purpose rather tan instruction
Seeking Enligtenment - A journey of purpose rather tan instructionSchalk Cronjé
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingSchalk Cronjé
 
Beyond Estimates - Probability Management
Beyond Estimates - Probability ManagementBeyond Estimates - Probability Management
Beyond Estimates - Probability ManagementSchalk Cronjé
 
Documentation An Engineering Problem Unsolved
Documentation  An Engineering Problem UnsolvedDocumentation  An Engineering Problem Unsolved
Documentation An Engineering Problem UnsolvedSchalk Cronjé
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingSchalk Cronjé
 
Gradle in a Polyglot World
Gradle in a Polyglot WorldGradle in a Polyglot World
Gradle in a Polyglot WorldSchalk Cronjé
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingSchalk Cronjé
 
Death of Agile : Welcome to Value-focused Testing
Death of Agile : Welcome to Value-focused TestingDeath of Agile : Welcome to Value-focused Testing
Death of Agile : Welcome to Value-focused TestingSchalk Cronjé
 

More from Schalk Cronjé (20)

DocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM WorldDocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM World
 
DocuOps & Asciidoctor
DocuOps & AsciidoctorDocuOps & Asciidoctor
DocuOps & Asciidoctor
 
What's new in Asciidoctor
What's new in AsciidoctorWhat's new in Asciidoctor
What's new in Asciidoctor
 
Probability Management
Probability ManagementProbability Management
Probability Management
 
Seeking Enligtenment - A journey of purpose rather than instruction
Seeking Enligtenment  - A journey of purpose rather than instructionSeeking Enligtenment  - A journey of purpose rather than instruction
Seeking Enligtenment - A journey of purpose rather than instruction
 
Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016
 
Gradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 versionGradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 version
 
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers VersionCool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
 
Cool JVM Tools to Help You Test
Cool JVM Tools to Help You TestCool JVM Tools to Help You Test
Cool JVM Tools to Help You Test
 
Using the Groovy Ecosystem for Rapid JVM Development
Using the Groovy Ecosystem for Rapid JVM DevelopmentUsing the Groovy Ecosystem for Rapid JVM Development
Using the Groovy Ecosystem for Rapid JVM Development
 
Gradle in 45min
Gradle in 45minGradle in 45min
Gradle in 45min
 
Seeking Enligtenment - A journey of purpose rather tan instruction
Seeking Enligtenment - A journey of purpose rather tan instructionSeeking Enligtenment - A journey of purpose rather tan instruction
Seeking Enligtenment - A journey of purpose rather tan instruction
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Beyond Estimates - Probability Management
Beyond Estimates - Probability ManagementBeyond Estimates - Probability Management
Beyond Estimates - Probability Management
 
Documentation An Engineering Problem Unsolved
Documentation  An Engineering Problem UnsolvedDocumentation  An Engineering Problem Unsolved
Documentation An Engineering Problem Unsolved
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Gradle in a Polyglot World
Gradle in a Polyglot WorldGradle in a Polyglot World
Gradle in a Polyglot World
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Death of Agile : Welcome to Value-focused Testing
Death of Agile : Welcome to Value-focused TestingDeath of Agile : Welcome to Value-focused Testing
Death of Agile : Welcome to Value-focused Testing
 
Asciidoctor in 15min
Asciidoctor in 15minAsciidoctor in 15min
Asciidoctor in 15min
 

Recently uploaded

A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
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
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
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
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 

Recently uploaded (20)

A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
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.
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
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
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 

Real World TDD

  • 1. © Schalk W. Cronjé Bangalore July 2013 Real World TDD Schalk W. Cronjé @ysb33r ysb33r@gmail.com
  • 2. © Schalk W. Cronjé Bangalore July 2013 Following a process / using TDD does not make your testing agile
  • 3. © Schalk W. Cronjé Bangalore July 2013 You can accept just to do what you are told or you can decide to be better ... Image: http://bit.ly/12FKyID
  • 4. © Schalk W. Cronjé Bangalore July 2013 TDD? Test-driven Development ? Test-driven Design ?
  • 5. © Schalk W. Cronjé Bangalore July 2013 Myth #1 TDD is writing tests before production code
  • 6. © Schalk W. Cronjé Bangalore July 2013 London School of Thought TDD is growing code, guided by tests
  • 7. © Schalk W. Cronjé Bangalore July 2013 Myth #2 TDD is only about writing unit tests
  • 8. © Schalk W. Cronjé Bangalore July 2013 TDD is growing code ... guided by unit tests, integration tests, functional tests, deployment tests
  • 9. © Schalk W. Cronjé Bangalore July 2013 Myth #3 Test code does not have to be well-written
  • 10. © Schalk W. Cronjé Bangalore July 2013 The test system is as important as the production code http://dhemery.com/pdf/test-automation-zombie- apocalypse.pdf
  • 11. © Schalk W. Cronjé Bangalore July 2013 Lean Startup Exception In short-lived production code, don't bother with TDD unless … It helps you solve the problem
  • 12. © Schalk W. Cronjé Bangalore July 2013 Myth #4 TDD is only for new code
  • 13. © Schalk W. Cronjé Bangalore July 2013 You can decide to be better ... need a code change? write a test first, ensure it passes, break it, fix it, make the change add code coverage
  • 14. © Schalk W. Cronjé Bangalore July 2013 Gärtner's Cultural Patterns of Agile Testing Separation Pipelining Mini-waterfalls Integrated Continuous http://www.ministryoftesting.com/2013/07/cultural-patterns-in-agile-testing/
  • 15. © Schalk W. Cronjé Bangalore July 2013 delivered build Time Factors in Legacy Testing Feature 3 Dev Feature 2 Dev Feature 4 Dev Feature 1 Dev Bug DB Feature 1 QA Feature 2 QA Feature 3 QA Feature 4 QA defect trickle feed Feature 5+ Dev Feature 5+ QA delivered build Retest fixes QA understanding specs time from raising defect until it is available for testing Building test infrastructure time to re-test basic build verification
  • 16. © Schalk W. Cronjé Bangalore July 2013 Test specification up front Now everyone knows what we plan to test
  • 17. © Schalk W. Cronjé Bangalore July 2013 Integrate Developers-Testers into pairs Shared problem-solving leads to reduced cycle-time “Two are better then, because they have good reward for their labor: If either falls down, one can help the other up. But pity anyone who falls and has no one to help them up”. Ecclesiastes 4:9-10 NIV Translation ~ 971 – 931 BC
  • 18. © Schalk W. Cronjé Bangalore July 2013 Expressive Test Style def "'and' should join groups when the thousands multiplier is not a multiple of one hundred" () { expect: EnglishNumbers.format( number ) == english_wording where: number | english_wording 120_000 | "one hundred and twenty thousand" 323_000 | "three hundred and twenty three thousand" } See also: BDD, ATDD, Specification by Example
  • 19. © Schalk W. Cronjé Bangalore July 2013 Build a walking skeleton before any (more) features are written Do the difficult whilst it is easy – Sun Tzu, “Art of War” ~ 512 BC Image: http://bit.ly/15BTxMI
  • 20. © Schalk W. Cronjé Bangalore July 2013 One class One unit test One integration test One deployment script Continuous Integration Auto-deployment Deployment-driven development
  • 21. © Schalk W. Cronjé Bangalore July 2013 Advanced CI Orchestration Expensive test sets should be downstream and parallellised http://delivervalue.blogspot.co.uk/2013/06/more-advanced-build-flows-with- jenkins.html
  • 22. © Schalk W. Cronjé Bangalore July 2013 Conclusion ● There is more than one way ● Think big (beyond unit tests) ● Be the one that makes the difference
  • 23. © Schalk W. Cronjé Bangalore July 2013 Real World TDD Schalk W. Cronjé @ysb33r ysb33r @ gmail.com