Continuous Test-Driven Development - A Novel Agile Software Development Practice and Supporting Tool

Lech Madeyski, Marcin Kawalerowicz

Abstract

Continuous testing is a technique in modern software development in which the source code is constantly unit tested in the background and there is no need for the developer to perform the tests manually. We propose an extension to this technique that combines it with well-established software engineering practice called Test-Driven Development (TDD). In our practice, that we called Continuous Test-Driven Development (CTDD), software developer writes the tests first and is not forced to perform them manually. We hope to reduce the time waste resulting from manual test execution in highly test driven development scenario. In this article we describe the CTDD practice and the tool that we intend to use to support and evaluate the CTDD practice in a real world software development project.

References

  1. Astels, D. (2003). Test Driven development: A Practical Guide. Prentice Hall Professional Technical Reference.
  2. Basili, V. R., Caldiera, G., and Rombach, H. D. (1994). The goal question metric approach. In Encyclopedia of Software Engineering. Wiley.
  3. Beck, K. (1999). Extreme Programming Explained: Embrace Change. Addison-Wesley, Boston, MA, USA.
  4. Beck, K. (2002). Test Driven Development: By Example. Addison-Wesley, Boston, MA, USA.
  5. Beck, K. and Andres, C. (2004). Extreme Programming Explained: Embrace Change. Addison-Wesley, Boston, MA, USA, 2nd edition.
  6. Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., Grenning, J., Highsmith, J., Hunt, A., Jeffries, R., Kern, J., Marick, B., Martin, R. C., Mellor, S., Schwaber, K., Sutherland, J., and Thomas, D. (2001). Manifesto for agile software development. http://agilemanifesto.org/.
  7. Bhat, T. and Nagappan, N. (2006). Evaluating the efficacy of test-driven development: industrial case studies. In ISESE'06: ACM/IEEE International Symposium on Empirical Software Engineering, pages 356- 363, New York, NY, USA. ACM Press.
  8. Canfora, G., Cimitile, A., Garcia, F., Piattini, M., and Visaggio, C. A. (2006). Evaluating advantages of test driven development: a controlled experiment with professionals. In ISESE'06: ACM/IEEE International Symposium on Empirical Software Engineering, pages 364-371, New York, NY, USA. ACM Press.
  9. Davis, F. D. (1989). Perceived usefulness, perceived ease of use, and user acceptance of information technology. MIS Quarterly, 13(3):319-340.
  10. Duvall, P., Matyas, S. M., and Glover, A. (2007). Continuous Integration: Improving Software Quality and Reducing Risk (The Addison-Wesley Signature Series). Addison-Wesley Professional.
  11. Edwards, S. H. (2003a). Rethinking computer science education from a test-first perspective. In OOPSLA'03: Companion of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 148-155, New York, NY, USA. ACM.
  12. Edwards, S. H. (2003b). Teaching software testing: automatic grading meets test-first coding. In OOPSLA'03: Companion of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 318-319, New York, NY, USA. ACM.
  13. Endres, A. and Rombach, D. (2003). A Handbook of Software and Systems Engineering. Addison-Wesley.
  14. Erdogmus, H., Morisio, M., and Torchiano, M. (2005). On the Effectiveness of the Test-First Approach to Programming. IEEE Transactions on Software Engineering, 31(3):226-237.
  15. Flohr, T. and Schneider, T. (2006). Lessons Learned from an XP Experiment with Students: Test-First Need More Teachings. In Münch, J. and Vierimaa, M., editors, PROFES'06: Product Focused Software Process Improvement, volume 4034 of Lecture Notes in Computer Science, pages 305-318, Berlin, Heidelberg. Springer.
  16. Freeman, S. and Pryce, N. (2009). Growing ObjectOriented Software, Guided by Tests. Addison-Wesley Professional, 1st edition.
  17. Gamma, E. and Beck, K. (2003). Contributing to Eclipse: Principles, Patterns, and Plugins. Addison Wesley Longman Publishing Co., Inc., Redwood City, CA, USA.
  18. Gamma, E. and Beck, K. (2013). http://www.junit.org/ Accessed Jan 2013.
  19. Gupta, A. and Jalote, P. (2007). An experimental evaluation of the effectiveness and efficiency of the test driven development. In ESEM'07: International Symposium on Empirical Software Engineering and Measurement, pages 285-294, Washington, DC, USA. IEEE Computer Society.
  20. Hamill, P. (2004). Unit test frameworks. O'Reilly.
  21. Huang, L. and Holcombe, M. (2009). Empirical investigation towards the effectiveness of Test First programming. Information and Software Technology, 51(1):182-194.
  22. Janzen, D. and Saiedian, H. (March-April 2008). Does Test-Driven Development Really Improve Software Design Quality? IEEE Software, 25(2):77-84.
  23. Koskela, L. (2007). Test driven: practical tdd and acceptance tdd for java developers. Manning Publications Co., Greenwich, CT, USA.
  24. Kou, H., Johnson, P. M., and Erdogmus, H. (2010). Operational definition and automated inference of testdriven development with zorro. Automated Software Engineering, 17(1):57-85.
  25. Madeyski, L. (2005). Preliminary Analysis of the Effects of Pair Programming and Test-Driven Development on the External Code Quality. In ZieliÁski, K. and Szmuc, T., editors, Software Engineering: Evolution and Emerging Technologies, volume 130 of Frontiers in Artificial Intelligence and Applications, pages 113- 123. IOS Press.
  26. Madeyski, L. (2006). The Impact of Pair Programming and Test-Driven Development on Package Dependencies in Object-Oriented Design - An Experiment. Lecture Notes in Computer Science, 4034:278-289.
  27. Madeyski, L. (2010a). Test-Driven Development - An Empirical Evaluation of Agile Practice. Springer.
  28. Madeyski, L. (2010b). The impact of test-first programming on branch coverage and mutation score indicator of unit tests: An experiment. Information and Software Technology, 52(2):169-184.
  29. Madeyski, L. and Szala, L. (2007). The impact of testdriven development on software development productivity - an empirical study. In Abrahamsson, P., Baddoo, N., Margaria, T., and Messnarz, R., editors, Software Process Improvement, volume 4764 of Lecture Notes in Computer Science, pages 200-211. Springer Berlin Heidelberg.
  30. Maximilien, E. M. and Williams, L. (2003). Assessing test-driven development at IBM. In Proceedings of the 25th International Conference on Software Engineering, ICSE 7803, pages 564-569, Washington, DC, USA. IEEE Computer Society.
  31. Melnik, G. and Maurer, F. (2005). A cross-program investigation of students' perceptions of agile methods. In ICSE'05: International Conference on Software Engineering, pages 481-488.
  32. Müller, M. M. and Hagner, O. (2002). Experiment about test-first programming. IEE Procedings-Software, 149(5):131-136.
  33. Müller, M. M. and Höfer, A. (2007). The effect of experience on the test-driven development process. Empirical Software Engineering, 12(6):593-615.
  34. Nagappan, N., Maximilien, E. M., Bhat, T., and Williams, L. (2008). Realizing quality improvement through test driven development: results and experiences of four industrial teams. Empirical Software Engineering, 13(3).
  35. Newkirk, J. W. and Vorontsov, A. A. (2004). Test-Driven Development in Microsoft .Net. Microsoft Press, Redmond, WA, USA.
  36. Osherove, R. (2009). The Art of Unit Testing: With Examples in .Net. Manning Publications Co., Greenwich, CT, USA, 1st edition.
  37. Panc?ur, M., Ciglaric?, M., Trampus?, M., and Vidmar, T. (2003). Towards empirical evaluation of test-driven development in a university environment. In EUROCON'03: International Conference on Computer as a Tool, pages 83-86.
  38. Rady, B. and Coffin, R. (2011). Continuous Testing: with Ruby, Rails, and JavaScript. Pragmatic Bookshelf, 1st edition.
  39. Saff, D. and Ernst, M. D. (2003). Reducing wasted development time via continuous testing. In Fourteenth International Symposium on Software Reliability Engineering, pages 281-292, Denver, CO.
  40. Saff, D. and Ernst, M. D. (2004). An experimental evaluation of continuous testing during development. In ISSTA 2004, Proceedings of the 2004 International Symposium on Software Testing and Analysis, pages 76-85, Boston, MA, USA.
  41. Sanchez, J. C., Williams, L., and Maximilien, E. M. (2007). On the Sustained Use of a Test-Driven Development Practice at IBM. In AGILE'07: Conference on Agile Software Development, pages 5-14, Washington, DC, USA. IEEE Computer Society.
  42. Tahchiev, P., Leme, F., Massol, V., and Gregory, G. (2010). JUnit in Action. Manning Publications, Greenwich, CT, USA, 2nd edition.
  43. Venkatesh, V. and Davis, F. D. (2000). A theoretical extension of the technology acceptance model: Four longitudinal field studies. Management science, 46(2):186- 204.
  44. Williams, L., Maximilien, E. M., and Vouk, M. (2003). Test-Driven Development as a Defect-Reduction Practice. In ISSRE'03: International Symposium on Software Reliability Engineering, pages 34-48, Washington, DC, USA. IEEE Computer Society.
