This document discusses slice based testing and object oriented testing. It defines a program slice as a subset of a program. It describes the origins of static and dynamic slicing techniques. Static slicing uses static program information while dynamic slicing uses execution traces. The document also discusses different levels of object oriented testing like class/unit testing, interclass/integration testing, and system testing. It provides details on the class testing process and developing test cases for classes. Finally, it outlines some issues in object oriented testing like additional techniques needed to test dependencies and difficulties testing states and polymorphism.