System Testing for C

What does embedded software testing at the system level focus on? It focuses on the interaction between two or more threads, tasks, processes, and subsystems. In this case, the communication mechanism is provided by a C language messaging API, and the system-under-test is stimulated by stubbed virtual actors.

As a tester, you have three primary interests at this point:

  • does the system-under-test respond to the input signal as designed

  • does the system-under-test respond to the input signal quickly enough

  • can the system-under-test handle various loads that accurately reflect a working environment

The system testing feature for C-based messaging APIs enables system level testing. This is achievable because Test Embedded can define virtual actor behavior - or, using Test Embedded terminology - virtual tester (VT) behavior. There are two ways to define VT behavior:

  • use the system testing test script API to define virtual tester actions

  • use a probing technology to monitor system execution, recording the actions of system actors so that they can be played back one or more times simultaneously

The output virtual tester scripts not only define the message content sent to the system-under-test, but also define tests for the messages subsequently received - tests in which success or failure is based on message content, time-of-response, or both.

Once the virtual tester scripts are created, the system test deployment scheduler is used to configure the launch of one or multiple VT instances, including the machines upon which the deployment should occur (virtual testers can be executed on multiple machines, remotely, during a single test run). The resulting report consolidates all interactions, highlighting errors, while a runtime tracing diagram graphically displays system interactions. (Note how the ability to launch multiple, concurrent virtual testers lets you generate a load on the system under test, thereby enabling load and stress testing of the target system.)