Instructor: Karl Lieberherr
Teaching Assistant: ?
Finding test inputs which lead to failures of programs requires a good understanding of the specification of the program as well as an understanding of which parts of the specification are hardest to implement. If the program to be tested is given in source form, we get additional clues where it might be most productive to look for bugs.
In an ideal world, there would be no need for testing: The software would be correct by construction. Ideally, we can think of a systematic way of deriving a program from a specification and simultaneously proving that the program satisfies the specification. While "correct-by-construction" is a worthwhile goal it is difficult to achieve in practice with the current state-of-the-art. The course will however also show how simple programs can be proven to be correct with respect to their specification. The software development process has an influence on which errors remain in the final program. If the software development process is perfect, there are no errors left provided the specification is correct.
The practical parts of the course will focus on testing Java programs using
testing tools for Java from SunTest.