Module-05 (PPT) of ST
Module-05 (PPT) of ST
Development complexity.
Random Prioritization:
Optimal Prioritization:
Total statement coverage prioritization:
Additional statement coverage prioritization:
Total branch coverage prioritization:
Total branch coverage prioritization:
Total fault-exposing potential prioritization:
Additional fault-exposing potential
Prioritization:
Challenges in Test Prioritization:
Step 1: Given P and test set T, find the execution trace of P for each test in T.
Step 2: Extract test vectors from the execution traces for each node in the
CFG of P
Step 3: Construct syntax trees for each node in the CFGs of P and P’. This step
can be executed while constructing the CFGs of P and P’.
Step 4: Traverse the CFGs and determine the a subset of T appropriate for
regression testing of P’.
Execution Trace [1]
Let Tno be the set of all valid tests for P’. Thus, Tno contains only
tests valid for P’. It is obtained by discarding all tests that have
become obsolete for some reason.
Execution Trace [2]
An execution trace of program P for some test t in Tno is the sequence of nodes in
G traversed when P is executed against t. As an example, consider the following
program.
Execution Trace [3]
Now consider the following set of three tests and the corresponding
trace.
Test vector
A test vector for node n, denoted by test(n), is the set of tests that
traverse node n in the CFG. For program P we obtain the
following test vectors.
Syntax trees
Given the execution traces and the CFGs for P and P’, the
following three steps are executed to obtain a subset T’ of T
for regression testing of P’.
Test selection [2]
Think:
Waterfall Spin-offs
⚫ There are three mainline derivatives of the waterfall model:
incremental development, evolutionary development, and the
Spiral model.
Specification Based Models
An Object-Oriented Life Cycle Model
Formulations of the SATM System
We can dispense with the big bang approach most easily: in this
view of integration, all the units are compiled together and tested
at once.
The drawback to this is that when (not if!) a failure is observed,
there are few clues to help isolate the location(s) of the fault.
Contd,…
Top-Down Integration
Top-down integration begins with the main program (the root of
the tree). Any lower level unit that is called by the main program
appears as a “stub”, where stubs are pieces of throw-away code
that emulate a called unit.
⚫ first step would be to develop stubs for all the units called by the
main program: Watch Card Slot, Control Card Roller, Screen
Driver, Validate Card, Validate PIN, Manage Transaction
Contd,…
Contd,…
Bottom-up Integration
⚫ Bottom-up integration is a “mirror image” to the top-down order,
with the difference that stubs are replaced by driver modules that
emulate units at the next level up in the tree.
⚫ In bottom-up integration, we start with the leaves of the
decomposition tree (units like ControlDoor and DispenseCash),
and test them with specially coded drivers.
Sandwich Integration
Sandwich integration is a combination of top-down and bottom-
up integration. If we think about it in terms of the decomposition
tree, we are really just doing big bang integration on a sub-tree.
Contd,…
Sandwich Integration
Call Graph Based Integration