Model-based testing of software and systems: recent advances and challenges