Computer systems are becoming more complex and often have to possess properties like high reliability, availability and fault tolerance. Systems have to be tested to ensure these properties. Testing is an expensive process and "good" testing methods have to be designed.
Modern systems are often constructed from components that may have been tested separately. Components might be reused in systems. Once these components are used, the system has to be tested for how it reacts to failures occuring in the component. For more information please see: http://www.cs.purdue.edu/homes/ghosh/html/project.html