the road to test driven development l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
The Road To Test-Driven Development PowerPoint Presentation
Download Presentation
The Road To Test-Driven Development

Loading in 2 Seconds...

play fullscreen
1 / 64

The Road To Test-Driven Development - PowerPoint PPT Presentation


  • 266 Views
  • Uploaded on

The Road To Test-Driven Development By Christopher Paulicka Software Engineering Manager Introduction Not just what Test-Driven Development is… But also how to get to Test-Driven Development Agenda What is Test-Driven Development One (Abstract) Road to Test-Driven Development

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'The Road To Test-Driven Development' - oshin


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
the road to test driven development

The Road To Test-Driven Development

By Christopher Paulicka

Software Engineering Manager

Copyright Oversee.net 2008

introduction
Introduction
  • Not just what Test-Driven Development is…
  • But also how to get to Test-Driven Development

Copyright Oversee.net 2008

agenda
Agenda
  • What is Test-Driven Development
  • One (Abstract) Road to Test-Driven Development
  • Your Road to Test-Driven Development
  • My Road to Test-Driven Development

Copyright Oversee.net 2008

vocabulary
Vocabulary
  • Test-Driven Development – TDD
  • Extreme Programming - XP

Copyright Oversee.net 2008

thanks
Thanks
  • Perl Mongers for showing up!
  • Oversee.net for the nice space
  • Michael Lee, Director of Engineering, for “volunteering” me
  • All the development team here at Oversee for feedback

Copyright Oversee.net 2008

the three participants
The Three Participants
  • Christopher Paulicka
  • Oversee.net
  • Perl Mongers

Copyright Oversee.net 2008

christopher paulicka
Christopher Paulicka
  • Software Development – 16 years
  • Testing – 10 years
  • Perl – 4 years
  • Test-Driven Development – 1 year

Copyright Oversee.net 2008

oversee development environment
Oversee Development Environment
  • Agile/Scrum
  • Perforce
  • Linux/Apache/MySQL/Perl, RPM
  • Mason/Catalyst, DBI
  • Test::More, Test::MockObject
  • Test::Unit, Test::WWW::Selenium
  • Module::Build, CPAN2RPM

Copyright Oversee.net 2008

perl mongers
Perl Mongers
  • Perl aficionados
  • Please ask questions at any time
  • What’s your testing experience?

Copyright Oversee.net 2008

what is tdd
What is TDD
  • TDD is old, but kind of new
  • Test first, but still follow requirements
  • Part of Agile/XP, but reusable anywhere

Copyright Oversee.net 2008

important to know
Important to Know
  • History of TDD in Extreme Programming
  • History of Scrum at Oversee

Copyright Oversee.net 2008

software development methodologies
Software Development Methodologies
  • Hack
  • Waterfall
  • Agile

Copyright Oversee.net 2008

waterfall development
Waterfall Development
  • Requirements
  • Design
  • Implement
  • Test
  • Maintain

Copyright Oversee.net 2008

waterfall costs
Waterfall Costs
  • Rigid design
  • High change costs
  • Requires expert designers up front

Copyright Oversee.net 2008

examples of agile methodologies
Examples of Agile Methodologies
  • Extreme Programming
  • Scrum
  • Crystal Clear
  • Feature Driven Development
  • Adaptive Software Development
  • DSDM

Copyright Oversee.net 2008

extreme programming
Extreme Programming
  • Test-Driven Development
  • Continuous Integration
  • Pair Programming
  • Refactoring

Copyright Oversee.net 2008

cost of feedback
Cost of Feedback

Copyright Oversee.net 2008

test driven development
Test-Driven Development
  • Pick a Feature
  • Write a Test for that Feature
  • Run all Tests and see new Test Fail
  • Write Code for Feature
  • Run all Tests and see all Tests Pass
  • Refactor
  • Repeat

Copyright Oversee.net 2008

a bit more about refactoring
A Bit More About Refactoring
  • Refactor the Code
  • Refactor the Tests
  • Refactor the Documentation
  • Refactor the Design

Copyright Oversee.net 2008

who owns testing
Who owns testing?
  • QA
  • Deploy
  • Systems
  • Development

Copyright Oversee.net 2008

types of testing
Types of Testing
  • Requirements Tests
  • Integration Tests
  • System Tests
  • Development Tests

Copyright Oversee.net 2008

