skip to main content
article

Realizing quality improvement through test driven development: results and experiences of four industrial teams

Published: 01 June 2008 Publication History

Abstract

Test-driven development (TDD) is a software development practice that has been used sporadically for decades. With this practice, a software engineer cycles minute-by-minute between writing failing unit tests and writing implementation code to pass those tests. Test-driven development has recently re-emerged as a critical enabling practice of agile software development methodologies. However, little empirical evidence supports or refutes the utility of this practice in an industrial context. Case studies were conducted with three development teams at Microsoft and one at IBM that have adopted TDD. The results of the case studies indicate that the pre-release defect density of the four products decreased between 40% and 90% relative to similar projects that did not use the TDD practice. Subjectively, the teams experienced a 15---35% increase in initial development time after adopting TDD.

References

[1]
IEEE (1988) IEEE Std 982.2-1988 IEEE guide for the use of IEEE standard dictionary of measures to produce reliable software. IEEE Computer Society, Washington, DC.
[2]
Basili VR, Shull F et al (1999) Building knowledge through families of experiments. IEEE Trans Softw Eng 25(4): 456-473.
[3]
Beck K (2001) Aim, fire. IEEE Softw 18: 87-89.
[4]
Beck K (2003) Test driven development--by example. Addison-Wesley, Boston.
[5]
Beck K (2005) Extreme programming explained: embrace change. Addison-Wesley, Reading, MA.
[6]
Beck K, Fowler M (2001) Planning extreme programming. Addison-Wesley, Reading, MA.
[7]
Bhat T, Nagappan N (2006) Evaluating the efficacy of test-driven development: industrial case studies. International Symposium on Empirical Software Engineering, Rio de Janeiro.
[8]
Cockburn A (2001) Agile software development. Addison-Wesley Longman, Reading, MA.
[9]
Curtis B (1989) Three problems overcome with behavioral models of the software development process (panel). In: Proceedings of the International Conference on Software Engineering, Pittsburgh, PA. ACM, Pittsburgh, PA.
[10]
Erdogmus H, Williams L (2003) The economics of software development by pair programmers. Eng Econ 48 (4): 283-319.
[11]
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.
[12]
Fenton NE, Pfleeger SL (1998) Software metrics: a rigorous and practical approach. Cole Brooks, Pacific Grove, CA.
[13]
Fenton N, Pfleeger SL et al (1994) Science and substance: a challenge to software engineers. IEEE Softw 11 (4): 86-95.
[14]
Fowler M (2000) UML Distilled. Addison Wesley, Reading, MA.
[15]
Gelperin D, Hetzel W (1987) Software quality engineering. In: Proceedings of the Fourth International Conference on Software Testing, Washington, DC, June.
[16]
George B, Williams L (2003a) An initial investigation of test-driven development in industry. In: Proceedings of the ACM Symposium on Applied Computing, Melbourne, FL.
[17]
George B, Williams L (2003b) A structured experiment of test-driven development. Inf Softw Technol (IST) 46(5): 337-342.
[18]
Harrison W (1997) N=1: an alternative for empirical software engineering research? Empir Software Eng 2 (1): 7-10.
[19]
Harrison W (2004) Propaganda and software development. IEEE Softw 21(5): 5-7.
[20]
Humphrey WS (1989) Managing the software process. Addison-Wesley, Reading, MA.
[21]
Janzen D, Saiedian H (2006) On the influence of test-driven development on software design. In: Proceedings of the Conference on Software Engineering Education and Training, Turtle Bay, HI.
[22]
Kitchenham B, Pickard L et al (1995) Case studies for method and tool evaluation. IEEE Softw 12(4): 52-62.
[23]
Larman C, Basili V (2003) A history of iterative and incremental development. IEEE Comput 36(6): 47-56.
[24]
Larus J, Ball T, Das M, Deline R, Fahndrich M, Pincus J, Rajamani S, Venkatapathy T (2004) Righting software. IEEE Softw 21(3): 92-100.
[25]
Müller MM, Hagner O (2002) Experiment about test-first programming. IEEE Proc Softw 149(5): 131-136.
[26]
Müller MM, Tichy WF (2001) Case study: extreme programming in a university environment. In: Proceedings of the 23rd International Conference on Software Engineering (ICSE2001).
[27]
Royce WW (1970) Managing the development of large software systems: concepts and techniques. IEEE WESTCON, Los Angeles, CA.
[28]
Sjøberg D, Anda B et al. (2002) Conducting realistic experiments in software engineering. In: Proceedings of the International Symposium on Empirical Software Engineering, Nara, Japan. IEEE Computer Society, Washington, DC.
[29]
Srivastava A, Thiagarajan J, Schertz C (2005) Efficient integration testing using dependency analysis. Technical report: MSR-TR-2005-94. Microsoft Research, Redmond, WA.
[30]
Williams L, Maximilien EM et al. (2003) Test-driven development as a defect-reduction practice. In: Proceedings of the IEEE International Symposium on Software Reliability Engineering, Denver, CO. IEEE Computer Society, Washington, DC.
[31]
Zelkowitz MV, Wallace DR (1998) Experimental models for validating technology. Computer 31(5): 23-31.

