2. Agenda
Challenges we deal with today
•
Be Agile - Test Driven Development
•
Code coverage
•
Database can be Unit Tested!
•
Benefits of TDD
•
Summary
•
Q&A
•
3. Challenges we deal with today
Does our code do what we intended?
•
Documentation – is it updated?
•
Debug – again?
•
Change Request – What did I break?
•
4. Get Agile – Test Driven Development
Practices
Tools
Tools For Agility, Kent Beck
5. Unit Test Defined
• Code programmers write to exercise each
method in the design that run quickly
and help localize errors
– Isolates and tests a single operation
– Run in any environment
– Less time debugging
– Side affect is documentation!
6. Unit Tests Defined
• Tests are NOT unit tests when they…
– Talk to a database
– Communicate across the network
– Touch the file system
– Require human intervention (such as
modifying a *.config file, starting a console
app, etc.) to run
7. What is Test Driven Development?
• Despite the name, TDD focuses on
“Design” first, “Test” second
• Basic tenants are:
– Write a failing automated test before you write
any code
• Focus on interface and use case or problem
• Tests get written
• Just enough code to pass the test
– Remove duplication (refactor)
10. Code Coverage Defined
• Also known as “test coverage”
• It measures how thoroughly the
automated tests exercise the production
code, its source code
statements, branches, and expressions
11. What degree of code coverage
should you aim for?
• Answer: It depends
• Average code coverage is around 85%
• Biggest blocker to attain 100% - existing
code, auto generated code
• Aim for 100% while learning – you’ll
understand why 85% is nicer
19. TDD - Application Lifecycle
UAT
Testing & Bug Fixing
Development
Testing &
UAT
Development
Bug Fixing
Development and testing/bug fixing
take about the same amount of time
Development takes more time than
testing, and testing time is reduced
Overall lifecycle is shortened
20. Unit testing is a learned skill
that can only be honed with
experience.
Mock Objects
Interfaces
Better Factored Code
21. Starting Test Driven Development
Creating a cultural change is hard…
….. and it can be done.
22. Summary
• Development becomes more challenging.
• TDD is a great tool to overcome these
challenges
• Database can be Unit Tested!
• Development is Faster using TDD.
• VSTS is a great tool for UT and TDD.