SlideShare a Scribd company logo
Test Driven
Development (TDD)
A technique for building software that guides
software development by writing tests.
About Me!
A Geek at heart.
Technology enthusiast
a haPHPy’er
A DevOps!
... actually a Fullstack Engineer
@vijaykumbhar
vijay.kumbhar
https://github.com/kvijay
Vijay Kumbhar
Agile Manifesto : Principles
● Continuous Delivery
● Love’s Changing Requirements
● Frequent Shippable Deliveries
● Involve everyone :)
● Frequent Communication
● Moto "A working software”
● Continuous attention to tech excellence and good design
● Simplicity is essential (DRY/SOLID)
● Self organizing teams
● Periodic Retrospective
“inspect-and-adapt” approach to development
Quotes
The act of writing unit test is more an act of design than verification
- by Robert C Martin aka Uncle Bob
Walking on water and developing software from a specification are
both easy if both are frozen
- By Edward V. Berard
Whenever you are tempted to type something into a print statement or
a debugger expression, write it as a test instead.
- By Martin Fowler
No process in this world is the best in all cases
Traditional Development Approach
Problem with this is...
● Complete manual intervention.
● Needs more focus and more energy.
Contd...
● We pick a requirement
● We write a code, create database ….
● Test the code
● If pass then starts with new features
● If fails starts from issues / modifying
code and test them again
Traditional Development Approach
When any issue/bug found in the application…
● Dissect code in and out.
● Takes more effort (Think of Legacy Code with 100000 LOC)
● It’s scaffolding exercise
● Setting up break points
● Monitoring temporary variables
● Having log statements in place, etc...
● Hard to maintain the code
● Need precise documentation or commenting in the code.
Hard Exercise ?
Who is the life Saver??
Getting Right Thought Process
Time, Cost, Quality, Extendibility, Readability,
Understandability
Change In Thought Process
Time, Cost, Quality, Extendibility, Readability,
Understandability
Mindblockers
● Big learning curve
● Need lots of time
● Affect the cost
In Reality
● Future : Cut down impact analysis and QA time.
● Long Goal : Reduces cost and time
● Improved Code quality
● Code is more readable & understandable.
● Fail early to succeed sooner
TDD Mantra
Red, Green, Refactor - the TDD mantra
● Red - write little test that doesn't
work
● Green - make test work as quickly
as possible, committing whatever
sins necessary in the process
● Refactor - eliminate all of the
duplication created in merely
getting the test to work
● Repeat
TDD Approach
TDD Approach
● Quickly add a test - just enough code to fail test.
● Run the tests - Run the test-suite to ensure the test fails.
● Update the code - Update your functional code to ensure new test passes.
● Re-run tests - Re-run the test-suite & keep updating the functional code
until test passes
● Refactor - The code and design to make the design as simple as possible
and remove any possible duplication and move on.
● **Repeat - Repeat the process again 1 to 5..
TDD Benefits
● Shorten the feedback cycle
● Provide detailed (executable) specification
● Promotes quality code with the constant refactoring
● Smells bad implementation
● In Minutes get fine grained and concrete feedback
● It lets your teammates count on you, and so can you on them.
Legacy Software dev. and testing
● Mostly follows the waterfall/big-ban process
● Very little emphasis on unit testing by developers
● Tests are almost developed as an afterthought
● Tests are mostly manual
● Huge emphasis on QA team
● Delivering the quality software on time and within budget is
almost accidental.
Myths about TDD
● Myth - TDD should be used in small projects involving enough team force but
won’t scale for large projects involving hundreds of people..
● Answer - Not True
- kent Beck worked on a pure TDD project developed in Smalltalk.
- 4 years and 40 man year of effort resulting in 250k lines of functional code
and 250k lines of test code.
- 4000 test cases run under 20 mins
- Full suite runs several times in a day
Ideal qualities of Unit tests
● Decisive
● Valid
● Complete
● Repeatable
● Isolated
● Automated
Why TDD?
If it’s worth building, it’s worth testing.
If its not worth testing, why are you
wasting your time working on it?
- Scott Ambler
Thank You!
@webonise weboniselab

More Related Content

What's hot

TDD & BDD
TDD & BDDTDD & BDD
TDD & BDD
Arvind Vyas
 