Cited By

View all
  • (2024)Unraveling the code: an in-depth empirical study on the impact of development practices in auxiliary functions implementationSoftware Quality Journal10.1007/s11219-024-09682-432:3(1137-1174)Online publication date: 1-Sep-2024
  • (2022)Experimental Evaluation of Test-Driven Development With Interns Working on a Real Industrial ProjectIEEE Transactions on Software Engineering10.1109/TSE.2020.302752248:5(1644-1664)Online publication date: 1-May-2022
  • (2022)Software testing and Android applications: a large-scale empirical studyEmpirical Software Engineering10.1007/s10664-021-10059-527:2Online publication date: 1-Mar-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Empirical Software Engineering
Empirical Software Engineering  Volume 13, Issue 3
June 2008
108 pages

Publisher

Kluwer Academic Publishers

United States

Publication History

Published: 01 June 2008

Author Tags

  1. Defects/faults
  2. Development time
  3. Empirical study
  4. Test driven development

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 24 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Unraveling the code: an in-depth empirical study on the impact of development practices in auxiliary functions implementationSoftware Quality Journal10.1007/s11219-024-09682-432:3(1137-1174)Online publication date: 1-Sep-2024
  • (2022)Experimental Evaluation of Test-Driven Development With Interns Working on a Real Industrial ProjectIEEE Transactions on Software Engineering10.1109/TSE.2020.302752248:5(1644-1664)Online publication date: 1-May-2022
  • (2022)Software testing and Android applications: a large-scale empirical studyEmpirical Software Engineering10.1007/s10664-021-10059-527:2Online publication date: 1-Mar-2022
  • (2021)How Do Agile Practitioners Interpret and Foster “Technical Excellence”?Proceedings of the 25th International Conference on Evaluation and Assessment in Software Engineering10.1145/3463274.3463322(10-19)Online publication date: 21-Jun-2021
  • (2021)The Relation of Test-Related Factors to Software Quality: A Case Study on Apache SystemsEmpirical Software Engineering10.1007/s10664-020-09891-y26:2Online publication date: 1-Mar-2021
  • (2019)Agile Teaching PracticesProceedings of the XXXIII Brazilian Symposium on Software Engineering10.1145/3350768.3351799(279-288)Online publication date: 23-Sep-2019
  • (2019)Test-related factors and post-release defects: an empirical studyProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3338906.3342500(1235-1237)Online publication date: 12-Aug-2019
  • (2018)System dynamics modelling of the impact of agile practice on the quality of continuous delivery projectsInnovations in Systems and Software Engineering10.1007/s11334-017-0296-z14:3(183-208)Online publication date: 1-Sep-2018
  • (2017)Unit Testing Performance in Java ProjectsProceedings of the 8th ACM/SPEC on International Conference on Performance Engineering10.1145/3030207.3030226(401-412)Online publication date: 17-Apr-2017
  • (2017)An industry experiment on the effects of test-driven development on external quality and productivityEmpirical Software Engineering10.1007/s10664-016-9490-022:6(2763-2805)Online publication date: 1-Dec-2017
  • Show More Cited By

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media