IN3205: Software Testing and Quality Engineering
Testing and Quality
What can we do to create high quality software systems? How can we ensure that a system retains
its quality while it is being changed to meet new business and technological requirements? How do
we know that a system does what it is supposed to do? How can we be sure that a large software
system still works as it should after we've modified it?
The key to answering these questions lies in the use of a systematic approach to software
testing. In this course, you will learn methods, tools, and techniques that allow you to create a
test suite well suited for the application you are developing. The course will make you not only
a better tester, but also a better developer (you will know what bugs to avoid), better designer
(you will be able to create models that are useful for testing as well as development),
and better project manager (you will ensure that software testing is well integrated in the full
The course will cover a range of testing techniques that are useful throughout the
software lifecycle. From a functionality perspective, we'll look at
(pairwise) combinational testing, category-partition, and decision tables.
Furthermore, we'll emphasize the test implications of working with object-oriented systems.
This includes testing state machines, working with design-by-contract, the implication
of the Liskov substitution principle for testing in the presence of inheritance,
using test frameworks, etc.
For every test strategy, an underlying fault model (what types of faults are targeted)
as well as test adequacy criteria (when are you done testing according to this technique)
The course is supported by the book from Pezze and Young, Software Testing and Analysis
Material to cover design by contract and the use of JUnit is available separately.
In addition to regular classes, each course usually includes one or
two guest lectures from industry.
Past lectures have been given by practitioners from Philips Medical Systems, ASML,
the Software Improvement Group, Sogeti, and Microsoft.
addressed include testing in agile organizations, testing embedded software,
and testing component-based systems.
Practical work includes the application of several of the testing techniques from the book,
while extending a simple Pacman variant written in Java called JPacman
Thus, participants learn how to incorporate the test practices
right from the start.
Tools used in the lab work include
A Twitter stream is available via http://twitter.com/delftswtesting
Delft University of Technology
This course has been taught starting in 2003 to 3d year computer science bachelor students at Delft University
of Technology, code in3205-I (theory) and in3205-II (lab work), and has recently been transferred to the 2nd year (TI1210). The course is taught by Arie van Deursen