SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Destaque

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é
 

Destaque (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
 

Semelhante a 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
 

Semelhante a 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
 

Mais de 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é
 

Mais de 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
 

Último

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
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
 
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
 
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
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Último (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
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
 
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
 
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
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

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