Effects of Developer Experience on Learning and Applying Unit Test-Driven Development

Unit test-driven development (UTDD) is a software development practice where unit test cases are specified iteratively and incrementally before production code. In the last years, researchers have conducted several studies within academia and industry on the effectiveness of this software development practice. They have investigated its utility as compared to other development techniques, focusing mainly on code quality and productivity. This quasi-experiment analyzes the influence of the developers' experience level on the ability to learn and apply UTDD. The ability to apply UTDD is measured in terms of process conformance and development time. From the research point of view, our goal is to evaluate how difficult is learning UTDD by professionals without any prior experience in this technique. From the industrial point of view, the goal is to evaluate the possibility of using this software development practice as an effective solution to take into account in real projects. Our results suggest that skilled developers are able to quickly learn the UTDD concepts and, after practicing them for a short while, become as effective in performing small programming tasks as compared to more traditional test-last development techniques. Junior programmers differ only in their ability to discover the best design, and this translates into a performance penalty since they need to revise their design choices more frequently than senior programmers.

[1]  Lech Madeyski,et al.  Test-Driven Development - An Empirical Evaluation of Agile Practice , 2009 .

[2]  Lech Madeyski,et al.  The Impact of Test-Driven Development on Software Development Productivity - An Empirical Study , 2007, EuroSPI.

[3]  Laurie A. Williams,et al.  Assessing test-driven development at IBM , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[4]  Andreas Höfer,et al.  An Empirical Study on the TDD Conformance of Novice and Expert Pair Programmers , 2009, XP.

[5]  Kent L. Beck,et al.  Aim, Fire , 2001, IEEE Softw..

[6]  J. MacQueen Some methods for classification and analysis of multivariate observations , 1967 .

[7]  Laurie A. Williams,et al.  Test-driven development as a defect-reduction practice , 2003, 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003..

[8]  David S. Janzen,et al.  Supporting introductory test-driven labs with WebIDE , 2011, 2011 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T).

[9]  Ioannis Stamelos,et al.  Investigating the extreme programming system–An empirical study , 2006, Empirical Software Engineering.

[10]  Arie van Deursen,et al.  Program Comprehension Risks and Opportunities in Extreme Programming , 2001, WCRE.

[11]  David S. Janzen,et al.  On teaching arrays with test-driven learning in WebIDE , 2012, ITiCSE '12.

[12]  Matthias M. Müller,et al.  Experiment about test-first programming , 2002, IEE Proc. Softw..

[13]  Daniel Sundmark,et al.  Factors Limiting Industrial Adoption of Test Driven Development: A Systematic Review , 2011, 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation.

[14]  John J. Marciniak,et al.  Encyclopedia of Software Engineering , 1994, Encyclopedia of Software Engineering.

[15]  Randy A. Ynchausti Integrating Unit Testing Into A Software Development Team’s Process , 2001 .

[16]  Laurie A. Williams,et al.  Realizing quality improvement through test driven development: results and experiences of four industrial teams , 2008, Empirical Software Engineering.

[17]  Boby George,et al.  An initial investigation of test driven development in industry , 2003, SAC '03.

[18]  Boby George,et al.  A structured experiment of test-driven development , 2004, Inf. Softw. Technol..

[19]  Lasse Koskela,et al.  Test Driven: Practical TDD and Acceptance TDD for Java Developers , 2007 .

[20]  Kent L. Beck,et al.  Test-driven Development - by example , 2002, The Addison-Wesley signature series.

[21]  Rory V. O'Connor,et al.  Development of a team measure for tacit knowledge in software development teams , 2009, J. Syst. Softw..

[22]  Pekka Abrahamsson,et al.  Improving Business Agility Through Technical Solutions: A Case Study on Test-Driven Development in Mobile Software Development , 2005, Business Agility and Information Technology Diffusion.

[23]  J. Rasmussen,et al.  Introducing XP into Greenfield Projects: lessons learned , 2003 .

[24]  Nachiappan Nagappan,et al.  Evaluating the efficacy of test-driven development: industrial case studies , 2006, ISESE '06.

[25]  Matthias M. Müller,et al.  An empirical study about the feelgood factor in pair programming , 2004 .

[26]  Hakan Erdogmus,et al.  Operational definition and automated inference of test-driven development with Zorro , 2010, Automated Software Engineering.

[27]  Alan R. Hevner,et al.  Controlled experimentation on adaptations of pair programming , 2007, Inf. Technol. Manag..

[28]  David S. Janzen,et al.  Test-driven development concepts, taxonomy, and future direction , 2005, Computer.

[29]  Grigori Melnik,et al.  Test-Driven Development , 2010, Encyclopedia of Software Engineering.

[30]  Jonathan Rasmusson,et al.  Introducing XP into Greenfield Projects: Lessons Learned , 2003, IEEE Softw..

[31]  Rui Xu,et al.  Survey of clustering algorithms , 2005, IEEE Transactions on Neural Networks.

[32]  Lisa Crispin,et al.  Driving Software Quality: How Test-Driven Development Impacts Software Quality , 2006, IEEE Software.

[33]  Roberto Latorre,et al.  A successful application of a Test-Driven Development strategy in the industrial environment , 2014, Empirical Software Engineering.

[34]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[35]  Per Runeson,et al.  Guidelines for conducting and reporting case study research in software engineering , 2009, Empirical Software Engineering.

[36]  Vojislav B. Misic,et al.  The Effects of Test-Driven Development on External Quality and Productivity: A Meta-Analysis , 2013, IEEE Transactions on Software Engineering.

[37]  Marco Torchiano,et al.  On the effectiveness of the test-first approach to programming , 2005, IEEE Transactions on Software Engineering.

[38]  Matthias M. Müller,et al.  The effect of experience on the test-driven development process , 2007, Empirical Software Engineering.

[39]  Arie van Deursen,et al.  Refactoring test code , 2001 .

[40]  James Miller,et al.  A prototype empirical evaluation of test driven development , 2004, 10th International Symposium on Software Metrics, 2004. Proceedings..

[41]  David S. Janzen,et al.  Does Test-Driven Development Really Improve Software Design Quality? , 2008, IEEE Software.

[42]  Dave Astels,et al.  Test Driven Development: A Practical Guide , 2003 .

[43]  Matthias M. Müller,et al.  An empirical study about the feelgood factor in pair programming , 2004, 10th International Symposium on Software Metrics, 2004. Proceedings..

[44]  Sami Kollanus,et al.  Understanding TDD in academic environment: experiences from two experiments , 2008 .

[45]  Grigori Melnik,et al.  Guest Editors' Introduction: TDD--The Art of Fearless Programming , 2007, IEEE Software.