T5-COMP1-4 - Teaching Practices of Software Testing in Programming Education

3. Research Full Paper
Lilian Passos Scatalon1 , Rogério Eduardo Garcia2, Ellen Francine Barbosa1
1 University of São Paulo
2 São Paulo State University

This Research Full Paper presents an overview of the practices that have been used to integrate software testing into programming education. Introductory programming courses compose the core of several undergraduate programs, since programming is a crucial technical skill for professionals in many areas. Given the subject importance, researchers have been conducting several studies to investigate teaching approaches that can help overcoming students' learning difficulties. In particular, studies on introducing software testing into this context present evidence that testing practices can improve students' programming performance and habits. There are many teaching approaches in programming education, which involve different choices of programming paradigm and language, support tools and development practices, such as version control. Likewise, the integration of software testing into such diverse context can also happen in many different ways. Therefore, investigating the ways to teach programming and testing at the same time can help instructors with informed choices. In this sense, we identified teaching practices that have been adopted to integrate software testing into programming education. To do so, we further analyzed a subgroup of 195 papers that returned in our systematic mapping on this research domain. We selected papers describing empirical studies (e.g. survey, qualitative studies, experiments, case studies and experience reports), since this kind of study involves applying a given teaching practice in order to collect evidence or report the observed experience. Overall, our results shed light on how the integration of software testing has been done in different classroom contexts of programming education. We discuss the practices in terms of their application context (i.e. the course), how testing was introduced in theory and practice, and the adopted support tools. We also discuss an important gap regarding the lack of instruction in testing concepts, even when students are responsible to write their own tests.