Embedded System Context
An embedded system (Broy et al., 1998, Lazić & Velašević, 2004) is a system built for dedicated control functions. Embedded software (Lazić & Velašević, 2004; Conrad, 2004) is the software running on an embedded system. Embedded systems have become increasingly sophisticated and their software content has grown rapidly for the last years. Applications now consist of hundreds of thousands or even more lines of code. The requirements that must be fulfilled while developing embedded software are complex in comparison to the standard software. Embedded systems are often produced in large volumes and the software is difficult to be updated once the product is deployed. Embedded systems interact with real-life environment. Hybrid aspects are often expressed via mathematical formulas. In terms of software development, increased complexity of products, shortened development cycles and higher customer expectations of quality implicate the extreme importance and automation need for software testing. Software development activities in every phase are error prone, so the process of defects detection plays a crucial role. The cost of finding and fixing defects grows exponentially in the development cycle. The software testing problem is complex because of the large number of possible scenarios. The typical testing process is a human-intensive activity and, as such, it is usually unproductive and often inadequately done. Nowadays, testing is one of the weakest points of current development practices. According to the study given by Encontre (2003) 50% of embedded systems development projects are months behind schedule and only 44% of designs meet 20% of functionality and performance expectations. This happens despite the fact that approximately 50% of total development effort is spent on testing (Helmerich et al., 2005). The impact of research into test methodologies that reduce this effort is therefore very high and strongly desirable (Helmerich et al., 2005; Bouyssounouse & Sifakis, 2005).
Although a number of valuable efforts in the context of testing already exist, there is still a lot of space to improve the situation. This applies in particular, to the automation potential of the test methods. Also, a systematic, appropriately structured, repeatable and consistent test specification is still an aim to be reached. Furthermore, both abstract and concrete views should be supported so as to improve the readability, on the one hand and assure the executability of the resulting test, on the other hand. The testing method should address all aspects of a tested system – whether a mix of discrete and continuous signals, time constrained functionality or a complex configuration is considered. In order to establish a controlled and stable testing process with respect to time, budget and software quality, the software testing process must be modeled, measured and analyzed. Moreover, the existence of executable system models opens the potentials for model-based testing (MBT).