Skip to main content
Log in

Classroom Practice with Learning Support System for Program Design Using Mock Technique Based on Testability

  • Original Research
  • Published:
SN Computer Science Aims and scope Submit manuscript

Abstract

The importance of automated testing skills for programmers has increased in recent software development. However, novice programmers have few opportunities to learn how to design software components suited to automated testing. Therefore, we constructed a learning support system that can conduct an exercise to analyze and improve program design from the viewpoint of testability. However, our previous system did not support design improvement using mock techniques, and test target components to be practiced are limited. Furthermore, component design with mock techniques is related to learning object-oriented design concepts. It is an important element for learners to perform their software development using the test-driven development (TDD) approach. Therefore, in this study, we extended the system to support learning for designing the test target component using mock techniques. We experimented with the learning effect of the system on supporting learners to analyze and improve the design of the test target component using mock techniques. We also confirmed the system’s applicability by introducing it into a TDD exercise in a real classroom.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17
Fig. 18
Fig. 19
Fig. 20

Similar content being viewed by others

Availability of Supporting Data

The research data is stored at Shizuoka University. Due to the universities privacy policy, the research data cannot be shared.

Abbreviations

TDD:

Test-Driven Development

UML:

Unified Modeling Language

OOD:

Object-Oriented Design

IDE:

Integrated Development Environment

API:

Application Programming Interface

TLS:

Testability Learning System

