The test harness
In
addition to developing the test cases, supporting code must be developed to
exercise each unit and to connect it to the outside world. Since the tester is
considering a stand-alone function/procedure/class, rather than a complete
system, code will be needed to call the target unit, and also to represent
modules that are called by the target unit. This code called the test harness,
is developed especially for test and is in addition to the code that composes
the system under development. The role is of the test harness is shown in
Figure 6.5 and it is defined as follows:
The auxiliary code developed to support testing of
units and components is called a test harness. The harness consists of drivers
that call the target code and stubs that represent modules it calls.
The
development of drivers and stubs requires testing resources. The drivers and
stubs must be
tested
themselves to insure they are working properly and that they are reusable for
subsequent releases of the software. Drivers and stubs can be developed at
several levels of functionality. For example, a driver could have the following
options and combinations of options:
(i) call the
target unit;
(ii) do 1, and
pass inputs parameters from a table;
(iii)do 1, 2,
and display parameters;
(iv)do 1, 2, 3 and display results
(output parameters).
The stubs
could also exhibit different levels of functionality. For example a stub could:
(i) display a
message that it has been called by the target unit;
(ii) do 1, and
display any input parameters passed from the target unit;
(iii)do 1, 2,
and pass back a result from a table;
(iv)do 1, 2, 3, and display result
from table.
Drivers
and stubs as shown in Figure 6.5 are developed as procedures and functions for
traditional imperative-language based systems. For object-oriented systems,
developing drivers and stubs often means the design and implementation of
special classes to perform the required testing tasks. The test harness itself
may be a hierarchy of classes. For example, in Figure 6.5 the driver for a
procedural system may be designed as a single procedure or main module to call
the unit under test; however, in an object-oriented system it may consist of
several test classes to emulate all the classes that call for services in the
class under test. Researchers such as Rangaraajan and Chen have developed tools
that generate test cases using several different approaches, and classes
of test
harness objects to test object-oriented code .
The test
planner must realize that, the higher the degree of functionally for the
harness, the more resources it will require to design, implement, and test.
Developers/testers will have to decide
depending
on the nature of the code under test, just how complex the test harness needs
to be. Test harnesses for individual classes tend to be more complex than those
needed for individual procedures and functions since the items being tested are
more complex and there are more interactions to consider.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.