Software-in-the-loop testing