Mathias Rosenthal - Fotolia

Tip

Five tools to improve embedded software testing efforts

Embedded software testing tools are useful for catching defects during unit, integration and system testing. Here are five such tools that can make testing easier.

Testing embedded systems, or closed hardware environments where users don't realize the embedded interface exists, is challenging and different because there is no user interface (UI). Instead, the tests involve digital output, interfaces, APIs, data exchange messaging or other forms of communication. It's also challenging because the testing is not within a UI; instead, it involves components not visible to the end user. Another difference from UI testing is the general difficulty of reproducing defects, especially the longer the time between when a defect is reported and the time it is fixed. The following is a list of testing tools available to assist with effective embedded software testing.

Vector Software

Vector Software provides automated tools for testing embedded software using unit and integration tests. Vector's software uses a "tool chain" method that supports a total cross-development environment that includes a cross-compiler, debug emulator, target board and real-time OS. Vector's tool includes configurable target integrations for each tool chain an embedded software code system needs. Vector Software is a leading provider of automated software testing tools for safety-critical embedded applications. The VectorCast products automate and manage unit, integrations, and system-level testing in the C, C++ and Ada programming languages. Vector Software's tools are fully qualified for use in building and testing regulated applications, a distinct advantage for organizations that create software in a regulated industry such as Class III medical devices or commercial aviation.

KlocWork

Embedded software testing tools add a layer to testing that finds defects hidden in the back-end processing that might otherwise not be found.

KlocWork Insight offers a static analysis tool for code written in C, C++, C# and Java. It automatically identifies programming bugs and security vulnerabilities. Application security vulnerabilities open attack vectors in the application that lead to denial of service or remote code execution attacks. The tool assists with security testing as well as integration and component-level testing. KlocWork Insight includes built-in testing systems for the following standards: CWE, CWE/SANS Top 25, CERT, OWASP, DISA STIG and MISRA.

KlocWork Insight runs dynamically or on the fly as code executes, so testing is executable both before and after the build is run. KlocWork claims to seamlessly integrate into all existing workflows and enable developers to fix software security defects before they are checked in.

Parasoft

The Parasoft Development Testing Platform (DTP) offers automation of continuous development activities in the IDE or on the target for testing embedded applications. The tool integrates into any embedded development environment and provides reports for statistical and historical data at the component level. Parasoft DTP includes tools to perform static analysis, code reviews, unit testing, code coverage analysis and even traceability. Like many embedded testing tools, Parasoft provides preconfigured settings on industry and regulatory standards in order to verify code compliance. Testers can customize Parasoft templates to meet a user's needs. Having a customized tool assists in building on traceability and other tracking or monitoring features required for verifying compliance for safety-critical systems.

Hitex Development Tools

Tessy, a Hitex Development Tools product, has been around a while in the embedded testing world. Tessy, which can test embedded code bases written in C and C++, is frequently used for compliance verification with multiple standards. Testers can configure Tessy to automatically execute automated tests and generate the associated test reports. Tessy includes the Classification Tree Method for test specification, and it supports test documentations in HTML, Word, and Excel.

TestPlant

The eggPlant tool from TestPlant is designed to handle nonstandard software, including embedded applications that can't be installed on the test system. Testers can use eggPlant with other systems to test against any system. It includes tests for keyboard connectivity, video, mouse hardware and ports. The tool is also useful for running system tests without the code being installed on the server or software under test. Major advantages of eggPlant are that it runs with nonstandard technology and isn't dependent on the underlying code. In other words, eggPlant can run on virtually any system. The tool includes commands that allow manual direction during test execution. The "Ask and Answer" commands let testers interact with the automated test execution, add input and designate other behavior dynamically. By allowing manual interaction, testers can use eggPlant with functionality too complex for most automated testing tools. The eggplant tool also provides a handy method of dynamically altering the test execution to allow for more creative and spontaneous testing.

Using automated tests that focus on embedded applications adds significant quality to any product by testing the back end or software that users don't see. Embedded software testing tools add a layer to testing that finds defects hidden in the back-end processing that might otherwise not be found, even with thorough unit, integration and functional testing.

Next Steps

What tools and processes are specific to testing embedded software?

Common defects in embedded software

Learn the benefits of Seapine QA Wizard Pro

Dig Deeper on Software testing tools and techniques