The Road To Test-Driven Development By Christopher Paulicka Software Engineering Manager Copyright Oversee.net 2008 11/6/2015
Download ReportTranscript The Road To Test-Driven Development By Christopher Paulicka Software Engineering Manager Copyright Oversee.net 2008 11/6/2015
The Road To Test-Driven Development By Christopher Paulicka Software Engineering Manager Copyright Oversee.net 2008 1 11/6/2015 Introduction Not just what Test-Driven Development is… But also how to get to Test-Driven Development Copyright Oversee.net 2008 2 11/6/2015 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 3 11/6/2015 Vocabulary Test-Driven Development – TDD Extreme Programming - XP Copyright Oversee.net 2008 4 11/6/2015 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 5 11/6/2015 The Three Participants Christopher Paulicka Oversee.net Perl Mongers Copyright Oversee.net 2008 6 11/6/2015 Christopher Paulicka Software Development – 16 years Testing – 10 years Perl – 4 years Test-Driven Development – 1 year Copyright Oversee.net 2008 7 11/6/2015 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 8 11/6/2015 Perl Mongers Perl aficionados Please ask questions at any time What’s your testing experience? Copyright Oversee.net 2008 9 11/6/2015 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 10 11/6/2015 Important to Know History of TDD in Extreme Programming History of Scrum at Oversee Copyright Oversee.net 2008 11 11/6/2015 Software Development Methodologies Hack Waterfall Agile Copyright Oversee.net 2008 12 11/6/2015 Waterfall Development Requirements Design Implement Test Maintain Copyright Oversee.net 2008 13 11/6/2015 Waterfall Costs Rigid design High change costs Requires expert designers up front Copyright Oversee.net 2008 14 11/6/2015 Examples of Agile Methodologies Extreme Programming Scrum Crystal Clear Feature Driven Development Adaptive Software Development DSDM Copyright Oversee.net 2008 15 11/6/2015 Extreme Programming Test-Driven Development Continuous Integration Pair Programming Refactoring Copyright Oversee.net 2008 16 11/6/2015 Cost of Feedback Copyright Oversee.net 2008 17 11/6/2015 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 18 11/6/2015 A Bit More About Refactoring Refactor the Code Refactor the Tests Refactor the Documentation Refactor the Design Copyright Oversee.net 2008 19 11/6/2015 Who owns testing? QA Deploy Systems Development Copyright Oversee.net 2008 20 11/6/2015 Types of Testing Requirements Tests Integration Tests System Tests Development Tests Copyright Oversee.net 2008 21 11/6/2015 Types of Development Testing Unit Tests Regression Tests Copyright Oversee.net 2008 22 11/6/2015 One Possible Road to TDD Test to Verify Test for Regression Test for Design Test-Driven Development Copyright Oversee.net 2008 23 11/6/2015 Test To Verify Problem arises Write throw away test Disposable code modifications – Logging – Dumping, etc Simple and Fast Gone forever… Copyright Oversee.net 2008 24 11/6/2015 Why Do We Do That? Habit Speed Anticipation (almost done…) Copyright Oversee.net 2008 25 11/6/2015 Test for Regression Problem arises Write reusable test that duplicates problem Keep regression test Run regressions anytime Copyright Oversee.net 2008 26 11/6/2015 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 27 11/6/2015 Test for Design Design API Write Code Write Tests Refactor Copyright Oversee.net 2008 28 11/6/2015 Development Test Processes Piece-wise Test Last Lump-sum Test Last Test First aka TDD Copyright Oversee.net 2008 29 11/6/2015 Test-Driven Development As Beck said in XP – Good Rules, lead to – Good Behavior, which give – Good Unit Tests Copyright Oversee.net 2008 30 11/6/2015 Rules Write code only when test fails Eliminate duplication afterwards Copyright Oversee.net 2008 31 11/6/2015 Behaviors Organic Design Writing own tests Rapid response Modular Design Copyright Oversee.net 2008 32 11/6/2015 Good Unit Tests Run fast Run in isolation Easy to understand Use real data Incremental step (not too large) Copyright Oversee.net 2008 33 11/6/2015 Your Road To TDD Why TDD Cost/Benefit Analysis How To Start Copyright Oversee.net 2008 34 11/6/2015 Why Test Driven Design Tests as Use Cases Tests as Documentation Tests as Design Copyright Oversee.net 2008 35 11/6/2015 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 36 11/6/2015 Cost/Benefit of TDD Industry Analysis Personal Analysis Copyright Oversee.net 2008 37 11/6/2015 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 38 11/6/2015 Benefits – Industry Analysis (cont) Programmers tests interface first, then code Shorter implementation time High Code coverage Regressions More modular code Copyright Oversee.net 2008 39 11/6/2015 Costs – Industry Analysis More code – Though higher productivity with TDD Costly test setup – UI – DB – Multithreaded Large legacy code bases Copyright Oversee.net 2008 40 11/6/2015 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 41 11/6/2015 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 42 11/6/2015 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 43 11/6/2015 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 44 11/6/2015 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 45 11/6/2015 How To Start Believe in Testing Test Framework Test Coverage Write Tests First Copyright Oversee.net 2008 46 11/6/2015 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 47 11/6/2015 Test Frameworks Perl has a lot… Test::Simple Test::More Test::Unit Copyright Oversee.net 2008 48 11/6/2015 Test Coverage Provide metrics Devel::Cover Copyright Oversee.net 2008 49 11/6/2015 Write Tests First Code review tests Pair program tests Always ask, “Where’s the test?” Help make tests easier Copyright Oversee.net 2008 50 11/6/2015 Be Aware! You are now becoming a test expert! TDD Antipatterns Don’t test just to test… Copyright Oversee.net 2008 51 11/6/2015 My Road To Test-Driven Development Hewlett-Packard EMSO Idealab – X1 – Energy Innovations Copyright Oversee.net 2008 52 11/6/2015 Lessons from Hewlett-Packard Tests are nowhere near perfect Tests can prove your point Believe in tests! Copyright Oversee.net 2008 53 11/6/2015 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 54 11/6/2015 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 55 11/6/2015 Lessons from X1 Good Test Framework Keep each other honest Copyright Oversee.net 2008 56 11/6/2015 Good Test Framework Test::Unit WWW::Mechanize DBI – No MockObjects Copyright Oversee.net 2008 57 11/6/2015 Keep each other honest Test First, not test eventually Everybody Writes Tests… …but feel free to ask for help Copyright Oversee.net 2008 58 11/6/2015 Lessons from Energy Innovations Cost of Refactoring Beware Gold Plating It’s easy to get lazy… Copyright Oversee.net 2008 59 11/6/2015 Summary Learned about TDD Learned about benefits (and costs) of TDD Learned first steps towards TDD Copyright Oversee.net 2008 60 11/6/2015 Q&A Copyright Oversee.net 2008 61 11/6/2015 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/Testdriven_development http://en.wikipedia.org/wiki/Agile_software_dev elopment http://en.wikipedia.org/wiki/Continuous_integrati on http://en.wikipedia.org/wiki/Refactoring … Copyright Oversee.net 2008 62 11/6/2015 Bibliography (cont) http://blog.james-carr.org/?p=44 http://www.ipd.uka.de/Tichy/uploads/publi kationen/136/MuellerHoefer2007.pdf http://www.acm.org/src/subpages/gf_entrie s_06/DavidJanzen_src_gf06.pdf http://utopia.csis.pace.edu/dps/2008/mcape llan/projects/TDD/TDD_Idea_Paper_V0403.doc … Copyright Oversee.net 2008 63 11/6/2015 Bibliography (cont) http://www.sciencedirect.com/science?_ob =ArticleURL&_udi=B75H1-4FC40MJ2&_user=10&_rdoc=1&_fmt=&_orig=sea rch&_sort=d&view=c&_acct=C00005022 1&_version=1&_urlVersion=0&_userid=1 0&md5=fbd92b394263506930dfafb31003 a916 http://aegis.sourceforge.net/ Copyright Oversee.net 2008 64 11/6/2015