Besouro: A framework for exploring compliance rules in automatic TDD behavior assessment

Abstract Context The improvements promoted by Test-Driven Design (TDD) have not been confirmed by quantitative assessment studies. To a great extent, the problem lies in the lack of a rigorous definition for TDD. An emerging approach has been to measure the conformance of TDD practices with the support of automated systems that embed an operational definition, which represent the specific TDD process assumed and the validation tests used to determine its presence and quantity. The empirical construction of TDD understanding and consensus building requires the ability of comparing different definitions, evaluating them with regard to practitioners’ perception, and exploring code information for improvement of automatic assessment. Objective This paper describes Besouro, a framework targeted at the development of systems for automatic TDD behavior assessment. The main rationale of Besouro’s design is the ability to compare distinct operational definitions, evaluate them with regard to users’ perception, and explore code information for further analysis and conformance assessment improvement. Method We developed an architecture with clear separation of concerns, which enables to vary: (a) the atomic events and respective metrics to be collected from developing and testing environments; (b) the organization of atomic events in streams of actions or processes; and (c) the classification and assessment components for each set of operational definitions adopted. The architecture also includes a mechanism for on-line user assessment awareness and feedback, and integrates event-related information with the respective code in a code version system. Results We illustrate the usefulness of Besouro’s features for understanding the actions and processes underlying TDD through a prototype developed to support an experiment based on user feedback. We show how it was possible to compare variations of a same operational definition by exploring users’ feedback, and use source code to improve the automatic classification of TDD practices. Conclusion Understanding the actions and processes underlying successful TDD application is key for leveraging TDD benefits. In the absence of a rigorous definition for TDD, the proposed approach aims at building consensus from experimentation and empirical validation.

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

[2]  Hossein Saiedian,et al.  A Leveled Examination of Test-Driven Development Acceptance , 2007, 29th International Conference on Software Engineering (ICSE'07).

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

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

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

[6]  David A. Umphress,et al.  Test driven development: the state of the practice , 2012, ACM-SE '12.

[7]  David S. Janzen,et al.  Test-driven learning in early programming courses , 2008, SIGCSE '08.

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

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

[10]  Roy Oberhauser,et al.  Towards Automated Test Practice Detection and Governance , 2009, 2009 First International Conference on Advances in System Testing and Validation Lifecycle.

[11]  David S. Janzen,et al.  A survey of evidence for test-driven development in academia , 2008, SGCS.

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

[13]  Philip M. Johnson,et al.  We need more coverage, stat! classroom experience with the software ICU , 2009, ESEM 2009.

[14]  Ville Isomöttönen,et al.  Test-driven development in education: experiences with critical viewpoints , 2008, SIGCSE 2008.

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

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

[17]  Shmuel Katz,et al.  The TDD-Guide Training and Guidance Tool for Test-Driven Development , 2008, XP.

[18]  Mauricio Finavaro Aniche,et al.  Most Common Mistakes in Test-Driven Development Practice: Results from an Online Survey with Developers , 2010, 2010 Third International Conference on Software Testing, Verification, and Validation Workshops.

[19]  Ricardo Pezzuol Jacobi,et al.  TDD Effects: Are We Measuring the Right Things? , 2010, XP.

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

[21]  Hakan Erdogmus,et al.  The Role of Process Measurement in Test-Driven Development , 2004, XP/Agile Universe.

[22]  Jeffrey K. Hollingsworth,et al.  Efficient instrumentation for code coverage testing , 2002, ISSTA '02.

[23]  M. Host,et al.  Experimental context classification: incentives and experience of subjects , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

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

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

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

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

[28]  Philip M. Johnson,et al.  Automated Recognition of Test-Driven Development with Zorro , 2007, Agile 2007 (AGILE 2007).

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

[30]  David S. Janzen,et al.  Implications of integrating test-driven development into CS1/CS2 curricula , 2009, SIGCSE '09.

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

[32]  Claes Wohlin,et al.  Experimentation in Software Engineering , 2012, Springer Berlin Heidelberg.

[33]  Torgeir Dingsøyr,et al.  A decade of agile methodologies: Towards explaining agile software development , 2012, J. Syst. Softw..

[34]  Lech Madeyski,et al.  Continuous Test-Driven Development - A Novel Agile Software Development Practice and Supporting Tool , 2013, ENASE.

[35]  Youngki Lee,et al.  MobiCon: a mobile context-monitoring platform , 2012, CACM.