A Leveled Examination of Test-Driven Development Acceptance
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Test-driven learning in early programming courses
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Empirical Software Engineering
Balancing Agility and Formalism in Software Engineering
Impact of test-driven development on productivity, code and tests: A controlled experiment
Information and Software Technology
Empirical Software Engineering
Critical issues on test-driven development
PROFES'11 Proceedings of the 12th international conference on Product-focused software process improvement
POPT: a problem-oriented programming and testing approach for novice students
Proceedings of the 2013 International Conference on Software Engineering
Considering rigor and relevance when evaluating test driven development: A systematic review
Information and Software Technology
Hi-index | 0.00 |
Test-driven development (TDD) is an agile software development strategy that addresses both design and testing. This paper describes a controlled experiment that examines the effects of TDD on internal software design quality. The experiment was conducted with undergraduate students in a software engineering course. Students in three groups completed semester-long programming projects using either an iterative Test-First (TDD), iterative Test-Last, or linear Test-Last approach. Results from this study indicate that TDD can be an effective software design approach improving both code-centric aspects such as object decomposition, test coverage, and external quality, and developer-centric aspects including productivity and confidence. In addition, iterative development approaches that include automated testing demonstrated benefits over a more traditional linear approach with manual tests. This study demonstrates the viability of teaching TDD with minimal effort in the context of a relatively traditional development approach. Potential dangers with TDD are identified regarding programmer motivation and discipline. Pedagogical implications and instructional techniques which may foster TDD adoption will also be referenced.