skip to main content
10.1145/2157136.2157202acmconferencesArticle/Chapter ViewAbstractPublication PagessigcseConference Proceedingsconference-collections
research-article

Running students' software tests against each others' code: new life for an old "gimmick"

Published:29 February 2012Publication History

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.

References

  1. J. Spacco and W. Pugh, "Helping students appreciate test-driven development (TDD)," presented at the Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, Portland, Oregon, USA, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. M. H. Goldwasser, "A gimmick to integrate software testing throughout the curriculum," presented at the Proceedings of the 33rd SIGCSE Technical Symposium on Computer Science Education, ACM, New York, NY, pp. 271--275, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. M. Hauswirth, et al., "The JavaFest: a collaborative learning technique for Java programming courses," presented at the Proceedings of the 6th international symposium on Principles and practice of programming in Java, Modena, Italy, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. W. Marrero and A. Settle, "Testing first: emphasizing testing in early programming courses," SIGCSE Bull., vol. 37, pp. 4--8, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. H. Edwards, "Rethinking computer science education from a test-first perspective," presented at the Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, Anaheim, CA, USA, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. D. Jackson and M. Usher, "Grading student programs using ASSYST," SIGCSE Bull., vol. 29, pp. 335--339, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. B. Cole, et al., "Improving your software using static analysis to find bugs," presented at the Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, Portland, Oregon, USA, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. K. Aaltonen, et al., "Mutation analysis vs. code coverage in automated assessment of students' testing skills," presented at the Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion, Reno/Tahoe, Nevada, USA, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. Elbaum, et al., "Bug Hunt: Making Early Software Testing Lessons Engaging and Affordable," presented at the 29th International Conference on Software Engineering (ICSE), pp. 688--697, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Beck, K. Aim, fire (test-first coding). IEEE Software, 18(5): 87--89, Sept./Oct. 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Beck, K. Test-Driven Development: By Example. Addison-Wesley, Boston, MA, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. S. Chiba and M. Nishizawa, "An easy-to-use toolkit for efficient Java bytecode translators," presented at the Proceedings of the 2nd international conference on Generative programming and component engineering (GPCE '03), Springer-Verlag New York, Inc., New York, NY, USA, pp. 364--376, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Running students' software tests against each others' code: new life for an old "gimmick"

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            SIGCSE '12: Proceedings of the 43rd ACM technical symposium on Computer Science Education
            February 2012
            734 pages
            ISBN:9781450310987
            DOI:10.1145/2157136

            Copyright © 2012 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 29 February 2012

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            SIGCSE '12 Paper Acceptance Rate100of289submissions,35%Overall Acceptance Rate1,595of4,542submissions,35%

            Upcoming Conference

            SIGCSE Virtual 2024
            SIGCSE Virtual 2024: ACM Virtual Global Computing Education Conference
            November 30 - December 1, 2024
            Virtual Event , USA

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader