Test Driven Development
Improving .NET Application
Performance & Scalability
Brendon Birdoes
(brendon.birdoes@neudesic.com)
Agenda
Challenges we deal with today
•
Be Agile - Test Driven Development
•
Code coverage
•
Database can be Unit Tested!
•
Benefits of TDD
•
Summary
•
Q&A
•
Challenges we deal with today
Does our code do what we intended?
•
Documentation – is it updated?
•
Debug – again?
•
Change Request – What did I break?
•
Get Agile – Test Driven Development
Practices
Tools
Tools For Agility, Kent Beck
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!
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
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)
Test Driven Development
The motto \"Red, Green, Refactor.\"
Developer Unit Test
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
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
Code Coverage
Database can be Unit Tested!
User Interface
Application
Code
Unit
Tests
Data Access
Layer
Stored
Procedures
Database Unit Test
TDD in Action: Active Bug
Bug: Expired Credit Cards are being Credited
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
Unit testing is a learned skill
that can only be honed with
experience.
Mock Objects
Interfaces
Better Factored Code
Starting Test Driven Development
Creating a cultural change is hard…
….. and it can be done.
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.
0 comments
Post a comment