• DocumentCode
    783750
  • Title

    On the effectiveness of the test-first approach to programming

  • Author

    Erdogmus, Hakan ; Morisio, Maurizio ; Torchiano, Marco

  • Author_Institution
    Inst. for Inf. Technol., Nat. Res. Council of Canada, Ottawa, Ont., Canada
  • Volume
    31
  • Issue
    3
  • fYear
    2005
  • fDate
    3/1/2005 12:00:00 AM
  • Firstpage
    226
  • Lastpage
    237
  • 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.
  • Keywords
    program debugging; program testing; software quality; formal verification; general programming technique; program debugging; program testing; software engineering process; software quality; test-driven development; Computer Society; Debugging; Feedback; Functional programming; Productivity; Programming profession; Quality assurance; Software quality; Software testing; Writing; Index Terms- General programming techniques; Software Quality/SQA; coding tools and techniques; productivity; programming paradigms.; software engineering process; testing and debugging; testing strategies;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/TSE.2005.37
  • Filename
    1423994