types of development testing
Types of Development Testing
  • Unit Tests
  • Regression Tests

Copyright Oversee.net 2008

one possible road to tdd
One Possible Road to TDD
  • Test to Verify
  • Test for Regression
  • Test for Design
  • Test-Driven Development

Copyright Oversee.net 2008

test to verify
Test To Verify
  • Problem arises
  • Write throw away test
  • Disposable code modifications
    • Logging
    • Dumping, etc
  • Simple and Fast
  • Gone forever…

Copyright Oversee.net 2008

why do we do that
Why Do We Do That?
  • Habit
  • Speed
  • Anticipation (almost done…)

Copyright Oversee.net 2008

test for regression
Test for Regression
  • Problem arises
  • Write reusable test that duplicates problem
  • Keep regression test
  • Run regressions anytime

Copyright Oversee.net 2008

good but good enough
Good, but Good enough?
  • Bug driven
  • Prevents regressions
  • Run tests anytime in development
  • Focused late in the curve
  • Expects test framework

Copyright Oversee.net 2008

test for design
Test for Design
  • Design API
  • Write Code
  • Write Tests
  • Refactor

Copyright Oversee.net 2008

development test processes
Development Test Processes
  • Piece-wise Test Last
  • Lump-sum Test Last
  • Test First aka TDD

Copyright Oversee.net 2008

test driven development30
Test-Driven Development
  • As Beck said in XP
    • Good Rules, lead to
    • Good Behavior, which give
    • Good Unit Tests

Copyright Oversee.net 2008

rules
Rules
  • Write code only when test fails
  • Eliminate duplication afterwards

Copyright Oversee.net 2008

behaviors
Behaviors
  • Organic Design
  • Writing own tests
  • Rapid response
  • Modular Design

Copyright Oversee.net 2008

good unit tests
Good Unit Tests
  • Run fast
  • Run in isolation
  • Easy to understand
  • Use real data
  • Incremental step (not too large)

Copyright Oversee.net 2008

your road to tdd
Your Road To TDD
  • Why TDD
  • Cost/Benefit Analysis
  • How To Start

Copyright Oversee.net 2008

why test driven design
Why Test Driven Design
  • Tests as Use Cases
  • Tests as Documentation
  • Tests as Design

Copyright Oversee.net 2008

possible reasons to avoid tdd
Possible reasons to avoid TDD
  • Tests are programmer focused
  • May not be requirement focused
  • Running all tests are slow
  • Sprinting
  • Refactoring
  • Comparing

Copyright Oversee.net 2008

cost benefit of tdd
Cost/Benefit of TDD
  • Industry Analysis
  • Personal Analysis

Copyright Oversee.net 2008

benefits industry analysis
Benefits - Industry Analysis
  • Reduce development lead-time significantly
  • Programmers that write tests are more productive
  • Rarely use a debugger
  • Easy to revert on test failure

Copyright Oversee.net 2008

benefits industry analysis cont
Benefits – Industry Analysis (cont)
  • Programmers tests interface first, then code
  • Shorter implementation time
  • High Code coverage
  • Regressions
  • More modular code

Copyright Oversee.net 2008

costs industry analysis
Costs – Industry Analysis
  • More code
    • Though higher productivity with TDD
  • Costly test setup
    • UI
    • DB
    • Multithreaded
  • Large legacy code bases

Copyright Oversee.net 2008

metrics industry analysis
Metrics – Industry Analysis
  • TDD code passed 18 - 50% more external test cases than control group code
  • TDD code had 10 – 50% less time spent debugging code
  • TDD had from 0 - 16% decrease in productivity (in lines of non-test code)

Copyright Oversee.net 2008

metrics industry analysis cont
Metrics – Industry Analysis (cont)
  • TDD has 163% more asserts/module
  • TDD 2-3x higher test coverage
    • line and condition coverage near 100%
  • TDD coders spent 13% less time producing solutions that were 12% larger then control (including tests!)

Copyright Oversee.net 2008

subjective industry analysis
Subjective – Industry Analysis

After the study, when asked:

  • TDD would stick with TDD
  • TLD would go to TDD (60%+)
  • No tests would go to TLD

Copyright Oversee.net 2008

benefits personal analysis
Benefits – Personal Analysis
  • Senior/Junior Developer Interaction
    • Senior approve tests/API
    • Junior implements API
    • Senior code reviews, done
  • Tests as Use Cases
  • Test Documentation more stable then Code Documentation

