Running students' software tests against each others' code
Authors:
Open Access
- 29 February 2012
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 221-226
Abstract
At SIGCSE 2002, Michael Goldwasser suggested a strategy for adding software testing practices to programming courses by requiring students to turn in tests along with their solutions, and then running every student's tests against every other student's program. This approach provides a much more robust environment for assessing the quality of student-written tests, and also provides more thorough testing of student solutions. Although software testing is included as a regular part of many more programming courses today, the all-pairs model of executing tests is still a rarity. This is because student-written tests, such as JUnit tests written for Java programs, are now more commonly written in the form of program code themselves, and they may depend on virtually any aspect of their author's own solution. These dependencies may keep one student's tests from even compiling against another student's program. This paper discusses the problem and presents a novel solution for Java that uses bytecode rewriting to transform a student's tests into a form that uses reflection to run against any other solution, regardless of any compile-time dependencies that may have been present in the original tests. Results of applying this technique to two assignments, encompassing 147 student programs and 240,158 individual test case runs, shows the feasibility of the approach and provides some insight into the quality of both student tests and student programs. An analysis of these results is presented.Keywords
This publication has 10 references indexed in Scilit:
- Mutation analysis vs. code coverage in automated assessment of students' testing skills2010
- The JavaFest2008
- Bug Hunt: Making Early Software Testing Lessons Engaging and Affordable2007
- Improving your software using static analysis to find bugs2006
- Helping students appreciate test-driven development (TDD)2006
- Testing firstACM SIGCSE Bulletin, 2005
- Rethinking computer science education from a test-first perspective2003
- A gimmick to integrate software testing throughout the curriculum2002
- Aim, fire [test-first coding]IEEE Software, 2001
- Grading student programs using ASSYSTACM SIGCSE Bulletin, 1997