Continuous performance: Load testing for developers with gatling
Continuous performance: Load testing for developers with gatlingContinuous performance: Load testing for developers with gatling
Continuous performance: Load testing for developers with gatling
Tim van Eijndhoven
 
Five Easy Ways to QA Your Drupal Site
Five Easy Ways to QA Your Drupal SiteFive Easy Ways to QA Your Drupal Site
Five Easy Ways to QA Your Drupal Site
Mediacurrent
 
Test driven development and unit testing with examples in C++
Test driven development and unit testing with examples in C++Test driven development and unit testing with examples in C++
Test driven development and unit testing with examples in C++
Hong Le Van
 
Automated Testing for Embedded Software in C or C++
Automated Testing for Embedded Software in C or C++Automated Testing for Embedded Software in C or C++
Automated Testing for Embedded Software in C or C++
Lars Thorup
 
Test driven development_continuous_integration
Test driven development_continuous_integrationTest driven development_continuous_integration
Test driven development_continuous_integration
haochenglee
 
Introduction to test_driven_development
Introduction to test_driven_developmentIntroduction to test_driven_development
Introduction to test_driven_development
haochenglee
 
XP in the full stack
XP in the full stackXP in the full stack
XP in the full stack
XP Conference India
 
VT.NET 20160411: An Intro to Test Driven Development (TDD)
VT.NET 20160411: An Intro to Test Driven Development (TDD)VT.NET 20160411: An Intro to Test Driven Development (TDD)
VT.NET 20160411: An Intro to Test Driven Development (TDD)
Rob Hale
 
Test Driven Development with PHPUnit
Test Driven Development with PHPUnitTest Driven Development with PHPUnit
Test Driven Development with PHPUnit
Tuan Nguyen
 
How to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated TestingHow to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated Testing
Acquia
 
POUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love youPOUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love you
Jacek Gebal
 
Unit Testing with Python
Unit Testing with PythonUnit Testing with Python
Unit Testing with Python
MicroPyramid .
 
TDD in PHP - Memphis PHP 2011-08-25
TDD in PHP - Memphis PHP 2011-08-25TDD in PHP - Memphis PHP 2011-08-25
TDD in PHP - Memphis PHP 2011-08-25Jeremy Kendall
 
Drupalcamp Simpletest
Drupalcamp SimpletestDrupalcamp Simpletest
Drupalcamp Simpletestlyricnz
 
javabasics_ programming development chapter01
javabasics_ programming development chapter01javabasics_ programming development chapter01
javabasics_ programming development chapter01
Udeshg90
 
POUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQL
POUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQLPOUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQL
POUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQL
Jacek Gebal
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Consulthinkspa
 
PL/SQL unit testing with Ruby
PL/SQL unit testing with RubyPL/SQL unit testing with Ruby
PL/SQL unit testing with Ruby
Raimonds Simanovskis
 

What's hot (20)

TDD & BDD
TDD & BDDTDD & BDD
TDD & BDD
 
Continuous performance: Load testing for developers with gatling
Continuous performance: Load testing for developers with gatlingContinuous performance: Load testing for developers with gatling
Continuous performance: Load testing for developers with gatling
 
Five Easy Ways to QA Your Drupal Site
Five Easy Ways to QA Your Drupal SiteFive Easy Ways to QA Your Drupal Site
Five Easy Ways to QA Your Drupal Site
 
Test driven development and unit testing with examples in C++
Test driven development and unit testing with examples in C++Test driven development and unit testing with examples in C++
Test driven development and unit testing with examples in C++
 
Automated Testing for Embedded Software in C or C++
Automated Testing for Embedded Software in C or C++Automated Testing for Embedded Software in C or C++
Automated Testing for Embedded Software in C or C++
 
Test driven development_continuous_integration
Test driven development_continuous_integrationTest driven development_continuous_integration
Test driven development_continuous_integration
 
Introduction to test_driven_development
Introduction to test_driven_developmentIntroduction to test_driven_development
Introduction to test_driven_development
 
XP in the full stack
XP in the full stackXP in the full stack
XP in the full stack
 
