Specification-based testing of reactive software