my research interests

my research interests include component techniques, testing, and innovative teaching...
 
 
Adding software testing to programming assignments PDF Print E-mail
Friday, 14 October 2005

Stephen H. Edwards. Adding software testing to programming assignments. Tutorial at the 20th Annual ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications, October 2005.

Software testing is a critical skill for practitioners, but it is rarely given appropriate coverage in undergraduate curricula. If we want to change the culture of how students program, they should practice basic testing skills on every assignment all the time. This tutorial provides a practical introduction to incorporating software testing activities as a regular part of programming assignments. While this can be done for many languages, the focus here is on leveraging XUnit-style tools and test-first coding techniques to infuse software testing throughout courses that teach object-oriented programming concepts. Empirical evidence suggests that, when assignments are transformed this way, students produce higher-quality results (averaging 28% fewer bugs/KSLOC) and are more likely to turn assignments in on time. Further, test-first strategies preempt “big bang” integration disasters, and students report greater confidence in their own work.

This tutorial presents five different models for how one can incorporate testing into assignments, provides live programming demonstrations of the techniques, and discusses the corresponding advantages and disadvantages of each. Approaches to assessment—using testing to assess student code, assessing tests that students write, and automated grading—are all discussed. Advice for writing “testable” assignments is given. Hands-on examples for participants are also provided.