On the Effectiveness of Test-first Approach to Programming

  1. (PDF, 656 KB)
AuthorSearch for:
ConferenceProceedings of the IEEE Transactions on Software Engineering, January 2005.
Subjectgeneral programming techniques; coding tools and techniques; testing and debugging; testing strategies; productivity; Software Quality/SQA; software engineering process; programming paradigms; outils et techniques de codage; tests et débogage; stratégies de test; productivité; qualité logicielle/AQL; processus de génie logiciel; paradigmes de programmation
AbstractTest-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.
Publication date
AffiliationNRC Institute for Information Technology; National Research Council Canada
Peer reviewedNo
NRC number47445
NPARC number5763742
Export citationExport as RIS
Report a correctionReport a correction
Record identifier0420df64-f474-4072-8df6-c7b87c0de643
Record created2009-03-29
Record modified2016-05-09
Bookmark and share
  • Share this page with Facebook (Opens in a new window)
  • Share this page with Twitter (Opens in a new window)
  • Share this page with Google+ (Opens in a new window)
  • Share this page with Delicious (Opens in a new window)
Date modified: