On the Effectiveness of the Test-First Approach to Programming, by Hakan Erdogmus, Maurizio Morisio, and Marco Torchiano.
Despite the name it covers TDD:
Abstract:
Test-Driven Development (TDD) is based
on formalizing a piece of
functionality as a test, implementing
the functionality such that the test
passes, and iterating the process.
This paper describes a controlled
experiment for evaluating an important
aspect of TDD: In TDD, programmers
write functional tests before the
corresponding implementation code. The
experiment was conducted with
undergraduate students. While the
experiment group applied a test-first
strategy, the control group applied a
more conventional development
technique, writing tests after the
implementation. Both groups followed
an incremental process, adding new
features one at a time and regression
testing them.
We found that test-first
students on average wrote more tests
and, in turn, students who wrote more
tests tended to be more productive. We
also observed that the minimum quality
increased linearly with the number of
programmer tests, independent of the
development strategy employed.