Presentation is loading. Please wait.

Presentation is loading. Please wait.

The Road To Test-Driven Development

Similar presentations


Presentation on theme: "The Road To Test-Driven Development"— Presentation transcript:

1 The Road To Test-Driven Development
By Christopher Paulicka Software Engineering Manager Copyright Oversee.net 2008 11/7/2018

2 Introduction Not just what Test-Driven Development is…
But also how to get to Test-Driven Development Copyright Oversee.net 2008 11/7/2018

3 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 11/7/2018

4 Vocabulary Test-Driven Development – TDD Extreme Programming - XP
Copyright Oversee.net 2008 11/7/2018

5 Thanks Oversee.net for the nice space
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 11/7/2018

6 The Three Participants
Christopher Paulicka Oversee.net Perl Mongers Copyright Oversee.net 2008 11/7/2018

7 Christopher Paulicka Software Development – 16 years
Testing – 10 years Perl – 4 years Test-Driven Development – 1 year Copyright Oversee.net 2008 11/7/2018

8 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 11/7/2018

9 Perl Mongers Perl aficionados Please ask questions at any time
What’s your testing experience? Copyright Oversee.net 2008 11/7/2018

10 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 11/7/2018

11 Important to Know History of TDD in Extreme Programming
History of Scrum at Oversee Copyright Oversee.net 2008 11/7/2018

12 Software Development Methodologies
Hack Waterfall Agile Copyright Oversee.net 2008 11/7/2018

13 Waterfall Development
Requirements Design Implement Test Maintain Copyright Oversee.net 2008 11/7/2018

14 Waterfall Costs Rigid design High change costs
Requires expert designers up front Copyright Oversee.net 2008 11/7/2018

15 Examples of Agile Methodologies
Extreme Programming Scrum Crystal Clear Feature Driven Development Adaptive Software Development DSDM Copyright Oversee.net 2008 11/7/2018

16 Extreme Programming Test-Driven Development Continuous Integration
Pair Programming Refactoring Copyright Oversee.net 2008 11/7/2018

17 Cost of Feedback Copyright Oversee.net 2008 11/7/2018

18 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 11/7/2018

19 A Bit More About Refactoring
Refactor the Code Refactor the Tests Refactor the Documentation Refactor the Design Copyright Oversee.net 2008 11/7/2018

20 Who owns testing? QA Deploy Systems Development
Copyright Oversee.net 2008 11/7/2018

21 Types of Testing Requirements Tests Integration Tests System Tests
Development Tests Copyright Oversee.net 2008 11/7/2018

22 Types of Development Testing
Unit Tests Regression Tests Copyright Oversee.net 2008 11/7/2018

23 One Possible Road to TDD
Test to Verify Test for Regression Test for Design Test-Driven Development Copyright Oversee.net 2008 11/7/2018

24 Test To Verify Problem arises Write throw away test
Disposable code modifications Logging Dumping, etc Simple and Fast Gone forever… Copyright Oversee.net 2008 11/7/2018

25 Why Do We Do That? Habit Speed Anticipation (almost done…)
Copyright Oversee.net 2008 11/7/2018

26 Test for Regression Problem arises
Write reusable test that duplicates problem Keep regression test Run regressions anytime Copyright Oversee.net 2008 11/7/2018

27 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 11/7/2018

28 Test for Design Design API Write Code Write Tests Refactor
Copyright Oversee.net 2008 11/7/2018

29 Development Test Processes
Piece-wise Test Last Lump-sum Test Last Test First aka TDD Copyright Oversee.net 2008 11/7/2018

30 Test-Driven Development
As Beck said in XP Good Rules, lead to Good Behavior, which give Good Unit Tests Copyright Oversee.net 2008 11/7/2018

31 Rules Write code only when test fails Eliminate duplication afterwards
Copyright Oversee.net 2008 11/7/2018

