Testing is the formal activity directed to verify the complete implementation in the system (hardware + software) of requirement specifications. It is executed within a test plan drawn up at the beginning of the design, at the same time of requirement specifications.
Test plan is composed of a set of procedures characterized by the following fundamental features:
- Presence of precise and clear steps, comprehensible to and executable by people who did not participated in the design.
- Presence of method for recording and documenting the results.
We implement testing in the following forms:
Module software testing
- During software development, each module is characterized by its input-output function.
- Therefore, each module can be verified passing it each possible input and verifying the expected output.
- This procedure is executed with software modules designed on purpose.
- Testing is performed running software on the microcontroller that will be used in the final hardware.
- The test module, using microcontroller input-output resources, sends the outputs of the tested module to a PC, where a software tool permits to process and store the data, also for the purpose of certification.
Software integration testing
- The whole software or parts of it can be tested with methods similar to the preceding ones.
- In this case, over than what was previously described, testing assumes the following features:
- Microcontroller runs in the final configuration (memories, access times, etc.).
- Part of the final hardware can be used in order to run software in real conditions.
- Hardware testing modules can be developed, in order to pass real time inputs to software.
Further classifications of testing process, transverse to preceding ones, that can improve efficacy an coverage, are the following:
- Safety function testing.
- User function testing.
- Service function testing.