A multi-layered complex system, where hardware and software elements interact with each other, many component can cause system failures. In addition finding the root cause in these systems can be difficult and time-consuming. However these failures are unacceptable in a safety-critical system, like in a railway system, where human life can be in a risk. Nowadays the most common verification method to avoid these situations is testing.
In the department of Measurement and Information Systems, the students are developing a railway demonstrator system, which simulates a safety-critical railway system. Aim of this project is to demonstrate the model driven development and model verification techniques. Because of the frequently changed software and hardware components all the test implementations became outdated and were hardly maintainable. In addition there are several custom hardware and software units in the system, which need to be tested. Therefore a systematic, detailed test design is required to verify the demonstrator.
The aim of my thesis is to create a test framework to detect failures and bugs in the demonstrator system, which is maintainable and covers the safety-critical aspects. First the system requirements have to be defined and then the demonstrator architecture must be assigned in details. Next step is to analyze the test design possibilities and approaches for such a multi-layered system. The final step is to create a test framework which is capable of safety-critical error detection in the demonstrator.
During the demonstrator architecture investigation, it is inevitable to get to know several hardware (like Rapsberry PI, BeagleBone Black, Arduino) and software technologies. Therefore the test strategy must cover different aspects in several layers to verify each component functionalities separately. Following a standard test documentation approach, I have designed and implemented test cases for custom software component for unit, integration and system level also.
Finally the implemented tests were integrated into the demonstrator system with some code restructuring of several components. Furthermore the system-level test cases were defined and can be a useful strategy before any system demonstration.