Introducing          test driven development                to your projectBastian Feder                Confoo 2011, Montr...
Me, myself & I PHP since 2001 Testing and Quality coach @ Liip Inc. Opensource addict   PHP manual translations   FluentDO...
What is TDD?       „TDD is a software development process whichrelies on the repetition of very  short development cycles....
Development cycle             Test  Refactor          Develop
Positive feedback cycle
Benefits Higher productivity Higher confidence Adjustable complexity Modularized & clean source code
Benefits      (cont.) Less code Shorter time to market Agility Continuity
Drawbacks TDD difficult if functional tests required Test are created by developer who does the implementation High number...
Transition
What to do before?
Rate your software Software metrics   Executable line of code (eloc)   Cyclomatic complexity (ccn)   Weighted method count...
Rate your software   (cont.) Documentation  Api  Tutorials  Wiki  …
Meanwhile
Meanwhile Setup standards   Coding guidelines   Definition of done   …
Meanwhile        (cont.) Setup and prepare your environment   Test server (CI)   Development machines
Meanwhile        (cont.) Introduce & educate   Developers   Project responsibles   Management
After that
Whats next? Determine hotspots of your software   Highly used classes/methods   Missing abstractions
Whats next?            (cont.) Eliminate one by one   Refactor to testability   (static, singletons, fixed dependencies) S...
Establish
Establish Stick to tests, even when it is hard Act in increments to adapt your developement method to your needs Alter you...
Establish      (cont.) Talk about the source Keep persons involved up to date Constant learning and education
Questions
Links Rate it @ http://joind.in/2848 Pdepend website (http://pdepend.org) http://blog.bastian-feder.de Working Effectively...
PHP5.3 Powerworkshop              New features of              PHP5.3              Best Pratices using              OOP   ...
License      This set of slides and the source code included     in the download package is licensed under theCreative Co...
Upcoming SlideShare
Loading in …5
×

Introducing TDD to your project

2,325
-1

Published on

Everyone is talking about test driven development (TDD) being so cool and elaborating for both developers and persons responsible for the projects success ( like project managers, project owners, and customers ). But very few projects are using TDD to gain its relieving aspects. How does that go along? Seems many project responsibles are uncertain about the efforts and direct benefits of TDD and step back. This talk is about a transition from a usual project to TDD. Within this talk I will raise some questions to be answered before moving and show the benefits of TDD for each party of the project setup. We will find possible impediments to be faced and will see how to get rid of them.

Published in: Design
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,325
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Introducing TDD to your project

  1. 1. Introducing test driven development to your projectBastian Feder Confoo 2011, Montrealbastian.feder@liip.ch 10th March 2011
  2. 2. Me, myself & I PHP since 2001 Testing and Quality coach @ Liip Inc. Opensource addict PHP manual translations FluentDOM phpdox
  3. 3. What is TDD? „TDD is a software development process whichrelies on the repetition of very short development cycles.“ (wikipedia)
  4. 4. Development cycle Test Refactor Develop
  5. 5. Positive feedback cycle
  6. 6. Benefits Higher productivity Higher confidence Adjustable complexity Modularized & clean source code
  7. 7. Benefits (cont.) Less code Shorter time to market Agility Continuity
  8. 8. Drawbacks TDD difficult if functional tests required Test are created by developer who does the implementation High number of unit tests may lead to false sense of security Full management support required
  9. 9. Transition
  10. 10. What to do before?
  11. 11. Rate your software Software metrics Executable line of code (eloc) Cyclomatic complexity (ccn) Weighted method count (wmc) (reverse) Code rank (cr) …
  12. 12. Rate your software (cont.) Documentation Api Tutorials Wiki …
  13. 13. Meanwhile
  14. 14. Meanwhile Setup standards Coding guidelines Definition of done …
  15. 15. Meanwhile (cont.) Setup and prepare your environment Test server (CI) Development machines
  16. 16. Meanwhile (cont.) Introduce & educate Developers Project responsibles Management
  17. 17. After that
  18. 18. Whats next? Determine hotspots of your software Highly used classes/methods Missing abstractions
  19. 19. Whats next? (cont.) Eliminate one by one Refactor to testability (static, singletons, fixed dependencies) Small iterations to improve the legacy code
  20. 20. Establish
  21. 21. Establish Stick to tests, even when it is hard Act in increments to adapt your developement method to your needs Alter your way of working
  22. 22. Establish (cont.) Talk about the source Keep persons involved up to date Constant learning and education
  23. 23. Questions
  24. 24. Links Rate it @ http://joind.in/2848 Pdepend website (http://pdepend.org) http://blog.bastian-feder.de Working Effectively with Legacy Code (http://www.amazon.de/Working-Effectively-Legacy-Robert- Martin/dp/0131177052/ref=wl_it_dp_o? ie=UTF8&coliid=IA3NS7G5GYIT&colid=VCXWUWFBWD5X) OO Design Quality Metrics (http://www.objectmentor.com/publications/oodmetrc.pdf)
  25. 25. PHP5.3 Powerworkshop New features of PHP5.3 Best Pratices using OOP PHPUnit PHPDocumentor
  26. 26. License  This set of slides and the source code included in the download package is licensed under theCreative Commons Attribution-Noncommercial- Share Alike 2.0 Generic License http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en

×