  Test-driven development (TDD) is a programming technique in which the tests
are written prior to the source code. It is proposed that TDD is one of the
most fundamental practices enabling the development of software in an agile and
iterative manner. Both the literature and practice suggest that TDD practice
yields several benefits. Essentially, it is claimed that TDD leads to an
improved software design, which has a dramatic impact on the maintainability
and further development of the system. The impact of TDD on program design has
seldom come under the researchers' focus. This paper reports the results from a
comparative case study of three software development projects where the effect
of TDD on program design was measured using object-oriented metrics. The
results show that the effect of TDD on program design was not as evident as
expected, but the test coverage was significantly superior to iterative
test-last development.
