In our paper we present a virtual test environment for self-optimizing systems based on mutant based testing to validate user tasks of a real-time operating system. This allows the efficient validation of the code coverage of the test cases and therefore helps to detect errors in order to improving the reliability of the system software.
Technically we are able to run and test the software on both systems. By writing application software and setting up the virtual test environment properly, we define our test cases. To validate the code coverage for our test cases, we use the approach of mutant based testing. By running this mutated code on our virtual prototype in the virtual test environment, we are able to efficiently validate the code coverage and are able to detect bugs in the application code or detect dead code that is not executed. Finding non-executing code leads to redefinition of our test cases by either changing the test environment or the application code in the case of dead code.
We implemented the virtual test environment on top of the third party low cost VR system Unity 3D, which is frequently used in entertainment and education. We demonstrate our concepts by the example of our BeBot robot vehicles. The implementation is based on our self-optimizing real-time operating system ORCOS and we used the tool CERTITUDE(TM) for generating the mutations in our application code. Our BeBot virtual prototype in our virtual test environment implements the same low-level interface to the underlying hardware as the real BeBot. This allows a redirection of commands in ORCOS to either the real or the virtual BeBot in order to provide a VR based platform for early software development as well as ensures comparable conditions under both environments.
Our example applies a virtual BeBot that drives through a labyrinth utilizing its IR sensors for navigation. The mutant based testing checks if all situations implemented by the software to navigate through the labyrinth are covered by our tests.