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.




















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
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.
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.
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.
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.
Arif EM. A methodology for teaching object-oriented programming concepts in an advanced programming course. ACM SIGCSE Bull. 2000;32(2):30–4.
Bach J. Heuristics of software testability. 1999. http://www.satisfice.com/tools/testable.pdf. Accessed 21 Dec 2020.
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.
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.
Capitalize My Title. https://capitalizemytitle.com. 2020. Accessed 15 Aug 2023.
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.
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.
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.
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.
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.
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.
Graham D, Fewster M. Software testing automation. Addison-Wesley Professional; 1999.
Graham D, Black R, Vennendaal E. Foundations of software testing ISTQB certification. Cengage Learning EMEA; 2019.
Hadar I, Leron U. How intuitive is object-oriented design? Commun ACM. 2008;51(5):41–6.
Janzen D, Saiedian H. Test-driven learning in early programming courses. ACM SIGCSE Bull. 2008;40(1):532–6.
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.
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.
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.
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.
Liberman N, Beeri C, Kolikant YB-D. Difficulties in learning inheritance and polymorphism. ACM Trans Comput Educ Trans Comput Educ. 2011;11(1):4.
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.
Martin RC. Principles of OOD. 2003. http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod. Accessed 21 Dec 2020.
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.
McConnell C. More effective agile: a roadmap for software leaders. Construx Press; 2019.
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.
Mockito framework site. 2020. https://site.mockito.org. Accessed 15 Aug 2023.
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.
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.
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.
Or-Bach R, Lavy I. Cognitive activities of abstraction in object orientation: an empirical study. ACM SIGCSE Bull. 2004;36(2):82–6.
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.
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.
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.
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.
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.
Sadler DR. Formative assessment and the design of instructional systems. Instr Sci. 1989;18:119–44.
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.
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.
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.
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.
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.
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.
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.
Testability Learning Support System (TLS) site. 2022. https://wwp.shizuoka.ac.jp/ks/research/tls/contents/. Accessed 15 Aug 2023.
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.
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.
Williams R, Kessler L. Pair programming illuminated. Addison-Wesley Professional; 2002.
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
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
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.
About this article
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
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s42979-023-02096-2