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
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
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)