The chapter is concerned with finding the root cause of problems, not just the symptoms. This is in contrast with most testing efforts, which focus on exposing symptoms but don't provide any formal help in locating the root cause of the problems. This chapter also focuses on systematic techniques as opposed to ad hoc or luck-based debugging. The basic idea is to bury various checks inside the objects so that the objects end up checking their own work; thus the notion of self-testing objects. |