Chapter - 5: Data Flow Testing
Chapter - 5: Data Flow Testing
u d
U D A
d,k
k,u,d
u
Static Vs Dynamic
Anomaly Detection
Static analysis is analysis done on source code
without actually executing it.
For example: source code syntax error detection is
the static analysis result.
Dynamic analysis is done on the fly as the
program is being executed and is based on
intermediate values that result from the
program’s execution.
For example: a division by zero warning is the
dynamic result.
Static Vs Dynamic
Anomaly Detection-continued.,
If a problem, such as a data flow anomaly, can be
detected by static analysis methods, then it doesnot
belongs in testing- it belongs in the language
processor.
There is actually a lot more static analysis for data flow
analysis for data flow anomalies going on in current
language processors.
For example, language processors which force variable
declarations can detect (–u) and (ku) anomalies.
But still there are many things for which current
notions of static analysis are inadequate.
Why isn’t static analysis
enough?
there are many things for which current notions of
static analysis are inadequate they are:
Dead Variables.
Arrays.
Records and pointers.
Dynamic subroutine or function name in a call.
False anomalies.
Recoverable anomalies and alternate state graphs.
Concurrency, interrupts, system issues.
Although static analysis methods have limits, they are
worth using and a continuing trend in language
processor design has been better static analysis
methods for data flow anomaly detection.
The Data Flow Model
The data flow model is based on the program’s
control flow graph.
Here we annotate each link with symbols or
sequences of symbols that denote the sequence
of data operations on that link with respect to the
variable of interest. Such annotations are called
link weights.
the control flow graph structure is same for every
variable: it is the weights that change.
Components of the Model
Here are the modeling rules:
To every statement there is a node, whose name is unique.
Every node has at least one outlink and at least one inlink
except for exit nodes and entry nodes.
Exit nodes are dummy nodes placed at the outgoing arrow
heads of exit statements to complete the graph. The entry
nodes are dummy nodes placed at entry statements for the
same reason.
The outlink of simple statements are weighted by the
proper sequence of data flow actions for that statement.
Predicate nodes are weighted with the p- use on every
outlink, appropriate to that outlink.
Components of the Model-
continued.,
Every sequence of simple statements can be
replaced by a pair of nodes that has, as weights
on the link between them, the concatenation of
link weights.
If there are several data flow actions on a given
link for a given variable, then the weight of the
link is denoted by the sequence of actions on
that link for that variable.
Conversely, a link with several data flow actions
on it can be replaced by a succession of
equivalent links, each of which has at most one
data flow action for any variable.
Example-Data Flow Graph
CODE (PDL) Z:=Z-1
INPUT X,Y IF Z=0 GOTO ELL
Z:=X+Y U:=U+1
V:=X-Y NEXT U
IF Z>0 GOTO SAM V(U-1) :=V(U+1)+U(V-1)
JOE: Z:=Z-1 ELL: V(U+U(V)) :=U+V
SAM: Z:=Z+V IF U=V GOTO JOE
FOR U=0 TO Z IF U>V THEN U:=Z
V(U),U(V) :=(Z+V)*U Z:=U
IF V(U)=0 GOTO JOE END
Un annotated
Control Flow Graph
joe Sam
begin loop V(u)=0
1 3 4 5 6 7
z>0
U=z
2 13 12 11 10 9 8
end U>v U=v ell
Control Flow Graph Annotated
for X and Y Data Flows
joe Sam
begin dcc loop V(u)=0
1 3 4 5 6 7
z>0
U=z
2 13 12 11 10 9 8
end U>v U=v ell Z=0
Control Flow Graph Annotated
for Z Data Flow
joe Sam
begin p V(u)=0
loop
d cd
1 3 4 5 6 7
p cd cc cd
z>0
p
c p U=z p
2 13 12 11 10 9 8
c U>v U=v
end ell Z=0
p
Data Flow Testing Strategies
Data Flow Testing Strategies are structural
strategies.
Data Flow Testing Strategies require data flow
link weights.
Data Flow Testing Strategies are based on
selecting test path segments (sub paths) that
satisfy some characteristic of data flows for all
data objects.
For example, all sub paths that contain a d.
Definition Clear Path Segment
Definition Clear Path Segment with respect
to a variable X is a connected sequence of
links such that X is defined on the first link
and not redefined or killed on any sub
sequent link of that path segment.
Loop Free Path Segment
A loop free path segment is a path
segment for which every node is visited
at most once.
A simple path segment
A simple path segment is a path
segment in which at most one node is
visited twice.
du path
A du path from node i to k is a path
segment such that if the last link has a
computational use of X, then the path is
simple and definition clear; if the
penultimate node is j-that is, the path is
(i.p,q,……r,s,t,j,k) and link (j,k)has a
predicate use- then the path from i to j
is both loop free and definition clear.
The data flow testing strategies
Various types of data flow testing strategies in
decreasing order of their effectiveness are:
All du paths Strategy
All du paths
All uses
all defs
All c uses
All p uses
Branch
statement