Bottom-up Testing
The next step is to examine the bottom-up incremental testing
strategy. For the most part, bottom-up testing is the opposite of
top-down testing; the advantages of top-down testing become the
disadvantages of bottom-up testing, and the disadvantages of topdown
testing become the advantages of bottom-up testing. Because
of this, the discussion of bottom-up testing is shorter.
The bottom-up strategy begins with the terminal
modules in the
program (the modules that do not call other modules). After these
modules have been tested, again there is no best procedure for
selecting
the next module to be incrementally tested; the only rule is that,
to be eligible to be the next module, all of the module’s subordinate
modules (the modules it calls) must have been tested previously
Returning to Figure 2 at page 4, the first
step is to test some or all of modules E, J, G, K, L, and
I, either serially or in parallel. To do so, each module needs
a special driver module: a module that contains wiredin test
inputs, calls the module being tested, and displays the outputs
(or compares the actual outputs with the expected outputs).
Unlike the situation with stubs, multiple versions of a driver
are not needed, since the driver module can iteratively call
the module being tested. In most cases, driver modules are
easier to produce than stub modules.
As was the case earlier, a factor influencing
the sequence of testing is the critical nature of the modules.
If we decide that modules D and F are most critical, an intermediate
state of the bottom-up incremental test might be that of Figure
4. The next steps might be to test E and then test B, combining
B with the previously tested modules E, F, and J.
The problems associated with the impossibility or difficulty of creating
all test situations in the top-down approach do not exist here. If
you think of a driver module as a test probe, the probe is being placed
directly on the module being tested; there are no intervening modules
to worry about. Examining other problems associated with the
top-down approach, you can’t make the unwise decision to overlap
design and testing, since the bottom-up test cannot begin until the
bottom of the program has been designed. Also, the problem of not
completing the test of a module before starting another, because of
the difficulty of encoding test data in versions of a stub, does not exist
when using bottom-up testing.
|