LIACS > Marcello M. Bonsangue >Testing Object Oriented Systems
Lecturers Frank de Boer
Marcello Bonsangue
Course number
Class number
Prerequisites Student MSc Computer Science
Language English
Hackathon 17 Dec 2018:
  • from 10:00 to 14:30 in the computer lab Snellius 303
  • from  14:30 to 17:00 in room Snellius 401.
Schedule Fall 2018

September 17, 24
October 1, 8, 15, 22, 29
November 5, 12, 19, 26
December 3, 10

Lectures: 11:00-12:45, room Snellius 401.


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 read, understand and present research papers on testing object-oriented systems, 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. Each student is expected to write a short report about the results obtained. This report will be written in scientific paper format and, provided that the quality of the results is sufficient, we will encourage and help the authors to submit this paper to a scientific conference. .


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 consists of lectures, in-class assignements and a final programming work, where the students will be grouped in teams with the goal of to design and program a prototype test environment for an object oriented language.


P. Ammann and J. Offutt Introduction to software testing, Cambridge University Press, 2008. ISBN 978-0-521-88038-1

Schedule Lectures

Nun Date Topic Reading Remarks
1a 17 Sep Overview 

What is testing? [AO08]:1.2-1.4
2a 24 Sep Test activities [AO08]:1.1
2b Structural graph coverage [AO08]:2.1-2.2
3a 1 Oct Loops in graphs [AO08]:2.2
4a 8 Oct Control flow graphs [AO08]:2.3.1 Self-study
4b Data flow graphs [AO08]:2.3.2 Self-study
5 15 Oct In-class assignment 1 Solutions
6 22 Oct Symbolic execution (forward) [LMPBL05]
7 29 Oct Foundation of symbolic execution
8 5 Nov  Symbolic execution (backward)
12 Nov No-class
9 19 Nov In-class assignment 2 Solutions
10 26 Nov Input space partitioning [AO08]:4
11 3 Dec
Model based conformance testing [Tre08]
12 10 Dec Object Oriented Testing [AO08]:7.1, [PY08]:15
13a 17 Dec Hackathon (10:00 - 14:30) Snellius 303
13b Discussion (14:30 - max 17:00) Snellius 401


[AO08] P. Ammann and J. Offutt, Introduction to software testing, Cambridge University Press, 2008.

[Ham02] R. Hamlet. Random Testing. In Encyclopedia of Software Engineering, Wiley, 2002.

[LMPBL05] G. Lee, J. Morris, K. Parker, G.A. Bundell, and P. Lam. Using symbolic execution to guide test generation. Software Testing, Verification and  Reliability 15:41–61, 2005. 

[PY08] M. Pezzè and M. Young. Software Testing and Analysis: Process, Principles, and Techniques.  John Wiley & Sons, 2008.

[Tre08] J. Treatmans. Model Based Testing with Labelled Transition Systems. Formal Methods and Testing:1-38,  .


The final grade is a combination of grades for
(1) in-class assignments (40%)
(2) a critical attitude in class (10%) and
(3) a programming assignments (50%).