Abstract
Unit Test-Driven Development (UTDD) and Acceptance Test-Driven Development (ATDD) are software development techniques to incrementally develop software where the test cases, unit or acceptance tests respectively, are specified before the functional code. There are little empirical evidences supporting or refuting the utility of these techniques in an industrial context. Just a few case studies can be found in literature within the industrial environment and they show conflicting results (positive, negative and neutral). In this report, we present a successful application of UTDD in combination with ATDD in a commercial project. By successful we mean that the project goals are reached without an extra economic cost. All the UTDD and ATDD implementations are based on the same basic concepts, but they may differ in specific adaptations to each project or team. In the implementation presented here, the business requirements are specified by means of executable acceptance tests, which then are the input of a development process where the functional code is written in response to specific unit tests. Our goal is to share our successful experience in a specific project from an empirical point of view. We highlight the advantages and disadvantages of adopting UTDD and ATDD and identify some conditions that facilitate success. The main conclusions we draw from this project are that ATDD contributes to clearly capture and validate the business requirements, but it requires an extensive cooperation from the customer; and that UTDD has not a significant impact neither on productivity nor on software quality. These results cannot be generalized, but they point out that under some circumstances a test-driven development strategy can be a possible option to take into account by software professionals.
Similar content being viewed by others
Notes
In Concordion the term example denotes sentences, tables or whatever that demonstrate the specified behavior for a feature. Later these examples will be linked with the functional code through JUnit test cases known as fixtures.
References
Adzic G (2011) Specification by example: how successful teams deliver the right software. Manning Publications Co
Andersson J, Bache G, Sutton P (2003) Xp with acceptance-test driven development: a rewrite project for a resource optimization system. In: Proceedings of the 4th international conference on extreme programming and agile processes in software engineering, XP’03. Springer, Berlin, Heidelberg. ISBN 3-540-40215-2, pp 180–188. http://dl.acm.org/citation.cfm?id=1763875.1763904
Astels D (2003) Test driven development: a practical guide. Prentice Hall Professional Technical Reference. ISBN 0131016490
Basili VR, Shull F, Lanubile F (1999) Building knowledge through families of experiments. IEEE Trans Softw Eng 25(4):456–473. ISSN 0098-5589
Beck K (2001) Aim, fire. IEEE Softw 18(5):87–89. ISSN 0740-7459
Beck K (2003) Test driven development: by example. Addison-Wesley Professional (2003)
Beck K, Andres C (2004) Extreme programming explained: embrace change, 2nd edn. Addison-Wesley Professional. ISBN 0321278658
Bhat T, Nagappan N (2006) Evaluating the efficacy of test-driven development: industrial case studies. In: Proceedings of the 2006 ACM/IEEE international symposium on empirical software engineering, ISESE ’06. ACM, New York. ISBN 1-59593-218-6, pp 356–363
Buschmann F, Meunier R, Rohnert H, Sommerlad P, Stal M (1996) Pattern-oriented software architecture: a system of patterns. Wiley. ISBN 0471958697
Cao L, Ramesh B (2008) Agile requirements engineering practices: an empirical study. IEEE Softw 25(1):60–67
Causevic A, Sundmark D, Punnekkat S (2011) Factors limiting industrial adoption of test driven development: a systematic review. In: 2011 IEEE fourth international conference on software testing, verification and validation (ICST). IEEE, pp 337–346
Cockburn A (2002) Agile software development. Addison-Wesley Longman Publishing Co., Inc., Boston. ISBN 0-201-69969-9
Crispin L (2006) Driving software quality: how test-driven development impacts software quality. IEEE Softw 23(6):70–71
Damm L-O, Lundberg L (2006) Results from introducing component-level test automation and test-driven development. J Syst Softw 79(7):1001–1014. ISSN 0164-1212
Dustin E, Rashka J, Paul J (1999) Automated software testing: introduction, management, and performance. Addison-Wesley Longman Publishing Co., Inc., Boston. ISBN 0-201-43287-0
Erdogmus H, Morisio M, Torchiano M (2005) On the effectiveness of the test-first approach to programming. IEEE Trans Softw Eng 31(3):226–237. ISSN 0098-5589
Erdogmus H, Melnik G, Jeffries R (2010) Test-driven development. In: Encyclopedia of software engineering, pp 1211–1229
Ficco M, Pietrantuono R, Russo S (2011) Bug localization in test-driven development. Adv Soft Eng 2011:2:1–2:18. ISSN 1687-8655. doi:10.1155/2011/492757
Flohr T, Schneider T (2006) Lessons learned from an xp experiment with students: test-first needs more teachings. In: Proceedings of the 7th international conference on product-focused software process improvement, PROFES’06. Springer, Berlin, Heidelberg. ISBN 3-540-34682-1, 978-3-540-34682-1, pp 305–318
Gärtner M (2012) ATDD by example: a practical guide to acceptance test-driven development. Addison-Wesley Professional
George B, Williams L (2003) An initial investigation of test driven development in industry. In: Proceedings of the 2003 ACM symposium on applied computing, SAC ’03. ACM, New York. ISBN 1-58113-624-2, pp 1135–1139
Gupta A, Jalote P (2007) An experimental evaluation of the effectiveness and efficiency of the test driven development. In: Proceedings of the first international symposium on empirical software engineering and measurement, ESEM ’07. IEEE Computer Society, Washington. ISBN 0-7695-2886-4, pp 285–294
Haugset B, Stalhane T (2012) Automated acceptance testing as an agile requirements engineering practice. In: 2012 45th Hawaii international conference on system science (HICSS). IEEE, pp 5289–5298
Hendricksons E (2008) Acceptance test driven development (atdd): an overview. In: Seventh software testing Australia/New Zealand (STANZ). Wellington
Höfer A, Philipp M (2009) An empirical study on the tdd conformance of novice and expert pair programmers. In: XP, pp 33–42
Janzen D, Saiedian H (2005) Test-driven development: concepts, taxonomy, and future direction. Computer 38(9):43–50. ISSN 0018-9162
Janzen DS, Saiedian H (2006) On the influence of test-driven development on software design. In: Proceedings of the 19th conference on software engineering education & training, CSEET ’06. IEEE Computer Society, Washington. ISBN 0-7695-2557-1, pp 141–148
Janzen D, Saiedian H (2008) Does test-driven development really improve software design quality? IEEE Softw 25(2):77–84. ISSN 0740-7459
Jeffries R, Melnik G (2007) Guest editors’ introduction: Tdd–the art of fearless programming. IEEE Softw 24(3):24–30. ISSN 0740-7459
Kaufmann R, Janzen D (2003) Implications of test-driven development: a pilot study. In: Companion of the 18th annual ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications, OOPSLA ’03. ACM, New York. ISBN 1-58113-751-6, pp 298–299
Koskela L (2007) Test driven: practical tdd and acceptance tdd for java developers. Manning Publications Co., Greenwich. ISBN 9781932394856
Larman C, Basili VR (2003) Iterative and incremental development: a brief history. Computer 36(6):47–56. ISSN 0018-9162
Latorre R, López F, Martínez, AE (2005) Sharing of precompiled database statements in j2ee applications. Softw Pract Exper 35(3):301–311. ISSN 0038-0644
Leffingwell D (2010) Agile software requirements: lean requirements practices for teams, programs, and the enterprise. Addison-Wesley Professional
Madeyski L (2005) Preliminary analysis of the effects of pair programming and test-driven development on the external code quality. In: Proceedings of the 2005 conference on software engineering: evolution and emerging technologies. IOS Press, Amsterdam. ISBN 1-58603-559-2, pp 113–123
Martin RC (2003) Agile software development: principles, patterns, and practices. Prentice Hall PTR, Upper Saddle River. ISBN 0135974445
Martin RC (2007) Professionalism and test-driven development. IEEE Softw 24(3):32–36. ISSN 0740-7459
Martin RC (2008) Clean code: a handbook of Agile software craftsmanship. Prentice Hall, Upper Saddle River. ISBN 978-0-13235-088-4
Maximilien EM, Williams LA (2003) Assessing test-driven development at IBM. In: Clarke LA, Dillon L, Tichy WF (eds) ICSE. IEEE Computer Society, pp 564–569
Müller MM, Hagner O (2002) Experiment about test-first programming. IEE Proc-Softw 149(5):131–136
Nagappan N, Maximilien EM, Bhat T, Williams L (2008) Realizing quality improvement through test driven development: results and experiences of four industrial teams. Empir Software Eng 13(3):289–302. ISSN 1382-3256
Newkirk JW, Vorontsov AA (2004) Test-driven development in microsoft .net. Microsoft Press, Redmond. ISBN 0735619484
Park S, Maurer F (2009) Communicating domain knowledge in executable acceptance test driven development. In: Abrahamsson P, Marchesi M, Maurer F (eds) Agile processes in software engineering and extreme programming. Lecture notes in business information processing, vol 31. Springer Berlin Heidelberg. ISBN 978-3-642-01852-7, pp 23–32
Pugh K (2010) Lean-agile acceptance test-driven development: better software through collaboration. Addison-Wesley Professional
Rafique Y, Misic VB (2013) The effects of test-driven development on external quality and productivity: a meta-analysis. Softw Eng IEEE Trans 39(6):835–856. ISSN 0098-5589. doi:10.1109/TSE.2012.28
Ricca F, Torchiano M, Di Penta M, Ceccato M, Tonella P (2009) Using acceptance tests as a support for clarifying requirements: a series of experiments. Inf Softw Technol 51(2):270–283. ISSN 0950-5849. doi:10.1016/j.infsof.2008.01.007
Sanchez JC, Williams L, Maximilien EM (2007) On the sustained use of a test-driven development practice at ibm. In: AGILE Conference (AGILE), pp 5–14
Shadish WR, Cook TD, Campbell DT (2001) Experimental and quasi-experimental designs for generalized causal inference, 2nd edn. Houghton Mifflin. ISBN 0395615569
Williams L, Maximilien EM, Vouk M (2003) Test-driven development as a defect-reduction practice. In: Proceedings of the 14th international symposium on software reliability engineering, ISSRE ’03. IEEE Computer Society, Washington. ISBN 0-7695-2007-3, pp 34–45
Acknowledgements
The author would like to thank Ramón Huerta for his comments and suggestions on the initial version of the manuscript. I am also very grateful to the insightful and helpful feedback of the anonymous reviewers which helped substantially to improve the paper.
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by: Brian Robinson
Rights and permissions
About this article
Cite this article
Latorre, R. A successful application of a Test-Driven Development strategy in the industrial environment. Empir Software Eng 19, 753–773 (2014). https://doi.org/10.1007/s10664-013-9281-9
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-013-9281-9