Assumed prior knowledge
Students are assumed to have good knowledge of object oriented programming concepts and that can program in either 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.
The course is an introduction to the foundations software testing and to software testing activities, without using a specific methodology or technology. In particular we will discuss several coverage criteria, and techniques for the generation of concrete test cases, such as symbolic execution. The focus of the course is on unit testing of object-oriented system, so to understand how a class can be tested in isolation.
During the course students will receive papers on current techniques and methods used for testing today’s programs. Students are expected to read, understand and critically discuss them in class. Small exercises to test the understanding of the material will be given as homework or to be done in class. At the end of the course students will be grouped in small teams with the goal of implementing a prototype test environment for unit testing a class in Java or C++.
At the end of the course students are expected to understand the fundamentals of software testing, the basic test types and activities, the principles behind testing coverage criteria, the theoretical foundations of symbolic execution for test case generation. Further, students will have a deep understanding of unit testing in the context of object-orientation, and will be able to design and program in teams (part of) a test environment for unit testing, in which a Java/C++ class can be tested in isolation.
The most recent timetable can be found on the students' website.
Mode of instruction
Lectures and one hackathon.
Total hours of study: 168 hrs. (= 6 EC)
Lectures: 26:00 hrs.
Practical work: 34:00 hrs.
Examination: 8:00 hrs.
Self-study/Homework: 100:00 hrs.
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 (hackathon) (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.
You have to sign up for courses and exams (including retakes) in uSis. Check this link for information about how to register for courses.
Please also register for the course in Blackboard.
- Available shortly before the start of the course.