For the final exam the students should:

- (Not included) Know the Extreme Programming process description based on a diagram presented in class, advantages and weaknesses of the process

- Know the RELAY fault-based model

- Know the terminology of symbolic evaluation

- Know the three variants of symbolic evaluation presented in class: path-dependent, dynamic and global; their advantages and weaknesses

- Be able to apply path-dependent symbolic evaluation

- (Not included) Know the verification by proof approach, its terminology and be able to apply it

- Know the difficulties the Object-Oriented approach introduces to testing itemized as was discussed in class (how inheritance, encapsulation, and polymorphism complicate testing)

- Know how a statechart diagram of a class can help create testcases (sequences of function invocations) and identify expected states

- Know the problem of regression testing

- Know the basic steps of regression testing

- Know the terminology introduced by Rothermel and Harrold to evaluate regression methods (fault revealing, modification revealing, modification traversing), be able to describe using a diagram

- Know the four major approaches to regression testing problem