Insights from the Field: Exploring Students' Perspectives on Bad Unit Testing Practices
Anthony Peruma, Eman Abdullah AlOmar, Wajdi Aljedaani, Christian D. Newman, Mohamed Wiem Mkaouer
TL;DR
This experience report investigates how students perceive test smells in their unit tests and evaluates an automated detection tool, tsDetect, as a learning aid. In a study with 184 students across three US institutions, participants first wrote unit tests for simple Java programs, then used tsDetect to identify smells and optionally fix them, followed by a questionnaire. The findings reveal substantial subjective variation in which smells are considered harmful, with several commonly labeled as not harmful, and show that tsDetect generally improves understanding and, for many participants, test-code quality. The work underscores educational implications for curricula design, tooling integration, and future research on effective teaching of test-quality practices.
Abstract
Educating students about software testing practices is integral to the curricula of many computer science-related courses and typically involves students writing unit tests. Similar to production/source code, students might inadvertently deviate from established unit testing best practices, and introduce problematic code, referred to as test smells, into their test suites. Given the extensive catalog of test smells, it becomes challenging for students to identify test smells in their code, especially for those who lack experience with testing practices. In this experience report, we aim to increase students' awareness of bad unit testing practices, and detail the outcomes of having 184 students from three higher educational institutes utilize an IDE plugin to automatically detect test smells in their code. Our findings show that while students report on the plugin's usefulness in learning about and detecting test smells, they also identify specific test smells that they consider harmless. We anticipate that our findings will support academia in refining course curricula on unit testing and enabling educators to support students with code review strategies of test code.