Download


Paper Citation


in Harvard Style

Madeyski L. and Kawalerowicz M. (2013). Continuous Test-Driven Development - A Novel Agile Software Development Practice and Supporting Tool . In Proceedings of the 8th International Conference on Evaluation of Novel Approaches to Software Engineering - Volume 1: ENASE, ISBN 978-989-8565-62-4, pages 260-267. DOI: 10.5220/0004587202600267


in Bibtex Style

@conference{enase13,
author={Lech Madeyski and Marcin Kawalerowicz},
title={Continuous Test-Driven Development - A Novel Agile Software Development Practice and Supporting Tool},
booktitle={Proceedings of the 8th International Conference on Evaluation of Novel Approaches to Software Engineering - Volume 1: ENASE,},
year={2013},
pages={260-267},
publisher={SciTePress},
organization={INSTICC},
doi={10.5220/0004587202600267},
isbn={978-989-8565-62-4},
}


in EndNote Style

TY - CONF
JO - Proceedings of the 8th International Conference on Evaluation of Novel Approaches to Software Engineering - Volume 1: ENASE,
TI - Continuous Test-Driven Development - A Novel Agile Software Development Practice and Supporting Tool
SN - 978-989-8565-62-4
AU - Madeyski L.
AU - Kawalerowicz M.
PY - 2013
SP - 260
EP - 267
DO - 10.5220/0004587202600267