VT.NET 20160411: An Intro to Test Driven Development (TDD)
VT.NET 20160411: An Intro to Test Driven Development (TDD)VT.NET 20160411: An Intro to Test Driven Development (TDD)
VT.NET 20160411: An Intro to Test Driven Development (TDD)
 
Test Driven Development with PHPUnit
Test Driven Development with PHPUnitTest Driven Development with PHPUnit
Test Driven Development with PHPUnit
 
How to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated TestingHow to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated Testing
 
POUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love youPOUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love you
 
Unit Testing with Python
Unit Testing with PythonUnit Testing with Python
Unit Testing with Python
 
Automation and Technical Debt
Automation and Technical DebtAutomation and Technical Debt
Automation and Technical Debt
 
TDD in PHP - Memphis PHP 2011-08-25
TDD in PHP - Memphis PHP 2011-08-25TDD in PHP - Memphis PHP 2011-08-25
TDD in PHP - Memphis PHP 2011-08-25
 
Drupalcamp Simpletest
Drupalcamp SimpletestDrupalcamp Simpletest
Drupalcamp Simpletest
 
javabasics_ programming development chapter01
javabasics_ programming development chapter01javabasics_ programming development chapter01
javabasics_ programming development chapter01
 
POUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQL
POUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQLPOUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQL
POUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQL
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
PL/SQL unit testing with Ruby
PL/SQL unit testing with RubyPL/SQL unit testing with Ruby
PL/SQL unit testing with Ruby
 

Viewers also liked

Web Application Cache (APC, Memcache)
Web Application Cache (APC, Memcache)Web Application Cache (APC, Memcache)
Web Application Cache (APC, Memcache)
Vijay Kumbhar
 
Background Check & Due Diligence Services - Arch360 Group
Background Check & Due Diligence Services - Arch360 GroupBackground Check & Due Diligence Services - Arch360 Group
Background Check & Due Diligence Services - Arch360 GroupGabriela Coldea, CFE
 
Festivals
FestivalsFestivals
Constitution
ConstitutionConstitution
Constitution
coesc
 
Ppt01 the balloon 2010
Ppt01 the balloon 2010Ppt01 the balloon 2010
Ppt01 the balloon 2010luciamontoliu
 
FELIS
FELISFELIS
Altamaha School Media Center
Altamaha School Media CenterAltamaha School Media Center
Altamaha School Media Centerjessmiles04
 
Intellectual property
Intellectual propertyIntellectual property
Intellectual propertyRexNige
 
Heritage Observatory Open Data GIS Platform
Heritage Observatory Open Data GIS PlatformHeritage Observatory Open Data GIS Platform
Heritage Observatory Open Data GIS Platform
Daniel Caune
 
ad:tech App Exchange: McDonald's Monopoly Case Study
ad:tech App Exchange: McDonald's Monopoly Case Studyad:tech App Exchange: McDonald's Monopoly Case Study
ad:tech App Exchange: McDonald's Monopoly Case Study
Context Optional
 
Life Unlimited Church Announcements
Life Unlimited Church AnnouncementsLife Unlimited Church Announcements
Life Unlimited Church Announcements
luchurch
 
What can i do with my
What can i do with myWhat can i do with my
What can i do with myluciamontoliu
 
Refueling
RefuelingRefueling
Refueling
pkryan
 
Social Media Best Practices OMMA Global Case Study
Social Media Best Practices OMMA Global Case StudySocial Media Best Practices OMMA Global Case Study
Social Media Best Practices OMMA Global Case Study
Context Optional
 

Viewers also liked (20)

Web Application Cache (APC, Memcache)
Web Application Cache (APC, Memcache)Web Application Cache (APC, Memcache)
Web Application Cache (APC, Memcache)
 
Tree story
Tree storyTree story
Tree story
 
Background Check & Due Diligence Services - Arch360 Group
Background Check & Due Diligence Services - Arch360 GroupBackground Check & Due Diligence Services - Arch360 Group
Background Check & Due Diligence Services - Arch360 Group
 
Festivals
FestivalsFestivals
Festivals
 
Christmas p3
Christmas p3Christmas p3
Christmas p3
 
Constitution
ConstitutionConstitution
Constitution
 
Peggy and mummy
Peggy and mummyPeggy and mummy
Peggy and mummy
 
