Reactis® for C, an automated test-generation tool, may be used to find bugs in C programs.
It consists of three primary components: Tester, Simulator, and Validator.
Tester | Simulator | Validator |
---|---|---|
It automatically generates test cases that stress a program, often discovering run-time errors. The generated tests aim to maximize coverage with respect to a number of test coverage metrics including Statement, Decision, Condition and Modified Condition/Decision Coverage (MC/DC). | It is a simulation environment which supports interactive execution and debugging of C programs and graphical display of test coverage results. | It enables an engineer to formalize application requirements (as assertions or coverage targets) and perform an automatic check for requirement violations. Validator performs these checks by thoroughly simulating the program with the goal of violating assertions and covering targets. When a runtime error or assertion failure occurs, Validator returns a test which produces a concrete execution sequence that leads to the error, which greatly facilitates the diagnosis and repair of the underlying software bug. |
The Reactis for C tool suite improve the quality of your C code and reduce development costs in several ways. For example:
- Finding and Fixing Runtime Errors. Reactis for C immediately stops execution when a runtime error occurs, making it easy to find and fix.
Whenever Reactis for C is simulating C code in Simulator or generating tests in Tester, it is also performing a multitude of checks for runtime errors. The result is a powerful tool to find, diagnose, and fix a variety of runtime errors in your C code. The runtime errors detected by Reactis for C include: - Overflow Numeric calculations which produce a result too large to represent
- Divide by Zero Dividing a numeric value by zero
- Invalid Shift Shifting an integer value by an amount which produces an undefined result according to the C standard
- Uninitialized Data Access Accessing memory before the memory has been initialized, so that the result of the access is undefined under C semantics
- Regression Testing. The automatic test-generation and execution offered by Reactis for C enables engineers to easily check whether a program conforms to the behavior of a previous version. A crucial aspect of the tests generated by Reactis Tester is that they include all program outputs as well as inputs. Hence these tests contain all the information needed to ensure that a revised version of a program conforms to a previous version.
- Synergy with Reactis for Simulink. Combining Reactis for C with Reactis for Simulink in a model-based development process produces synergistic benefits.
Engineers performing model-based design using Simulink®/ Stateflow® as a design tool and C as an implementation language can benefit significantly from using Reactis for C in combination with its sibling product, Reactis for Simulink.
Synergistic benefits occur when test suites are shared between both versions of Reactis. There are two basic use-case scenarios