References

  1. Allowatt A, Edwards SH. IDE Support for test-driven development and automated grading in both Java and C++. In: Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange (eclipse ’05). New York, NY: Association for Computing Machinery; 2005. pp.100–4. https://doi.org/10.1145/1117696.1117717.

  2. Alkazemi BY, Grami GM. Utilizing BlueJ to teach polymorphism in an advanced object-oriented programming course. J Inf Technol Educ Innov Pract. 2012;11:271–82.

    Google Scholar 

  3. Altarawneh R, Humayoun SR. A two-perspective visualization approach for utilizing visualization power in computer science education. In: Proceedings of the 3rd computer science education research conference on computer science education research (CSERC ’13). Open Universiteit, Heerlen, Heerlen, NLD. 2013. p. 85–91.

  4. Arcuri A, Fraser G, Galeotti JP. Automated unit test generation for classes with environment dependencies. In: Proceedings of the 29th ACM/IEEE international conference on automated software engineering (ASE ’14). New York, NY: Association for Computing Machinery; 2014. pp. 79–90. https://doi.org/10.1145/2642937.2642986.

  5. Arif EM. A methodology for teaching object-oriented programming concepts in an advanced programming course. ACM SIGCSE Bull. 2000;32(2):30–4.

    Article  Google Scholar 

  6. Bach J. Heuristics of software testability. 1999. http://www.satisfice.com/tools/testable.pdf. Accessed 21 Dec 2020.

  7. Benaya T, Andzur E. Understanding object-oriented programming concepts in an advanced programming course. In: Proceedings of the 3rd international conference on informatics in secondary schools—evolution and perspectives: informatics education (ISSEP ’08). Lecture Notes in Computer Science. 2008. 5090:161–170.

  8. Bergin J. Teaching polymorphism with elementary design patterns. In: Companion of the 18th annual ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications (OOPSLA '03). New York, NY: Association for Computing Machinery. 2003. pp. 167–9. https://doi.org/10.1145/949344.949393.

  9. Capitalize My Title. https://capitalizemytitle.com. 2020. Accessed 15 Aug 2023.

  10. Clarke PJ, Davis DL, Chang-Lau R, King TM. Impact of using tools in an undergraduate software testing course supported by WReSTT. ACM Trans Comput Educ. 2017;17(4):1–28.

    Article  Google Scholar 

  11. Cordova L, Carver J, Gershmel N, Walia G. A comparison of inquiry based conceptual feedback vs. traditional de-tailed feedback mechanisms in software testing education: an empirical investigation. In: Proceedings of the 52nd ACM technical symposium on computer science education (SIGCSE ’21). 2021. https://doi.org/10.1145/3408877.3432417.

  12. Daniel D. Teach all OOP principles in a single solution and expanding to solve similar problems. In: Proceedings of the 10th annual CITRENZ conference. 2019. p. 60–65.

  13. Edwards HS. Teaching software testing: automatic grading meets test-first coding. In: Companion of the 18th annual ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications (OOPSLA '03). New York, NY: Association for Computing Machinery; 2003. pp. 318–9. https://doi.org/10.1145/949344.949431.

  14. Funabiki N, Matsushima Y, Nakanishi T, Watanabe K, Amano N. A java programming learning assistant system using test-driven development method. IAENG Int J Comput Sci. 2013;40(1):38–46.

    Google Scholar 

  15. Gershon ND. From perception to visualization. In: Rosenblum L, Earnshaw RA, Encarnacao J, Hagen H, Kaufman A, Klimenko S, Nielson G, Post F, Thalmann D, editors. Scientific visualization: advances and challenges. Academic Press; 1994.

  16. Graham D, Fewster M. Software testing automation. Addison-Wesley Professional; 1999.

  17. Graham D, Black R, Vennendaal E. Foundations of software testing ISTQB certification. Cengage Learning EMEA; 2019.

  18. Hadar I, Leron U. How intuitive is object-oriented design? Commun ACM. 2008;51(5):41–6.

    Article  Google Scholar 

  19. Janzen D, Saiedian H. Test-driven learning in early programming courses. ACM SIGCSE Bull. 2008;40(1):532–6.

    Article  Google Scholar 

  20. Johnson PM, Kou H. Automated recognition of test-driven development with Zorro. In: Proceedings of the AGILE 2007 (AGILE '07). USA: IEEE Computer Society; 2007. pp. 15–25. https://doi.org/10.1109/AGILE.2007.16.

  21. Juha S, Villa K, Lauri M. A review of generic program visualization systems for introductory programming education. ACM Trans Comput Educ. 2013;13:1–64.

    Article  Google Scholar 

  22. Kawakami N, Matsuura S. A learning support tool for testing Java programs. In: Proceedings of the 25th conference on IASTED international multi-conference: software engineering (SE'07). USA: ACTA Press; 2007. pp. 273–8.

  23. Keuning H, Jeuring J, Heeren B. A systematic literature review of automated feedback generation for programming exercises. ACM Trans Comput Educ. 2018;19(1):43.

    Google Scholar 

  24. Liberman N, Beeri C, Kolikant YB-D. Difficulties in learning inheritance and polymorphism. ACM Trans Comput Educ Trans Comput Educ. 2011;11(1):4.

    Google Scholar 

  25. Luo Q, Poshyvanyk D, Nair A, Grechanik M. FOREPOST: a tool for detecting performance problems with feedback-driven learning software testing. In: IEEE/ACM 38th international conference on software engineering companion (ICSE-C), Austin, TX, USA. 2016. pp. 593–6.

  26. Martin RC. Principles of OOD. 2003. http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod. Accessed 21 Dec 2020.

  27. Martinez A. Use of JiTT in a graduate software testing course: an experience report. In: IEEE/ACM 40th international conference on software engineering: software engineering education and training (ICSE-SEET), Gothenburg, Sweden. 2018. pp. 108–15.

  28. McConnell C. More effective agile: a roadmap for software leaders. Construx Press; 2019.

  29. McMinn P, Harman M, Fraser G, Kapfhammer GM. Automated search for good coverage criteria: moving from code coverage to fault coverage through search-based software engineering. In: IEEE/ACM 9th international workshop on search-based software testing (SBST), Austin, TX, USA. 2016. pp. 43–4. https://doi.org/10.1145/2897010.2897013.

  30. Mockito framework site. 2020. https://site.mockito.org. Accessed 15 Aug 2023.

  31. Moreno A, Myller N, Sutinen E, Ben-Ari M. Visualizing programs with jeliot3. In: Proceedings of the working conference on Advanced visual interfaces. ACM; 2004. p. 373–376.

  32. Nandigam J, Tao Y, Gudivada VN, Hamou-Lhadj A. Using mock object frameworks to teach object-oriented design principles. J Comput Sci Coll. 2010;26(1):40–8.

    Google Scholar 

  33. Noguchi Y, Ihara D, Kogure S, Yamashita K, Konishi T, Itoh Y. Learning support system for software component design based on testability. In: Proceedings of the 27th international conference on computers in education. 2019. pp. 306–11.

  34. Or-Bach R, Lavy I. Cognitive activities of abstraction in object orientation: an empirical study. ACM SIGCSE Bull. 2004;36(2):82–6.

    Article  Google Scholar 

  35. Proulx VK, Jossey W. Unit test support for Java via reflection and annotations. In: Proceedings of the 7th international conference on principles and practice of programming in Java (PPPJ '09). New York, NY: Association for Computing Machinery; 2009. pp. 49–56. https://doi.org/10.1145/1596655.1596663.

  36. Ren W, Barrett S, Das S. Toward gamification to software engineering and contribution of software engineer. In: ICMSS 2020: 2020 4th international conference on management engineering, software engineering and service sciences. 2020. p. 1–5. DOI: https://doi.org/10.1145/3380625.3380628.

  37. Roels R, Mestereaga P, Signer B. Towards enhanced presentation-based teaching of programming: an interactive source code visualisation approach. In: CSEDU 2015—7th international conference on computer supported education, proceedings. vol 1. 2015. Doi: https://doi.org/10.5220/0005445300980107.

  38. Rojas JM, White TD, Clegg BS, Fraser G. Code defenders: crowd sourcing effective tests and subtle mutants with a mutation testing game. In: 2017 IEEE/ACM 39th international conference on software engineering (ICSE), Buenos Aires, Argentina. 2017. p. 677–688. DOI: https://doi.org/10.1109/ICSE.2017.68.

  39. Ruixiang Q, Yuan Z, Duo M, Yang F, Qingkai S, Yong H, Zhenyu C. Test recommendation system based on slicing coverage filtering. In: Proceedings of the 29th ACM SIGSOFT international symposium on software testing and analysis. 2020. https://doi.org/10.1145/3395363.3404370.

  40. Sadler DR. Formative assessment and the design of instructional systems. Instr Sci. 1989;18:119–44.

    Article  Google Scholar 

  41. Schmolitzky A. Teaching inheritance concepts with Java. In: Proceedings of the 4th international symposium on principles and practice of programming in Java (PPPJ '06). New York, NY: Association for Computing Machinery; 2006. pp. 203–7. https://doi.org/10.1145/1168054.1168084.

  42. Schroeder PJ, Rothe D. Teaching unit testing using test-driven development. In: Workshop on teaching software testing. 2005. https://citeseerx.ist.psu.edu/doc/10.1.1.105.7162.

  43. Smith R, Tang T, Warren J, Rixner S. An automated system for interactively learning software testing. In: 22nd Annual conference on innovation and technology in computer science education (ITiCSE). 2017. p. 98–103.

  44. Souza MR, Constantino KF, Veado LF, Figueiredo E. Gamification in software engineering education: an empirical study. In: IEEE 30th conference on software engineering education and training (CSEE&T), Savannah, GA, USA. 2017. pp. 276–84. https://doi.org/10.1109/CSEET.2017.51.

  45. Stephan D. Software visualization. In: Proceedings of the 27th international conference on Software engineering (ICSE '05). New York, NY: Association for Computing Machinery; 2005. pp. 718–9. https://doi.org/10.1145/1062455.1062634.

  46. Tahbildar H, Kalita B. Automated software test data generation: direction of research. Int J Comput Sci Eng Surv. 2011. https://doi.org/10.5121/ijcses.2011.2108.

    Article  Google Scholar 

  47. Teixeira FAD, Braga e Silva G. EasyTest: an approach for automatic test cases generation from UML activity diagrams. In: Advances in intelligent systems and computing. 14th International conference on information technology-new generations. 2018. pp. 411–7. https://doi.org/10.1007/978-3-319-54978-1_54.

  48. Testability Learning Support System (TLS) site. 2022. https://wwp.shizuoka.ac.jp/ks/research/tls/contents/. Accessed 15 Aug 2023.

  49. Yu J, Zhang J, Yu C, Pan L, Li S. Design of subject-based learning website for software testing course based on smart campus. In: Proceedings of the 2019 international conference on artificial intelligence and computer science (AICS 2019). New York, NY: Association for Computing Machinery; 2019. pp. 423–7.

  50. Walker J, Mayo U, Shene C, Carr S. Visualization for secure coding in C. In: Proceedings of the 2017 ACM conference on innovation and technology in computer science education (ITiCSE ’17). New York: ACM; 2017. p. 372. https://doi.org/10.1145/3059009.3072990.

  51. Williams R, Kessler L. Pair programming illuminated. Addison-Wesley Professional; 2002.

Download references

Acknowledgements

The authors would like to thank the participants of the study.

Funding

This work was supported by JSPS KAKENHI Grant Number JP18K11566 / JP22K12311.

Author information

Authors and Affiliations

Authors

Contributions

The initial manuscript draft was written by the first and the second author but was reviewed and revised multiple times and complemented in conjunction with the co-authors. The data analysis was mainly executed by the first author, with close support from the second and fourth authors. All authors participated in the definitive cross-checking of the emerging results. All the authors read and approved the final manuscript.

Corresponding author

Correspondence to Yasuhiro Noguchi.

Ethics declarations

Conflict of interest

The authors declare that they have no competing interests.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Muramatsu, M., Noguchi, Y., Kogure, S. et al. Classroom Practice with Learning Support System for Program Design Using Mock Technique Based on Testability. SN COMPUT. SCI. 4, 624 (2023). https://doi.org/10.1007/s42979-023-02096-2

Download citation

  • Received:

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1007/s42979-023-02096-2

Keywords