Testing on Target: Concepts and Experiences

Author: Jan Peleska and M. Oliver Möller

In this presentation we introduce a method and tool support for executing test logic partly on the embedded target hardware and partly on a separated host PC. The modifications of the target are minimally invasive, such that they preserve the integrity of the target with respect to time and memory resources to a large extent. The data-intensive part of the test is performed on the host PC, where time and memory resources can be inexpensively scaled up to meet demands. Technically this introduces a small new entity to the target, which acts as a test agent. The test agent communicates to the PC host via any available bidirectional channel (e.g. serial line or ethernet). The agent allows to inject stimulations by manipulating on-target data, stubbing target-side functions, or making explicit use of a library of driver API. Test data generation--including stub behavior--and verdict computation are performed on the host PC. Compared to classical hardware-in-the-loop (HIL) testing, our method allows a fine-granular and low-level data manipulation. For instance, error conditions of hardware interfaces can be simulated on software level, though the software under test executes on the original target hardware. Moreover, library and driver layers can be exhaustively tested in their real-time hardware environment. The method is based on a configuration syntax, which the test designer uses to specify the data flow between host and target. If a small number of prerequisites are met, the test environment automates the joint host/target configuration and build process. We outline solutions to issues like pointer treatment and endianess conversion which arise in this context. We report experiences with this technology from two test projects in the avionics industry, where software development is subject to certification according to Do178B. The first project concerns the software part of a communication library, which connects three separated CPU boards of a A380 cabin controller. The second project addresses a Posix-style operation system layer executing as one partition of a secure embedded platform, which allows multiple operating systems and applications to run simultaneously.

PDF file (880KB)