Ppt01 the balloon 2010
Ppt01 the balloon 2010Ppt01 the balloon 2010
Ppt01 the balloon 2010
 
Spring
SpringSpring
Spring
 
Costume research
Costume researchCostume research
Costume research
 
FELIS
FELISFELIS
FELIS
 
Altamaha School Media Center
Altamaha School Media CenterAltamaha School Media Center
Altamaha School Media Center
 
Winter p4
Winter p4Winter p4
Winter p4
 
Intellectual property
Intellectual propertyIntellectual property
Intellectual property
 
Heritage Observatory Open Data GIS Platform
Heritage Observatory Open Data GIS PlatformHeritage Observatory Open Data GIS Platform
Heritage Observatory Open Data GIS Platform
 
ad:tech App Exchange: McDonald's Monopoly Case Study
ad:tech App Exchange: McDonald's Monopoly Case Studyad:tech App Exchange: McDonald's Monopoly Case Study
ad:tech App Exchange: McDonald's Monopoly Case Study
 
Life Unlimited Church Announcements
Life Unlimited Church AnnouncementsLife Unlimited Church Announcements
Life Unlimited Church Announcements
 
What can i do with my
What can i do with myWhat can i do with my
What can i do with my
 
Refueling
RefuelingRefueling
Refueling
 
Social Media Best Practices OMMA Global Case Study
Social Media Best Practices OMMA Global Case StudySocial Media Best Practices OMMA Global Case Study
Social Media Best Practices OMMA Global Case Study
 

Similar to Test Driven Development Methodology and Philosophy

TDD in Agile
TDD in AgileTDD in Agile
TDD in Agile
Atish Narlawar
 
Test-Driven Development.pptx
Test-Driven Development.pptxTest-Driven Development.pptx
Test-Driven Development.pptx
Tomas561914
 
Agile
AgileAgile
Agile
Komal2525
 
Tdd and bdd
Tdd and bddTdd and bdd
Tdd and bdd
MohamedSubhiBouchi
 
TDD
TDDTDD
Test-Driven Development Reference Card
Test-Driven Development Reference CardTest-Driven Development Reference Card
Test-Driven Development Reference CardSeapine Software
 
DevTestOps
DevTestOpsDevTestOps
DevTestOps
Paul Mateos
 
Tdd
TddTdd
Keeping code clean
Keeping code cleanKeeping code clean
Keeping code clean
Brett Child
 
Software Development Methodologies
Software Development Methodologies Software Development Methodologies
Software Development Methodologies
Frances Coronel
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Sachithra Gayan
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
Mike Douglas
 
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Jason Tice
 
Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"
Lars Thorup
 
Test-Driven Development In Action
Test-Driven Development In ActionTest-Driven Development In Action
Test-Driven Development In Action
Jon Kruger
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
nikhil sreeni
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
Peter Kofler
 