Copyright Oversee.net 2008

costs personal analysis
Costs – Personal Analysis
  • More code
    • Though happier with more feedback
  • Costly test setup
    • UI - WWW::Mechanize
    • DB – Test::MockObject
    • Multithreaded - …heh…yes.
  • Large Legacy Codebases are painful, but TDD may be very beneficial…it’s a start!

Copyright Oversee.net 2008

how to start
How To Start
  • Believe in Testing
  • Test Framework
  • Test Coverage
  • Write Tests First

Copyright Oversee.net 2008

believe in testing
Believe in Testing
  • If it's worth building, it's worth testing.
  • If it's not worth testing, why are you wasting your time working on it?

Copyright Oversee.net 2008

test frameworks
Test Frameworks

Perl has a lot…

  • Test::Simple
  • Test::More
  • Test::Unit

Copyright Oversee.net 2008

test coverage
Test Coverage
  • Provide metrics
  • Devel::Cover

Copyright Oversee.net 2008

write tests first
Write Tests First
  • Code review tests
  • Pair program tests
  • Always ask, “Where’s the test?”
  • Help make tests easier

Copyright Oversee.net 2008

be aware
Be Aware!
  • You are now becoming a test expert!
  • TDD Antipatterns
  • Don’t test just to test…

Copyright Oversee.net 2008

my road to test driven development
My Road To Test-Driven Development
  • Hewlett-Packard EMSO
  • Idealab
    • X1
    • Energy Innovations

Copyright Oversee.net 2008

lessons from hewlett packard
Lessons from Hewlett-Packard
  • Tests are nowhere near perfect
  • Tests can prove your point
  • Believe in tests!

Copyright Oversee.net 2008

tests are nowhere near perfect
Tests are nowhere near perfect
  • 500000 lines of code
  • Hundreds of feature tests working
  • Applications run for 3 days
  • I knew it was broken

Copyright Oversee.net 2008

tests can prove your point
Tests can prove your point
  • No one wanted to believe it
  • The product needed to ship
  • Wrote random component creator/messenger/destroyer
  • Core dump in less then a millisecond
  • Created tests from random iterations
  • Fixed hundreds of memory leaks and contention issues

Copyright Oversee.net 2008

lessons from x1
Lessons from X1
  • Good Test Framework
  • Keep each other honest

Copyright Oversee.net 2008

good test framework
Good Test Framework
  • Test::Unit
  • WWW::Mechanize
  • DBI
    • No MockObjects

Copyright Oversee.net 2008

keep each other honest
Keep each other honest
  • Test First, not test eventually
  • Everybody Writes Tests…
  • …but feel free to ask for help

Copyright Oversee.net 2008

lessons from energy innovations
Lessons from Energy Innovations
  • Cost of Refactoring
  • Beware Gold Plating
  • It’s easy to get lazy…

Copyright Oversee.net 2008

summary
Summary
  • Learned about TDD
  • Learned about benefits (and costs) of TDD
  • Learned first steps towards TDD

Copyright Oversee.net 2008

slide61
Q&A

Copyright Oversee.net 2008

bibliography
Bibliography
  • I would highly recommend “The Object Primer” by Scott W. Ambler, now in it’s third edition.
  • http://www.agiledata.org/essays/tdd.html
  • http://en.wikipedia.org/wiki/Test-driven_development
  • http://en.wikipedia.org/wiki/Agile_software_development
  • http://en.wikipedia.org/wiki/Continuous_integration
  • http://en.wikipedia.org/wiki/Refactoring

Copyright Oversee.net 2008

bibliography cont
Bibliography (cont)
  • http://blog.james-carr.org/?p=44
  • http://www.ipd.uka.de/Tichy/uploads/publikationen/136/MuellerHoefer2007.pdf
  • http://www.acm.org/src/subpages/gf_entries_06/DavidJanzen_src_gf06.pdf
  • http://utopia.csis.pace.edu/dps/2008/mcapellan/projects/TDD/TDD_Idea_Paper_V04-03.doc

Copyright Oversee.net 2008

bibliography cont64
Bibliography (cont)
  • http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B75H1-4FC40MJ-2&_user=10&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=fbd92b394263506930dfafb31003a916
  • http://aegis.sourceforge.net/

Copyright Oversee.net 2008