: Sunday Morning Tutorials (8:30 - 12:00) : Sunday : Testing and Documentation
Adding Software Testing to Programming Assignments
Pacific Salon 4
Sunday, 8:30, half day
Stephen Edwards, Virginia Tech, Dept. of Computer Science
Tutorial number: 5
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.
Beginner: Educators interested in testing or XP. No specific testing knowledge required. Basic Java suggested but not required.
Stephen Edwards, Virginia Tech, Dept. of Computer Science: Stephen Edwards is an associate professor in the Department of Computer Science at Virginia Tech, with research interests in software engineering, reuse, automated testing, and CS education. He is a vocal proponent of teaching software testing across the CS curriculum. He recently redesigned the CS1 course at Virginia Tech, where students begin writing simple tests for their programs during the first week, and must submit tests along with every lab and programming assignment. These techniques have been applied in freshman, sophomore, and upper division undergraduate courses, as well as in graduate courses and at other universities.