The road to test driven development
Download
1 / 64

The Road To Test-Driven Development - PowerPoint PPT Presentation


  • 258 Views
  • Updated 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 l.jpg

The Road To Test-Driven Development

By Christopher Paulicka

Software Engineering Manager

Copyright Oversee.net 2008


Introduction l.jpg
Introduction

  • Not just what Test-Driven Development is…

  • But also how to get to Test-Driven Development

Copyright Oversee.net 2008


Agenda l.jpg
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 l.jpg
Vocabulary

  • Test-Driven Development – TDD

  • Extreme Programming - XP

Copyright Oversee.net 2008


Thanks l.jpg
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 l.jpg
The Three Participants

  • Christopher Paulicka

  • Oversee.net

  • Perl Mongers

Copyright Oversee.net 2008


Christopher paulicka l.jpg
Christopher Paulicka

  • Software Development – 16 years

  • Testing – 10 years

  • Perl – 4 years

  • Test-Driven Development – 1 year

Copyright Oversee.net 2008


Oversee development environment l.jpg
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 l.jpg
Perl Mongers

  • Perl aficionados

  • Please ask questions at any time

  • What’s your testing experience?

Copyright Oversee.net 2008


What is tdd l.jpg
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 l.jpg
Important to Know

  • History of TDD in Extreme Programming

  • History of Scrum at Oversee

Copyright Oversee.net 2008


Software development methodologies l.jpg
Software Development Methodologies

  • Hack

  • Waterfall

  • Agile

Copyright Oversee.net 2008


Waterfall development l.jpg
Waterfall Development

  • Requirements

  • Design

  • Implement

  • Test

  • Maintain

Copyright Oversee.net 2008


Waterfall costs l.jpg
Waterfall Costs

  • Rigid design

  • High change costs

  • Requires expert designers up front

Copyright Oversee.net 2008


Examples of agile methodologies l.jpg
Examples of Agile Methodologies

  • Extreme Programming

  • Scrum

  • Crystal Clear

  • Feature Driven Development

  • Adaptive Software Development

  • DSDM

Copyright Oversee.net 2008


Extreme programming l.jpg
Extreme Programming

  • Test-Driven Development

  • Continuous Integration

  • Pair Programming

  • Refactoring

Copyright Oversee.net 2008


Cost of feedback l.jpg
Cost of Feedback

Copyright Oversee.net 2008


Test driven development l.jpg
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 l.jpg
A Bit More About Refactoring

  • Refactor the Code

  • Refactor the Tests

  • Refactor the Documentation

  • Refactor the Design

Copyright Oversee.net 2008


Who owns testing l.jpg
Who owns testing?

  • QA

  • Deploy

  • Systems

  • Development

Copyright Oversee.net 2008


Types of testing l.jpg
Types of Testing

  • Requirements Tests

  • Integration Tests

  • System Tests

  • Development Tests

Copyright Oversee.net 2008


Types of development testing l.jpg
Types of Development Testing

  • Unit Tests

  • Regression Tests

Copyright Oversee.net 2008


One possible road to tdd l.jpg
One Possible Road to TDD

  • Test to Verify

  • Test for Regression

  • Test for Design

  • Test-Driven Development

Copyright Oversee.net 2008


Test to verify l.jpg
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 l.jpg
Why Do We Do That?

  • Habit

  • Speed

  • Anticipation (almost done…)

Copyright Oversee.net 2008


Test for regression l.jpg
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 l.jpg
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 l.jpg
Test for Design

  • Design API

  • Write Code

  • Write Tests

  • Refactor

Copyright Oversee.net 2008


Development test processes l.jpg
Development Test Processes

  • Piece-wise Test Last

  • Lump-sum Test Last

  • Test First aka TDD

Copyright Oversee.net 2008


Test driven development30 l.jpg
Test-Driven Development

  • As Beck said in XP

    • Good Rules, lead to

    • Good Behavior, which give

    • Good Unit Tests

Copyright Oversee.net 2008


Rules l.jpg
Rules

  • Write code only when test fails

  • Eliminate duplication afterwards

Copyright Oversee.net 2008


Behaviors l.jpg
Behaviors

  • Organic Design

  • Writing own tests

  • Rapid response

  • Modular Design

Copyright Oversee.net 2008


Good unit tests l.jpg
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 l.jpg
Your Road To TDD

  • Why TDD

  • Cost/Benefit Analysis

  • How To Start

Copyright Oversee.net 2008


Why test driven design l.jpg
Why Test Driven Design

  • Tests as Use Cases

  • Tests as Documentation

  • Tests as Design

Copyright Oversee.net 2008


Possible reasons to avoid tdd l.jpg
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 l.jpg
Cost/Benefit of TDD

  • Industry Analysis

  • Personal Analysis

Copyright Oversee.net 2008


Benefits industry analysis l.jpg
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 l.jpg
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 l.jpg
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 l.jpg
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 l.jpg
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 l.jpg
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 l.jpg
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 l.jpg
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 l.jpg
How To Start

  • Believe in Testing

  • Test Framework

  • Test Coverage

  • Write Tests First

Copyright Oversee.net 2008


Believe in testing l.jpg
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 l.jpg
Test Frameworks

Perl has a lot…

  • Test::Simple

  • Test::More

  • Test::Unit

Copyright Oversee.net 2008


Test coverage l.jpg
Test Coverage

  • Provide metrics

  • Devel::Cover

Copyright Oversee.net 2008


Write tests first l.jpg
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 l.jpg
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 l.jpg
My Road To Test-Driven Development

  • Hewlett-Packard EMSO

  • Idealab

    • X1

    • Energy Innovations

Copyright Oversee.net 2008


Lessons from hewlett packard l.jpg
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 l.jpg
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 l.jpg
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 l.jpg
Lessons from X1

  • Good Test Framework

  • Keep each other honest

Copyright Oversee.net 2008


Good test framework l.jpg
Good Test Framework

  • Test::Unit

  • WWW::Mechanize

  • DBI

    • No MockObjects

Copyright Oversee.net 2008


Keep each other honest l.jpg
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 l.jpg
Lessons from Energy Innovations

  • Cost of Refactoring

  • Beware Gold Plating

  • It’s easy to get lazy…

Copyright Oversee.net 2008


Summary l.jpg
Summary

  • Learned about TDD

  • Learned about benefits (and costs) of TDD

  • Learned first steps towards TDD

Copyright Oversee.net 2008


Slide61 l.jpg
Q&A

Copyright Oversee.net 2008


Bibliography l.jpg
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 l.jpg
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 l.jpg
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


ad