A State-Based Testing Approach Providing Data Flow Coverage in Object-Oriented Class Testing