Effective Testing Strategies for Object-Oriented Software