{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx
AmalEldhose2
 
Continuous everything
Continuous everythingContinuous everything
Continuous everything
TEST Huddle
 

Similar to Test Driven Development Methodology and Philosophy (20)

TDD in Agile
TDD in AgileTDD in Agile
TDD in Agile
 
Test-Driven Development.pptx
Test-Driven Development.pptxTest-Driven Development.pptx
Test-Driven Development.pptx
 
Agile
AgileAgile
Agile
 
Tdd and bdd
Tdd and bddTdd and bdd
Tdd and bdd
 
TDD
TDDTDD
TDD
 
Test-Driven Development Reference Card
Test-Driven Development Reference CardTest-Driven Development Reference Card
Test-Driven Development Reference Card
 
DevTestOps
DevTestOpsDevTestOps
DevTestOps
 
Tdd
TddTdd
Tdd
 
Keeping code clean
Keeping code cleanKeeping code clean
Keeping code clean
 
Software Development Methodologies
Software Development Methodologies Software Development Methodologies
Software Development Methodologies
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
 
Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"
 
Test-Driven Development In Action
Test-Driven Development In ActionTest-Driven Development In Action
Test-Driven Development In Action
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
 
{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx
 
Continuous everything
Continuous everythingContinuous everything
Continuous everything
 
tem7
tem7tem7
tem7
 

Recently uploaded

Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
Sharepoint Designs
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
KrzysztofKkol1
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 

Recently uploaded (20)

Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 

Test Driven Development Methodology and Philosophy

  • 1. Test Driven Development (TDD) A technique for building software that guides software development by writing tests.
  • 2. About Me! A Geek at heart. Technology enthusiast a haPHPy’er A DevOps! ... actually a Fullstack Engineer @vijaykumbhar vijay.kumbhar https://github.com/kvijay Vijay Kumbhar
  • 3. Agile Manifesto : Principles ● Continuous Delivery ● Love’s Changing Requirements ● Frequent Shippable Deliveries ● Involve everyone :) ● Frequent Communication ● Moto "A working software” ● Continuous attention to tech excellence and good design ● Simplicity is essential (DRY/SOLID) ● Self organizing teams ● Periodic Retrospective “inspect-and-adapt” approach to development
  • 4. Quotes The act of writing unit test is more an act of design than verification - by Robert C Martin aka Uncle Bob Walking on water and developing software from a specification are both easy if both are frozen - By Edward V. Berard Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead. - By Martin Fowler No process in this world is the best in all cases
  • 5. Traditional Development Approach Problem with this is... ● Complete manual intervention. ● Needs more focus and more energy. Contd... ● We pick a requirement ● We write a code, create database …. ● Test the code ● If pass then starts with new features ● If fails starts from issues / modifying code and test them again
  • 6. Traditional Development Approach When any issue/bug found in the application… ● Dissect code in and out. ● Takes more effort (Think of Legacy Code with 100000 LOC) ● It’s scaffolding exercise ● Setting up break points ● Monitoring temporary variables ● Having log statements in place, etc... ● Hard to maintain the code ● Need precise documentation or commenting in the code. Hard Exercise ?
  • 7. Who is the life Saver??
  • 8. Getting Right Thought Process Time, Cost, Quality, Extendibility, Readability, Understandability
  • 9. Change In Thought Process Time, Cost, Quality, Extendibility, Readability, Understandability Mindblockers ● Big learning curve ● Need lots of time ● Affect the cost In Reality ● Future : Cut down impact analysis and QA time. ● Long Goal : Reduces cost and time ● Improved Code quality ● Code is more readable & understandable. ● Fail early to succeed sooner
  • 10. TDD Mantra Red, Green, Refactor - the TDD mantra ● Red - write little test that doesn't work ● Green - make test work as quickly as possible, committing whatever sins necessary in the process ● Refactor - eliminate all of the duplication created in merely getting the test to work ● Repeat
  • 12. TDD Approach ● Quickly add a test - just enough code to fail test. ● Run the tests - Run the test-suite to ensure the test fails. ● Update the code - Update your functional code to ensure new test passes. ● Re-run tests - Re-run the test-suite & keep updating the functional code until test passes ● Refactor - The code and design to make the design as simple as possible and remove any possible duplication and move on. ● **Repeat - Repeat the process again 1 to 5..
  • 13. TDD Benefits ● Shorten the feedback cycle ● Provide detailed (executable) specification ● Promotes quality code with the constant refactoring ● Smells bad implementation ● In Minutes get fine grained and concrete feedback ● It lets your teammates count on you, and so can you on them.
  • 14. Legacy Software dev. and testing ● Mostly follows the waterfall/big-ban process ● Very little emphasis on unit testing by developers ● Tests are almost developed as an afterthought ● Tests are mostly manual ● Huge emphasis on QA team ● Delivering the quality software on time and within budget is almost accidental.
  • 15. Myths about TDD ● Myth - TDD should be used in small projects involving enough team force but won’t scale for large projects involving hundreds of people.. ● Answer - Not True - kent Beck worked on a pure TDD project developed in Smalltalk. - 4 years and 40 man year of effort resulting in 250k lines of functional code and 250k lines of test code. - 4000 test cases run under 20 mins - Full suite runs several times in a day
  • 16. Ideal qualities of Unit tests ● Decisive ● Valid ● Complete ● Repeatable ● Isolated ● Automated
  • 17. Why TDD? If it’s worth building, it’s worth testing. If its not worth testing, why are you wasting your time working on it? - Scott Ambler