A novel model-based testing approach for software product lines