More Related Content
Similar to Workshop on Test Driven Development (TDD) Noida
Similar to Workshop on Test Driven Development (TDD) Noida (20)
More from Saket Bansal (15)
Workshop on Test Driven Development (TDD) Noida
- 2. © 2013 iZenBridge | CONFIDENTIAL
Introductions!
1.Your Name
2.Current company & Role
3.Experience with Agile and TDD
- 4. © 2013 iZenBridge | CONFIDENTIAL
Traditional Design – Code – Test
Design Code Test
Test Code
Design /
Refactor
- 5. © 2013 iZenBridge | CONFIDENTIAL
Why Not Testing at the End?
• Hard to improve quality of
existing code –
Complacency and Recency
• Feedback opportunity is
lost
• The future state of the
project is difficult to gauge
• Testing is more likely to be
cut
- 6. © 2013 iZenBridge | CONFIDENTIAL
Stress and Testing
Project
Stress
Less
Testing
Just get it done, will ya?
- 7. © 2013 iZenBridge | CONFIDENTIAL
Test Automation Pyramid
UI
Service
Unit
UI
Service
Unit
AgileTraditional
- 9. © 2013 iZenBridge | CONFIDENTIAL
ATDD vs TDD
Source: Test Driven: Practical TDD and Acceptance TDD for Java Developers
- 10. © 2013 iZenBridge | CONFIDENTIAL
Why TDD?
The Benefits of TDD:
• Limits WIP – a key Lean principle
• Ensures testing at lower granularity level – the smallest
testable unit of code
• Ensures no untested code goes to production
• Helps high degree of conformity between code and the
real business requirements
• Helps keep unused code out of the system (unwritten)
• Makes codebase more maintainable – via regression
testing
- 11. © 2013 iZenBridge | CONFIDENTIAL
The TDD Cycle
Red
Green
Clean
Test
Code
Refactor
- 12. © 2013 iZenBridge | CONFIDENTIAL
Three Laws/ Rules of TDD
You will not write any production
code until you have written a failing
unit test.
First Law
- 13. © 2013 iZenBridge | CONFIDENTIAL
Three laws of TDD
You will not write more of a unit
test than is sufficient to fail, and
not compiling is failing
Second Law
- 14. © 2013 iZenBridge | CONFIDENTIAL
Three laws of TDD
You will not write more production
code that is sufficient to pass the
currently failing test.
Third Law
- 15. © 2013 iZenBridge | CONFIDENTIAL
Misconceptions About TDD
• Writing code first, then tests is
same as TDD
• TDD isn’t useful for designing
architecture
• Takes too much time
• Too complex to learn and
implement
• TDD is only good for small
projects
- 18. © 2013 iZenBridge | CONFIDENTIAL
String Calculator – TDD Exercise
Define Scope:
• Supported operators?
• Acceptable characters?
• Whitespace?
• Max length of expression – number of operations?
• Max length of each number?
• Fractions?
• Parenthesis?
- 19. © 2013 iZenBridge | CONFIDENTIAL
String Calculator (continued)
Time to start Failing!
• Reminders:
• Test, Code, Refactor – REPEAT until Done!
• Add feature layers one by one, in small manageable
increments
• Setup
• Eclipse for Java Development
• JDK
• Team formation
- 20. © 2013 iZenBridge | CONFIDENTIAL
String Calculator (continued)
1. Two literal addition
A + B
- 21. © 2013 iZenBridge | CONFIDENTIAL
String Calculator (continued)
2. Multiple literal addition
A + B + C
A + B + C + D
- 22. © 2013 iZenBridge | CONFIDENTIAL
String Calculator (continued)
3. Combination of addition and
subtraction
A + B – C
or
A – B + C
- 23. © 2013 iZenBridge | CONFIDENTIAL
String Calculator (continued)
4. Simple multiplication
A * B
A * B * C
- 24. © 2013 iZenBridge | CONFIDENTIAL
String Calculator (continued)
5. Simple division
A / B
A / B / C
- 25. © 2013 iZenBridge | CONFIDENTIAL
String Calculator (continued)
6. Combination of multiplication
and division
A * B / C
A / B * C
Does order matter?
- 26. © 2013 iZenBridge | CONFIDENTIAL
String Calculator (continued)
7. Combination of all four
A + B – C * D / E
Order does matter here!
- 27. © 2013 iZenBridge | CONFIDENTIAL
String Calculator (continued)
8. Invalid expressions
• Banned chars - alpha, parenthesis, special chars
• Space between a number
• Two operators clubbed together
• First number negative
• Invalid decimal number
- 28. © 2013 iZenBridge | CONFIDENTIAL
What Next?
Certified Scrum Developer (CSD)
A 3-day course certified by Scrum Alliance that focuses on
specialized Agile engineering skills:
Test Driven Development (TDD)
ATDD, BDD – Selenium/ Cucumber
Continuous Integration – Jenkins
Agile Design and Architecture
Refactoring
Collaboration
- 29. © 2013 iZenBridge | CONFIDENTIAL
References
Test Driven Development: By Example - Kent Beck
Succeeding with Agile - Mike Cohn
Test Driven: Practical TDD and Acceptance TDD for Java
Developers - Lasse Koskela
- 30. © 2013 iZenBridge | CONFIDENTIAL
Stay Connected
YouTube
www.youtube.com/izenbridge
LinkedIn Group
PMI-ACP: Agile Certification Made Easy
Saket.Bansal@iZenBridge.com
SunjayKumar@gmail.com
www.iZenBridge.com
forum.iZenBridge.com