Component Testing for Ada

When speaking of Ada programs, the term "component testing" - also sometimes referred to as "unit testing" - applies to the testing of Ada functions and procedures. A function or procedure is passed a possible set of inputs, and the output for each set is validated to ensure accuracy. This can be done with either a single function/procedure, a group of unrelated functions or procedures, or with a sequential group of functions - i.e. one function calling another, verifying the overall or integrated, result.

Sounds simple but, unfortunately, in the embedded world its practice can be quite difficult. Why?

  • What if the function you wish to test relies on the existence of other functions that have not yet been coded?

  • How will you call the function-under-test in the first place?

  • How will you create and maintain a variety of potential inputs and associated outputs - that is, how will you make data-driven testing manageable?

  • What kind of effort and knowledge is required to run the test on your target architecture - that is, in the intended, native environment?

The component testing feature of Rational® Test RealTime for the C and Ada languages provides a means for automating and verifying the above concerns. Through source code analysis:

  • Yet-to-be coded functions and procedures are "stubbed"; in other words, these functions are created for you

  • A test driver is generated to facilitate communication between your running code and the test

  • A test harness, independent of your test, is constructed to ensure adoption of your target architecture and thus enabling in-situ test execution

Plus, thanks to a powerful test script API:

  • Define stub responses to varied input generated by the function(s) under test

  • Enable highly detailed data definitions for data-driven testing

With the assistance of the Target Deployment technology, the end result is an extensible, flexible, automated testing tool for component and integration testing.