A sample graduate course supported by
Foundations of Software Testing.

Aditya P. Mathur

Publisher: Pearson Education. 2008

 
 home


Software Testing: A graduate course

An introductory one semester graduate level course. 3 credit hours. Aimed at graduate students. Prerequisites: Required: Graduate standing with a firm foundation in core Computer Science; Recommended: Software Engineering.

The course needs to adapt to the background of the students. It is likely that most graduate students would not have had a course in software testing at the undergraduate level. In that case the course needs to cover the topics in the undergraduate course, but at a faster pace. In addition, topics in model-based testing should also be covered. The syllabus given here assumes no previous background in software testing.

 

Objectives

  • Familiarization with basic terminology in software testing.

  • Familiarization with advanced techniques for test generation and adequacy measurement.

  • Provide an opportunity to get familiarized with testing literature in a specific area through independent reading of selected research publications.
Syllabus:

Preliminaries: Overview of testing preliminaries; Test generation from requirements: Equivalence partitioning, boundary value analysis, category partitioning; fault model for predicates, BOR, BRO, and BRE methods; limitations of test generation from requirements. Test generation from Models and formal specifications: finite state machines, statecharts**, Z** specifications, and timed automata**, combinatorial designs; Test adequacy assessment: Adequacy criteria, control flow based criteria, data flow based criteria, mutation based criteria; adequacy as a stopping criterion, adequacy as a tool for test enhancement.

Suggested schedule based on Foundations of Software Testing

Assumption: 1 Lecture=45 minutes. 1 Semester=16 weeks. 3 lectures/week.

Alternative: This course could also be run as 2 lecture plus one 2-hour laboratory. Laboraory exercises are designed to familiarize students with existing testing tools and enable them to practice the use of techniques covered during lectures.

Topic Chapter Lecture Hours
Course introduction 1
Preliminaries Chapter 1 2
Test generation from requirements: Equivalence partitioning, BVA, category partitioning Chapter 2 3
Test generation from requirements: BOR, BRO, BRE Chapter 2 3
Test generation from finite state models Chapter 3 6
Test generation from combinatorial designs Chapter 4 3
Regression testing Chapter 5 3
Test adequacy: control flow Chapter 6 6
Test adequacy: data flow Chapter 6 3
Test adequacy: program mutation Chapter 7 3
Project presentations* <=15
Miscellaneous topics* Selected chapters >=3
Midterm examination 2
Final examination 2
TOTAL 48

*Hours devoted to these topics will depend on class size..
***Test generation using timed automata, statecharts, and Z specifications is covered in chapters in volume 2 of the book likely to be published in 2009.

Research presentations:

It is highly recommended that this course assign independent readings to each student. An assignment consists of 3-4 recent research publications in a specific area of software testing. Sample areas: regression testing, coverage directed test generation, and security testing. It is best to ask each student to select a list of publications which is then approved by the instructor, possibly after revision.

Each student prepares a brief report summarizing the publications read and makes a 45 minute presentation. While the report ought to cover all the material read, the presentation could focus on specific aspects of the material so as to offer the rest of the class to learn something not covered during the lectures. Grading is based on the report and the presentation.