Improving Development Practices through Experimentation: An Industrial TDD Case

Test-Driven Development (TDD), an agile development approach that enforces the construction of software systems by means of successive micro-iterative testing coding cycles, has been widely claimed to increase external software quality. In view of this, some managers at Paf-a Nordic gaming entertainment company—were interested in knowing how would TDD perform at their premises. Eventually, if TDD outperformed their traditional way of coding (i.e., YW, short for Your Way), it would be possible to switch to TDD considering the empirical evidence achieved at the company level. We conduct an experiment at Paf to evaluate the performance of TDD, YW and the reverse approach of TDD (i.e., ITL, short for Iterative-Test Last) on external quality. TDD outperforms YW and ITL at Paf. Despite the encouraging results, we cannot recommend Paf to immediately adopt TDD as the difference in performance between YW and TDD is small. However, as TDD looks promising at Paf, we suggest to move some developers to TDD and to run a future experiment to compare the performance of TDD and YW. TDD slightly outperforms ITL in controlled experiments for TDD novices. However, more industrial experiments are still needed to evaluate the performance of TDD in real-life contexts.

[1]  Claes Wohlin,et al.  Empirical software engineering experts on the use of students and professionals in experiments , 2017, Empirical Software Engineering.

[2]  Jürgen Münch,et al.  Effects of Test-Driven Development: A Comparative Analysis of Empirical Studies , 2014, SWQD.

[3]  S.M. Rahman Applying the TBC method in introductory programming courses , 2007, 2007 37th Annual Frontiers In Education Conference - Global Engineering: Knowledge Without Borders, Opportunities Without Passports.

[4]  Kevin McDaid,et al.  Test-driven development: can it work for spreadsheets? , 2008, WEUSE '08.

[5]  T. Cook,et al.  Quasi-experimentation: Design & analysis issues for field settings , 1979 .

[6]  Maria Cláudia Figueiredo Pereira Emer,et al.  The effects of test driven development on internal quality, external quality and productivity: A systematic review , 2016, Inf. Softw. Technol..

[7]  T. Vidmar,et al.  Towards empirical evaluation of test-driven development in a university environment , 2003, The IEEE Region 8 EUROCON 2003. Computer as a Tool..

[8]  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.

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

[10]  A. Jefferson Offutt,et al.  Why don't we publish more TDD research papers? , 2018, Softw. Test. Verification Reliab..

[11]  Andy P. Field,et al.  Discovering Statistics Using Ibm Spss Statistics , 2017 .

[12]  C D Naylor,et al.  Meta-analysis of controlled clinical trials. , 1989, The Journal of rheumatology.

[13]  Tore Dybå,et al.  Evidence-based software engineering , 2004, Proceedings. 26th International Conference on Software Engineering.

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

[15]  Natalia Juristo Juzgado,et al.  An industry experiment on the effects of test-driven development on external quality and productivity , 2017, Empirical Software Engineering.

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

[17]  D. Bates,et al.  Fitting Linear Mixed-Effects Models Using lme4 , 2014, 1406.5823.

[18]  Jay F. Nunamaker,et al.  Comparing the Defect Reduction Benefits of Code Inspection and Test-Driven Development , 2012, IEEE Transactions on Software Engineering.

[19]  Lech Madeyski Preliminary Analysis of the Effects of Pair Programming and Test-Driven Development on the External Code Quality , 2005, Software Engineering: Evolution and Emerging Technologies.

[20]  Sami Kollanus,et al.  Test-Driven Development - Still a Promising Approach? , 2010, 2010 Seventh International Conference on the Quality of Information and Communications Technology.

[21]  Stephen H. Edwards,et al.  Using software testing to move students from trial-and-error to reflection-in-action , 2004, SIGCSE '04.

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

[23]  Tore Dybå,et al.  Challenges and Recommendations When Increasing the Realism of Controlled Software Engineering Experiments , 2003, ESERNET.

[24]  Helen Brown,et al.  Applied Mixed Models in Medicine , 2000, Technometrics.

[25]  Kai Petersen,et al.  Considering rigor and relevance when evaluating test driven development: A systematic review , 2014, Inf. Softw. Technol..

[26]  Brian A. Nosek,et al.  Power failure: why small sample size undermines the reliability of neuroscience , 2013, Nature Reviews Neuroscience.

[27]  Mojca Ciglaric,et al.  Impact of test-driven development on productivity, code and tests: A controlled experiment , 2011, Inf. Softw. Technol..

[28]  Tore Dybå,et al.  Evidence-Based Software Engineering for Practitioners , 2005, IEEE Softw..

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

[30]  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.

[31]  Forrest Shull,et al.  What Do We Know about Test-Driven Development? , 2010, IEEE Software.

[32]  Atul Gupta,et al.  An Experimental Evaluation of the Effectiveness and Efficiency of the Test Driven Development , 2007, First International Symposium on Empirical Software Engineering and Measurement (ESEM 2007).

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

[34]  Tore Dybå,et al.  Conducting realistic experiments in software engineering , 2002, Proceedings International Symposium on Empirical Software Engineering.