Embedded systems are ubiquitous in the modern world. Such systems are used in a wide variety of applications, ranging from common consumer electronic devices to automotive and avionic applications. A property common to all embedded systems is that they interact with the physical environment, often deriving their inputs from the surrounding environment. Due to the application domains such systems are used in, their behavior is often constrained by functional (such as the input-output relationship) as well as non-functional properties (such as execution time or energy consumption). This makes the testing and validation of such systems a challenging task.