Why is Software Testing for Embedded Systems Difficult?
Software testing on target hardware presents a series of problems for engineers:
- How to download tests to the target and retrieve test results
- How to accumulate tests into suites that can be re-run automatically
- How to minimize the manual steps involved in the process
- How to minimize memory over-head during testing
These are often problems that are not easy to solve. And as projects increase in size, from a headcount perspective as well as a line of code perspective, knowledge of the details of how the target hardware works is limited to a small number of engineers. Most of the software engineers on the project will not know the intricacies of how to set up the target to enable test execution.
What code are you testing?
One solution to this problem is to test the software application natively. For application source code that does not have hardware or cross-compiler dependencies, it might be possible to build and execute tests using a native compiler. This will certainly uncover a number of logic errors, but it will not prove that the final application, when built with a different compiler and executed on a different processor, will behave properly. In fact, this is why the testing standards for safety critical applications mandate testing in an environment as close to the final product as possible. This means using the same build tools and the same target processor in your test environment as in your production environment.
Unless you are testing the same object code that will be deployed in your embedded device, you cannot be sure that defects will not be introduced by issues such as compiler bugs, data alignment, and endianness.
Push-button testing for embedded targets
The point of VectorCAST/RSP is to make testing a software application on an embedded target as easy as it is to test on Windows with VisualStudio. VectorCAST/RSP provides an abstraction for the complexities of target testing, so that you can easily build and run tests regardless of the nuances of your build tools, and target hardware. By using VectorCAST/RSP, in conjunction with VectorCAST/C++ or VectorCAST/Ada, engineers can focus on building good module tests and not worry about the details of how to get them to run on the target. VectorCAST/RSP has been successfully deployed on hundreds of combinations of compilers, linkers, run-time environments, and target hardware.
Boosting Software Quality using Target Test Automation
VectorCAST/RSP integrates with VectorCAST/C++ and VectorCAST/Ada to provide an interface to the target compiler and the communication layer between the host system and the embedded target. This enables test cases to be downloaded to the target and test results to be captured back to the host system all with the push of a button.