32 Behaviors Organic Design Writing own tests Rapid response
Modular Design Copyright Oversee.net 2008 11/7/2018

33 Good Unit Tests Run fast Run in isolation Easy to understand
Use real data Incremental step (not too large) Copyright Oversee.net 2008 11/7/2018

34 Your Road To TDD Why TDD Cost/Benefit Analysis How To Start
Copyright Oversee.net 2008 11/7/2018

35 Why Test Driven Design Tests as Use Cases Tests as Documentation
Tests as Design Copyright Oversee.net 2008 11/7/2018

36 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 11/7/2018

37 Cost/Benefit of TDD Industry Analysis Personal Analysis
Copyright Oversee.net 2008 11/7/2018

38 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 11/7/2018

39 Benefits – Industry Analysis (cont)
Programmers tests interface first, then code Shorter implementation time High Code coverage Regressions More modular code Copyright Oversee.net 2008 11/7/2018

40 Costs – Industry Analysis
More code Though higher productivity with TDD Costly test setup UI DB Multithreaded Large legacy code bases Copyright Oversee.net 2008 11/7/2018

41 Metrics – Industry Analysis
TDD code passed % more external test cases than control group code TDD code had 10 – 50% less time spent debugging code TDD had from % decrease in productivity (in lines of non-test code) Copyright Oversee.net 2008 11/7/2018

42 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 11/7/2018

43 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 11/7/2018

44 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 11/7/2018

45 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 11/7/2018

46 How To Start Believe in Testing Test Framework Test Coverage
Write Tests First Copyright Oversee.net 2008 11/7/2018

47 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 11/7/2018

48 Test Frameworks Perl has a lot… Test::Simple Test::More Test::Unit
Copyright Oversee.net 2008 11/7/2018

49 Test Coverage Provide metrics Devel::Cover Copyright Oversee.net 2008
11/7/2018

50 Write Tests First Code review tests Pair program tests
Always ask, “Where’s the test?” Help make tests easier Copyright Oversee.net 2008 11/7/2018

51 Be Aware! You are now becoming a test expert! TDD Antipatterns
Don’t test just to test… Copyright Oversee.net 2008 11/7/2018

52 My Road To Test-Driven Development
Hewlett-Packard EMSO Idealab X1 Energy Innovations Copyright Oversee.net 2008 11/7/2018

53 Lessons from Hewlett-Packard
Tests are nowhere near perfect Tests can prove your point Believe in tests! Copyright Oversee.net 2008 11/7/2018

54 Tests are nowhere near perfect
lines of code Hundreds of feature tests working Applications run for 3 days I knew it was broken Copyright Oversee.net 2008 11/7/2018

55 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 11/7/2018

56 Lessons from X1 Good Test Framework Keep each other honest
Copyright Oversee.net 2008 11/7/2018

57 Good Test Framework Test::Unit WWW::Mechanize DBI No MockObjects
Copyright Oversee.net 2008 11/7/2018

58 Keep each other honest Test First, not test eventually
Everybody Writes Tests… …but feel free to ask for help Copyright Oversee.net 2008 11/7/2018

59 Lessons from Energy Innovations
Cost of Refactoring Beware Gold Plating It’s easy to get lazy… Copyright Oversee.net 2008 11/7/2018

60 Summary Learned about TDD Learned about benefits (and costs) of TDD
Learned first steps towards TDD Copyright Oversee.net 2008 11/7/2018

61 Q&A Copyright Oversee.net 2008 11/7/2018

62 Bibliography I would highly recommend “The Object Primer” by Scott W. Ambler, now in it’s third edition. Copyright Oversee.net 2008 11/7/2018

63 Bibliography (cont) http://blog.james-carr.org/?p=44
Copyright Oversee.net 2008 11/7/2018

64 Bibliography (cont) Copyright Oversee.net 2008 11/7/2018


Download ppt "The Road To Test-Driven Development"

Similar presentations


Ads by Google