Unit testing provides the necessary assurance that the software is operationally correct and behaves well at boundary and edge conditions. It is conducted for low-level features and APIs. The established low-level functional requirements are used to author the test cases. Traceability of requirements to test cases ensures complete, measurable testing coverage.
For ISO 26262 projects, additional test cases may be created to achieve the appropriate level of coverage for the ASIL rating. Types of coverage include:
• 100% test coverage of all functions
• 100% test coverage of all statements
• 100% test coverage of all branch conditions
• MC/DC coverage
Pi Innovo uses scripted automation tools such as VectorCAST for testing both off- and on-target. This allows for thorough test results and provides regression testing of future changes.
Unit tests are performed with industry-standard VectorCAST tools and can be executed on both a PC and on the target processor of the ECU. On-target testing provides the additional capability to detect portability issues that could arise within the code or even from the target compilers themselves.
Integration Test Code Coverage
In addition to measuring code coverage in unit tests, Pi Innovo measures code coverage on-target during integration testing. In these tests, the code is tested in the context of a complete application rather than as an isolated unit. This ensures that low level drivers, assembly code, and other code which interacts directly with the microcontroller is properly tested.
By looking at the combination of integration test coverage and unit test coverage, a complete picture of the total code coverage is achieved. Any gaps are then analyzed and new test cases are developed to provide complete testing coverage.