Generating Worst-case Schedules with Constraint Optimization – An Approach to Support Software Performance Testing