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 is divided in three blocks. The first block is an introduction to software testing and to software testing activities. In the second block the students will receive a research paper on testing object oriented systems to read, understand and present in class. Finally, in the third block the students will be grouped in teams with the goal of to design and program a prototype test environment for an object oriented language.
Knowledge of object oriented programming.
A choice of selected scientific research papers will be distributed in class.
Table of Contents
- Introduction to software testing
a. Fundamentals of testing
i. What is testing
ii. Testing throughout the software life cycle
b. Test design techniques
i. Model-based testing
ii. Testing coverage and symbolic execution
c. Tool support for testing
- Student presentation on testing object-oriented systems
- Design and programming of tool support for testing object-oriented systems
Slides will be provided to the students for download.
The final grade is a combination of grades for
(1) the presentation (60%) and
(2) the report on own contribution of the programming assignment (40%).