Code coverage analysis… what is it and why is it vital when qualifying libraries? And why have Solid Sands and Rapita Systems got together to form an ‘A’ Team that will improve code coverage analysis on parts of the C++ standard library code that are traditionally invisible to coverage analysis tools?
First Encounters
The teams from Rapita Systems and Solid Sands first connected at the premises of a joint customer looking for large-scale coverage analysis for the C++ standard library implementation. From that moment, they started a strategic partnership that will allow them to maximize what they can offer in terms of safety-critical applications.
What does Rapita Systems bring to the party?
Rapita Systems develops on-target embedded verification software solutions for customers in the avionics and automotive electronics industries. They help to reduce the cost of measuring, optimizing, and verifying the timing performance and test effectiveness of critical real-time embedded systems for single and multi-core systems. The Rapita Verification Suite (RVS) minimizes the effort needed to verify critical embedded software for functional behavior (requirements-based testing), structural coverage and timing behavior.
RVS’s unit, integration and system testing solution, RapiTest, helps engineers write and run requirements-based tests easily on host or target. RapiTest features easy-to-write and easy-to-review yet feature-rich test formats, as well as the ability to create multithreaded tests and test code elements such as generics and private types without having to write source code. The company’s RapiCover tool provides the means to develop large-scale coverage analysis for the C++ standard library.
... and Solid Sands?
Solid Sands’ raison d'être is to inject quality into C and C++. They do this by improving the quality of C and C++ compilers, libraries and analysis tools and enabling their safe and secure use. Through the extremely high quality level of its test suites, Solid Sands makes sure it remains at the forefront of software testing and qualification to help users comply with functional safety standards.
The company knows that analyzing code coverage is a significant challenge because the C++ standard library code has a unique structure. For example, not all analysis tools out there can trace coverage results back to the original library header file, so it’s not possible to see the library coverage of an entire test suite at a glance, only on a test-by-test basis. Also, Solid Sands understands that some features of the C++ language just can’t be handled by any stand-alone analysis tool, so compiler-integrated coverage analysis tools are the way forward.
Solid Sands is the first organization to attempt large-scale coverage analysis for the C++ standard library. This is challenging because significant parts of the C++ standard library are implemented by code evaluated at compile time. This essential feature of C++ aims to exchange run-time overhead for safety and speed of compile-time evaluation. However, this tends to make it harder to perform code coverage analysis because such analysis is based on recording run-time execution effects.
Two heads are better ...
The collaboration between Rapita Systems and Solid Sands will prove invaluable in developing and delivering solutions in this area. For example, together they will explore how the RapiCover tool can collect coverage of compile-time code to support the development of solutions that meet customers’ specific verification needs.
By combining their expertise, this newly created 'A' Team is in a prime position to bring qualification of the C++ standard library for functional safety applications just an arm's reach away.