SIGCSE Virtual 2024
Thu 5 - Sun 8 December 2024

Mutation testing is used to gauge the quality of software test suites by introducing small faults, called “mutations”, into code to assess if a test suite can detect them. Although it has been applied extensively in the software industry, mutation testing’s use in programming courses faces both computational and pedagogical barriers. This study examines the impact of mutation testing on student performance in a post-CS2 Data Structures and Algorithms course with 3-4 week life-cycle programming projects. We collected a semester of data with projects using only code coverage (control group) and another semester that used mutation testing (experimental group). We investigated three aspects of mutation testing impact: the quality of student-written test suites, the correctness and complexity of students’ solution code, and degree of incremental test writing. Our findings suggest that students using mutation testing, as a group, demonstrated higher quality test suites and wrote better solution code compared to students using traditional code coverage methods. Students using mutation testing were more likely to exhibit incremental testing practices.