An Experience on Applying Software Testing for Teaching Introductory Programming Courses

Previous work has demonstrated that the use of software testing concepts for teaching introductory programming courses may be a good practice for the students. Indeed, these courses provide limited opportunities for the teacher regarding dynamic activities that could help students in the learning process. This paper describes an approach in which test sets are reused in the context of teaching introductory programming courses, as an alternative to increase the quality of the programs generated by students. An experimental study was carried out to investigate the impact of reusing test cases during the programming learning. The objective is to evaluate if the use of test cases might improve the quality of programs implemented by the students. Sixty undergraduate students participated in the experiment, implementing programs in the domain of vectors. A set of reference programs was used to generate test cases, based on functional testing, to be reused by the students to test their programs. Considering a range of 1 10, the programs’ quality increased from 5:3 to 7:4 using this approach. The results provide evidences that the reuse of test cases during introductory programming courses may help to increase the quality of the programs generated by students, motivating them to apply software testing during the development of the programs.

[1]  E. L. Jones An experiential approach to incorporating software testing into the computer science curriculum , 2001, 31st Annual Frontiers in Education Conference. Impact on Engineering and Science Education. Conference Proceedings (Cat. No.01CH37193).

[2]  Tony Clear,et al.  An introduction to program comprehension for computer science educators , 2010, ITiCSE-WGR '10.

[3]  Stephen H. Edwards,et al.  Web-CAT: automatically grading programming assignments , 2008, ITiCSE.

[4]  Hong Zhu,et al.  Software unit test coverage and adequacy , 1997, ACM Comput. Surv..

[5]  Edsger W. Dijkstra,et al.  Chapter I: Notes on structured programming , 1972 .

[6]  David Hovemeyer,et al.  Experiences with marmoset: designing and using an advanced submission and testing system for programming courses , 2006, ITICSE '06.

[7]  Edward L. Jones,et al.  Integrating testing into the curriculum — arsenic in small doses , 2001, SIGCSE '01.

[8]  Mehdi MirzaAghaei,et al.  Automatic test suite evolution , 2011, ESEC/FSE '11.

[9]  Edsger W. Dijkstra,et al.  Structured programming , 1972, A.P.I.C. Studies in data processing.

[10]  David Wiley,et al.  Connecting learning objects to instructional design theory: A definition, a metaphor, and a taxonomy , 2000 .

[11]  Edward L. Jones Grading student programs - a software testing approach , 2001 .

[12]  Cem Kaner,et al.  Experiences teaching a course in programmer testing , 2005, Agile Development Conference (ADC'05).

[13]  Elaine J. Weyuker,et al.  Axiomatizing software test data adequacy , 1986, IEEE Transactions on Software Engineering.

[14]  Stephen H. Edwards Teaching software testing: automatic grading meets test-first coding , 2003, OOPSLA '03.

[15]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[16]  Diane Kelly,et al.  More testing should be taught , 2001, CACM.

[17]  Ellen Francine Barbosa,et al.  ProgTest: An environment for the submission and evaluation of programming assignments based on testing activities , 2011, 2011 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T).

[18]  Augusto Sampaio,et al.  Test case prioritization based on data reuse an experimental study , 2009, 2009 3rd International Symposium on Empirical Software Engineering and Measurement.

[19]  A. Jefferson Offutt,et al.  Introduction to Software Testing , 2008 .

[20]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[21]  N. Falconer Structured Programming , 1973, Nature.

[22]  Yunwei Dong,et al.  Experiments on Test Case Reuse of Test Coverage Criteria , 2010, 2010 7th International Conference on Ubiquitous Intelligence & Computing and 7th International Conference on Autonomic & Trusted Computing.

[23]  Edward L. Jones,et al.  Software testing in the computer science curriculum -- a holistic approach , 2000, ACSE '00.