tdd - do increasing and save
DESCRIPTION
My presentation to PHP & Symfony User Group (January 31, 2014)TRANSCRIPT
![Page 1: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/1.jpg)
TDD – do increasing and save...
![Page 2: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/2.jpg)
Who I am?
Programmer at Wargaming.net~ 5 years php experience
![Page 3: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/3.jpg)
Disclaimer
![Page 4: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/4.jpg)
TDD - ?...
![Page 5: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/5.jpg)
TDD this is...
![Page 6: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/6.jpg)
...or this?! Do you know it?
![Page 7: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/7.jpg)
Expectations...
![Page 8: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/8.jpg)
Reality...
![Page 9: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/9.jpg)
Why not?...
TDD? And who will
pay for it?
TDD does not work
everywhere
Good thing! But
we release
very soon
![Page 10: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/10.jpg)
Stress-free!
0 1 2 3 4 5 6 70
2
4
6
8
10
12
Plain
TDD
![Page 11: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/11.jpg)
Why is that?...
- Start immediately- Test First- SOLID/Patterns- Less coupled systems- Stress control. Results are obvious ...
![Page 12: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/12.jpg)
Test First...
![Page 13: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/13.jpg)
SOLID
Single Responsibility
Open/Closed
Liskov Substitution
Interface Segregation
Dependency Inversion
![Page 14: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/14.jpg)
Single Responsibility: Test
Data - What does know? - Relations between objects?Behavior - What problems resolve? - Services?
![Page 15: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/15.jpg)
Open/Closed: Test
- No need to change working code
![Page 16: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/16.jpg)
Liskov Substitution: Test
- Tests can use to check the heirs instead ancestors- In case of violation of unit tests are complicated
![Page 17: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/17.jpg)
Interface Segregation: Test
- Tests help to split the interfaces- Mocks dictates API
![Page 18: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/18.jpg)
Dependency Inversion:TDD
- Service Locator or Dependency Injection?- Mocks in TDD create abstractions- Setting tests easier with Dependency Injection
![Page 19: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/19.jpg)
TDD +/-- Confidence in the code to run- No code to Thrash- New solutions approves more quickly- New lever of your skills
- Slow refactoring- Tests are difficult - Doesn't work everywhere- Tests refactoring- TDD for bad smells code
![Page 20: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/20.jpg)
FAQ...
- How many tests must be written?- TDD for existing projects- Must read
![Page 21: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/21.jpg)
Books...
- Kent Beck "Test Driven Development By Example"
- Martin Fowler "Refactoring: Improving the Design of Existing Code"
- Joshua Kerievsky "Refactoring To Patterns"
- Michael Feathers "Working Effectively with Legacy Code"
![Page 22: TDD - do increasing and save](https://reader036.vdocuments.us/reader036/viewer/2022081400/554f47b2b4c905423f8b4a4e/html5/thumbnails/22.jpg)
Questions?