Test driven development_for_php

Lean Teams Consultancy
Lean Teams ConsultancyFounder at Lean Teams Consultancy
Test-Driven Development Francis Fish, Pharmarketeer [email_address] This is distributed under the  Creative Commons Attribution-Share Alike 2.0  licence Download from:  http://www.pharmarketeer.com/tdd.html
What? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Why do TDD? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Example: Specification ,[object Object]
First test case ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Let's Fail! ,[object Object],[object Object],[object Object],[object Object],[object Object]
We Failed! ,[object Object]
Add the empty class ,[object Object],[object Object],[object Object],[object Object]
Add a test to the test class ,[object Object],[object Object]
Add the method ,[object Object],[object Object],[object Object],[object Object],[object Object]
Painful, wasn't it? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
next ... ,[object Object],[object Object],[object Object]
Designing a data object ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Data Object specification ,[object Object],[object Object],[object Object]
Data Object tests ,[object Object],[object Object],[object Object],[object Object]
data_obj.php ,[object Object],[object Object],[object Object],[object Object]
Add some methods to the class ,[object Object],[object Object]
Discussion - what have we missed? ,[object Object],[object Object],[object Object]
Test mixed case ,[object Object],[object Object]
Aside: Meaningful messages ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Discussion - what have we missed? ,[object Object],[object Object],[object Object],[object Object]
Exceptions ,[object Object],[object Object],[object Object],[object Object],[object Object]
Fix the code ,[object Object],[object Object],[object Object],[object Object],[object Object]
Recap: the test class ,[object Object]
Advanced example - mock and stub  
Mocks and Stubs ,[object Object],[object Object],[object Object],[object Object],[object Object]
We don' need no stinkin' datybasey ,[object Object],[object Object],[object Object],[object Object]
DB Class "formal" specification ,[object Object],[object Object],[object Object],[object Object],[object Object]
Discussion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Only do what the test asks ,[object Object],[object Object]
DB Class "formal" specification ,[object Object],[object Object],[object Object],[object Object],[object Object]
Get some data back ,[object Object],[object Object],[object Object],[object Object]
Change the class ,[object Object],[object Object]
Mock the database ,[object Object],[object Object],[object Object]
[object Object],[object Object]
DB Class "formal" specification ,[object Object],[object Object],[object Object],[object Object],[object Object]
Stub database calls ,[object Object],[object Object]
Change the class ,[object Object],[object Object],[object Object]
DB Class "formal" specification ,[object Object],[object Object],[object Object],[object Object],[object Object]
Check getRow() SQL generation ,[object Object],[object Object],[object Object],[object Object]
Fix the class ,[object Object],[object Object],[object Object]
Why did it fail? ,[object Object],[object Object],[object Object]
The results of more thought ,[object Object]
Where next? ,[object Object],[object Object],[object Object],[object Object]
BANG! We Failed!
1 of 45

Recommended

Beginning PHPUnitBeginning PHPUnit
Beginning PHPUnitJace Ju
2.3K views196 slides
Test in action   week 2Test in action   week 2
Test in action week 2Yi-Huan Chan
1.4K views31 slides
How To Test EverythingHow To Test Everything
How To Test Everythingnoelrap
840 views74 slides
Test in action   week 3Test in action   week 3
Test in action week 3Yi-Huan Chan
1.8K views37 slides

More Related Content

What's hot(20)

Testing persistence in PHP with DbUnitTesting persistence in PHP with DbUnit
Testing persistence in PHP with DbUnit
Peter Wilcsinszky5.5K views
Test in action – week 1Test in action – week 1
Test in action – week 1
Yi-Huan Chan1.3K views
Phpunit testingPhpunit testing
Phpunit testing
Nikunj Bhatnagar1K views
Advanced PHPUnit TestingAdvanced PHPUnit Testing
Advanced PHPUnit Testing
Mike Lively23.6K views
Modernising Legacy CodeModernising Legacy Code
Modernising Legacy Code
SamThePHPDev461 views
Unit Testng with PHP Unit - A Step by Step TrainingUnit Testng with PHP Unit - A Step by Step Training
Unit Testng with PHP Unit - A Step by Step Training
Ram Awadh Prasad, PMP1.6K views
Testing the frontendTesting the frontend
Testing the frontend
Heiko Hardt284 views
Unit testing PHP apps with PHPUnitUnit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnit
Michelangelo van Dam10.6K views
Testing in LaravelTesting in Laravel
Testing in Laravel
Ahmed Yahia193 views
Clean coding-practicesClean coding-practices
Clean coding-practices
John Ferguson Smart Limited32.8K views
Factory GirlFactory Girl
Factory Girl
Gabe Evans12K views
PHPUnit Episode iv.iii: Return of the testsPHPUnit Episode iv.iii: Return of the tests
PHPUnit Episode iv.iii: Return of the tests
Michelangelo van Dam872 views
Rspec 101Rspec 101
Rspec 101
Jason Noble3.1K views
PHPSpec BDD FrameworkPHPSpec BDD Framework
PHPSpec BDD Framework
Marcello Duarte3K views
Deploying Straight to ProductionDeploying Straight to Production
Deploying Straight to Production
Mark Baker107 views

Similar to Test driven development_for_php(20)

PHP Unit TestingPHP Unit Testing
PHP Unit Testing
Tagged Social3.6K views
Unit testing with zend framework tek11Unit testing with zend framework tek11
Unit testing with zend framework tek11
Michelangelo van Dam3.6K views
Php tests tipsPhp tests tips
Php tests tips
Damian Sromek4K views
Unit testing with zend framework PHPBeneluxUnit testing with zend framework PHPBenelux
Unit testing with zend framework PHPBenelux
Michelangelo van Dam4.6K views
Php unit the-mostunknownpartsPhp unit the-mostunknownparts
Php unit the-mostunknownparts
Bastian Feder1.6K views
Using of TDD practices for MagentoUsing of TDD practices for Magento
Using of TDD practices for Magento
Ivan Chepurnyi6.7K views
Mocking Dependencies in PHPUnitMocking Dependencies in PHPUnit
Mocking Dependencies in PHPUnit
mfrost503585 views
PHPunit and youPHPunit and you
PHPunit and you
markstory2.1K views
PHPSpec BDD for PHPPHPSpec BDD for PHP
PHPSpec BDD for PHP
Marcello Duarte8K views
PHPUnit testing to Zend_TestPHPUnit testing to Zend_Test
PHPUnit testing to Zend_Test
Michelangelo van Dam11.9K views
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
Lars Jankowfsky1K views
Writing Test Cases with PHPUnitWriting Test Cases with PHPUnit
Writing Test Cases with PHPUnit
Shouvik Chatterjee621 views
Clean tests   good testsClean tests   good tests
Clean tests good tests
Shopsys Framework277 views
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
Michelangelo van Dam3.2K views
Testing Code and Assuring QualityTesting Code and Assuring Quality
Testing Code and Assuring Quality
Kent Cowgill3.1K views

Test driven development_for_php

  • 1. Test-Driven Development Francis Fish, Pharmarketeer [email_address] This is distributed under the  Creative Commons Attribution-Share Alike 2.0  licence Download from:  http://www.pharmarketeer.com/tdd.html
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25. Advanced example - mock and stub  
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.