|
Fragment Name: Test
Driven Development (also known as test-first programming, test-driven design,
and test-first design) |
|
|
|
|
|
|
|
|
originating Method: XP |
|
|
|
|
Test-driven
development (TDD) is the craft of producing automated tests for production
code, and using that process to drive design and programming. For every tiny
bit of functionality in the production code, you first develop a test that
specifies and validates what the code will do. You then produce exactly as
much code as will enable that test to pass. Then you refactor (simplify and
clarify) both the production code and the test code. (S77) |
|
|
|
|
|
|
|
|
|
Contributes to |
|
|
|
Major Softgoal |
sub softgoal |
Cont.
Value from Fragment |
Study |
Situation |
|
|
|
More Accurate
Project Planning |
Improved
predictability of project |
+ |
|
|
|
|
|
|
Avoid
a long trail of bugs at the end of project |
++ |
|
|
|
|
|
|
Earlier
detection of critical and time-consuming components |
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
Improved
Technical Knowledge of Developers |
Instant
learning from your own code |
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
Improved Product
Quality |
Improved
Reliability of Product |
+ |
|
|
|
|
|
|
|
? |
|
False
Sense of Security (all of the tests that developers had written were passed,
but they neglected some of the important faults) Academic Cases |
|
|
|
|
|
- |
|
Safety
Critical systems, which need more rigorous formal tests |
|
|
|
|
Improved
Product Design |
+ |
|
|
|
|
|
|
Improved
Quality of Code |
++ |
|
|
|
|
|
Improved
Effectiveness |
Reduced
Defect Density (rate) of Code |
++ |
|
|
|
|
|
|
Earlier
Detection of Defects (thus prebenting the cost of late defect detection) |
++ |
|
|
|
|
|
Improved
Productivity (LOC/Month) |
? |
|
|
|
|
|
|
|
- |
|
|
|
|
|
|
Ease
of incorporating late requirements |
+ |
|
|
|
|
|
|
Reduction
of Test Effort |
++ |
|
Proper
use of automated tests |
|
|
|
|
Facilitate
Simple Design (reducing the need for up-front design) |
+ |
|
|
|
|
|
|
Improved
Understandability of Code |
+ |
|
|
|
|
|
|
Facilitated
Maintenance of Code |
+ |
|
|
|
|
|
|
Clean
Code without Redundancy |
+ |
|
|
|
|
|
Improved
Collaboration |
More
reliable collaboration of team-members (as they can trust eac-others' code) |
++ |
|
|
|
|
|
|
Defining
Clear topics for developers collaboration |
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
Increased
Frequency of Product Release |
Code
integration in shorter periods |
++ |
|
|
|
|
|
|
|
|
|
|
|
|
|
Job Satisfaction |
Better
sense of written code |
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
Improved
relationshnip with customer |
Having
a shipable product at short iterations |
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|