In the case of critical systems it is important to make sure of the correct functioning of the system. Although we cannot be sure about that at one hundred percent, however, there are techniques, which we can use to reduce the likelihood of that the system contains faults. Testing is one of the most popular among these techniques.
Usually these critical systems are complex, and contain several components, making it necessary to test them at different levels. These test levels can be the component, integration and system tests. In the case of the component test, we want to make sure of correct functioning of a separated unit. At the integration test level we inspect the cooperation of more components, while at the system test level we take a look at the whole system.
I tested a railway demonstrator system’s safety logic at different test levels. This demonstrator is a railway model, which presents the modelling, development and checking of critical systems. The safety logic recognizes the dangerous situation (which may lead to collision) by the position of the trains, and can stop these trains if necessary.
I noticed that a subset of these situations are independent from the test levels, which means that the same situations are dangerous in the case of component and integration tests. This provides opportunity to create a unified description, which can be used to derive tests from.
In my thesis I present the creation of a method, which is applicable to generate different tests from the description. I used this technique to test the railway demonstrator system. I publish the results of these tests. To implement the method I had to find the common parts of the tests, and set up the unified description. Furthermore I needed a component to map the description to the concrete test levels.
I followed the above mentioned steps to achieve my goal. I defined the common parts, which I used to create my domain-specific language. This is convenient to describe situations from the railway specialty. I designed the test cases, used for testing the safety logic. Then I generated the code, which could be run by code generation. After executing the tests I could evaluate the state of the railway demonstrator system.