Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
Code Dojo
Download to read offline and view in fullscreen.


Test driven development

Download to read offline

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Test driven development

  1. 1. Test Driven Development An Introduction by Lukasz Kujawa
  2. 2. About Me- Lukasz Kujawa- Lead Developer at Gloople- @lukaszkujawa
  3. 3. What is TDD?"Test-driven development (TDD) is a softwaredevelopment process that relies on the repetition of avery short development cycle: first the developer writesan (initially failing) automated test case that defines adesired improvement or new function, then produces theminimum amount of code to pass that test, and finallyrefactors the new code to acceptable standards"- Wikipedia
  4. 4. What is TDD in English?Create test before code
  5. 5. TDD Cycle
  7. 7. The Three Laws of TDD- You might not write production code until youhave written a failing unit test- You might not write more of a unit test than issufficient to fail, and not compiling is failing- You may not write more production code thenis sufficient to pass the currently failing test
  8. 8. TDD Iterations Test Production code Write minimal Unit Test Create a Class Call method of the class Create the Method Assert output of the Add logic to return method expected output
  9. 9. Unit Testing"In computer programming, unit testing is a method bywhich individual units of source code, sets of one or morecomputer program modules together with associatedcontrol data, usage procedures, and operating procedures,are tested to determine if they are fit for use."- Wikipedia
  10. 10. Unit Testing in EnglishTesting smallest testable parts of application
  11. 11. Unit Test is not a Test- Very narrow and well defined scope- No complex dependencies- Test only one application layer- Environment independent- Fast
  12. 12. TTD - Too Damn Difficult?
  13. 13. Benefits for Developer- Confidence- Code quality- Time- Refactoring- Reopening issues- Self documenting code
  14. 14. Benefits for Business
  15. 15. Benefits for Business- Shorten development cycles- Delivering more- Stable products
  16. 16. Research 1"Art of Unit Testing" by Roy Osherove Stage Team without tests Team with tests Implementation 7 days 14 days (coding) Integration 7 days 2 days Testing / Bug Fixing 12 days 8 days Overall release time 26 days 24 days Bugs in production 71 11
  17. 17. Research 2Quality improvement through test drivendevelopment: results and experiences of fourindustrial teams (2008) by NachiappanNagappan, E. Michael Maximilien, ThirumaleshBhat and Laurie Williams
  18. 18. Research 2 Metric IBM Drivers Microsoft: Microsoft: Microsoft: VS description Windows MSN Defect density W X Y Z of comparable team in organization but not using TDD Defect density 0.61W 0.38X 0.24Y 0.09Z of team using TDD Increase in time 15-20% 25-35% 15% 20-25% taken to code the feature because of TDD (%)
  19. 19. How to test?<?phpMyFramework::bootstrap();$obj = new Class_Under_Test();if( $obj->something(Foo) != 47 ) { throw new Exception(Incorrect output for Foo);}if( $obj->someting(Bar) !== false ) { throw new Exception(Incorrect output for Bar);}
  20. 20. Unit Test Frameworks- PHPUnit- SimpleTest
  21. 21. Using Framework- API- No maintenance- Integration with IDE- Code coverage report- Mocks
  22. 22. <?phpclass MyClassTest extends PHPUnit_Framework_TestCase { public static function setUpBeforeClass() { MyFramework::initAutoloader(); } protected function setUp() { $this->myClass = new MyClass(); } public function testSomething() { $this->assertEquals(1, $this->myClass->something()); } public function testSomethingElse() { $this->assertTrue( $this->myClass->somethingElse() ); $this->assertFalse $this->myClass->somethingElse( 47 ) ); }}
  23. 23. PHPUnit - Eclipse integration
  24. 24. Unit Testing - small print- Cant test directly private, protected and staticmethods- Tests only functionality- Database- Requires rigorous discipline
  26. 26. Q&A


Total views


On Slideshare


From embeds


Number of embeds