The lecture aims to provide a basic knowledge on testing embedded systems. Thereby, we focus on software systems, however consider also hardware and mechatronic aspects. Based on the theoretical basics of testing, concrete applications of testing are provided (for example testing of Electronic Control Units (ECU) in the automotive engineering). Furthermore, state of the art tools as well as technologies are explained and demonstrated. Moreover, recent and previously published research approaches in this discipline are discussed. The contents of this course are very practical and can be used successfully by the students also in other domains, e.g. in standard software development.
Basic principles and terms / definitions of testing: Why are software tests in the development of embedded systems of such importance? Major quality assurance arrangements are outlined and illustrated with typical studies. In this context, a detailed overview of analytical quality assurance is given.
Test phases and process: The main development and testing phase models are described. How to arrange a testing process, what kind of test activities are present and how are they characterized?
Dynamic testing: Different approaches to the systematic test case generation/derivation for dynamic testing are presented. Definition, metrics and empirical values for the amount of tests and test coverage are given.
Static testing: Different analytical quality assurance procedures are described in detail and related to each other. The theory of static testing is explained. All major static testing methods e.g. formal reviews, static analysis, symbolic execution, model checking, formal verification and simulation are characterized, related to each another and partially explained with examples.
Evolutionary testing: After discussion of the theoretical principles of evolutionary algorithms, different evolutionary based testing methods that are used in automotive engineering are explained and practical examples shown. Specifically, the evolutionary test of real-time behavior, the evolutionary structural software test, the evolutionary functional test and the evolutionary safety test are outlined.
Model-based testing: Current research and development approaches, e.g. Time Partition Testing or automatic model-based test case generation, are presented and partly explained on practical examples.
Test of real-time systems: First an introduction to the characteristics of real-time systems is given. In the next step we describe the details of planning real-time systems (including design for testability) and explain the structure and operation of real-time test programs. The current state of the art is described and an outlook on possible future research disciplines is given. As a special real-time test system, specific applications of hardware-in-the-loop technology in research are outlined, e.g. test of diver assistance systems in automotive engineering.