Smart test generation for an ISO 26262 certified and fully automated Back-2-Back Test
BTC EmbeddedTester provides an ISO 26262 certified and fully automated Back-2-Back Test between Simulink/TargetLink models and production code. In addition to functional test cases that may already exist, BTC EmbeddedTester allows you to also generate structural tests for full code coverage up to MC/DC. Thanks to the seamless integration with Simulink/TargetLink, BTC EmbeddedTester is able to automatically execute all test cases on any execution level such as MIL, SIL or PIL. For larger models, the inner subsystems can be handled individually without the need to modify the model, making tasks such as test generation or debugging more efficient. Besides the standard Back-2-Back Test between model and code, BTC EmbeddedTester also supports use cases such as regression testing between different model or code versions as well as the automatic validation of an upgrade to new tool versions (e.g. Matlab or TargetLink).
BTC EmbeddedTester includes all features of BTC EmbeddedTester BASE.
Smart test generation for full structural coverage
BTC EmbeddedTester allows you to automatically generate test cases (so called stimuli vectors) in order to achieve full structural coverage of your production code. This includes coverage goals like statement, decision, condition, MC/DC or domain coverage. The test generator will be able to access all input variables and calibrations, allowing it to detect issues that have not been revealed by functional test cases.
The test generation is based on so-called model checking technology. Unlike random algorithms, this technology not only guarantees that the smallest and shortest set of test cases to cover the desired objectives will be found, but it also performs a dynamic analysis showing that some objectives are unreachable. This means that the tool is able to prove that if no test can be generated, then a particular coverage goal is not reachable.
In addition to structural coverage goals, BTC EmbeddedTester also analyzes several robustness goals. This allows you to prove that critical situations such as division by zero or range violations can never occur – saving a significant amount of time in the review process. If BTC EmbeddedTester detects that such a goal is reachable, it provides you with a corresponding stimuli vector that can be used for debugging.
Even more flexibility: "User-defined Coverage Goals" Add-on
In addition to the pre-defined coverage metrics, it is possible to create individual coverage goals using the "User-defined Coverage Goals" Add-on. With this, it is very easy to describe certain system states e.g. a specific combination of values for output variables. The definition of these coverage goals is done inside an intuitive editor which has access to all available interface variables of the system. After creating the intended coverage metrics, the tool will automatically analyze and document whether or not existing test cases cover these goals.
If this is not the case, the integrated test case generation can be used to automatically create test cases which fulfill these conditions. As for structural coverage goals, the engines will also provide complete mathematical proofs in cases a user-defined coverage goal is unreachable.
Test Automation and Migration Suite Add-On
With the BTC EmbeddedTester Test Automation Add-On, you are able to automate your test workflow across multiple models. An intuitive graphical user interface allows you to configure the relevant test steps. The test workflow can be triggered by a script or by tools such as Jenkins. When the tests are finished, a comprehensive HTML report is generated, providing a clear overview of the results as well as hyperlinks to the integrated detailed reports.
The Test Automation add-on also includes the BTC EmbeddedTester Migration Suite, which allows you to perform a fully automatic regression test between different Matlab and TargetLink versions. This makes it easy to document that the change of a tool version in a particular project does not influence the behavior of software components on model and code level.