Knowledge of object oriented programming (Java or C++).
Software testing is the process of executing a program with the intent of finding errors. Most of the defects in software are design errors, due not to the goodness of programmers, but because the complexity of software is becoming intractable. Testing is more than just debugging. Testing is not only used to locate defects and correct them. It is also used in validation and verification of software systems.
Due to the large diversity of testing methods and testing techniques, this course focuses on the fundamentals of testing object-oriented systems, with a particular focus on unit testing, in which a class can be tested in isolation.
The course is an introduction to software testing and to software testing activities, without using a specific methodology or technology. At the end of the course students will be grouped in teams with the goal of implementing a prototype test environment for unit testing a class in Java or C++.
The course presents an introduction to the fundamentals of software testing, explaining the principle in testing and the basic test types. The main focus is on unit testing and object-orientation. Students are expected to understand the material presented in class, work on exercises to test their knowledge, and to design and program in teams (part of) a test environment for unit testing, in which a Java class can be tested in isolation.
The most recent timetable can be found at the students' website
Mode of instruction
The final grade is a combination of grades for (1) In class participation (10%), (2) the in-class exercises (40%), and (3) the programming assignment (50%).
P. Ammann and J. Offutt, Introduction to software testing, Cambridge University Press, 2008. ISBN 978-0-521-88038-1
A choice of selected scientific research papers will be distributed in class. Slides will be provided to the students for download.