Data flow coverage criteria
Download
Report
Transcript Data flow coverage criteria
Systems V & V, Quality
and Standards
Dr Sita Ramakrishnan
School CSSE
Monash University
1
Test Coverage Criteria
based on Data Flow Mechanisms
Topics
Program Structure
Categories of Data Flow Coverage Criteria
Data Flow Testing
References:
Peters J F and Pedrycz W,Software Engineering, An Engineering Approach, McGraW
Hill, 2000, (Ch.12, Software Testing, pp.437-500)
Horgan J.R., London S., Lyu M.R. Achieving software quality with testing coverage
measures. IEEE Computer, Sep. 1994: 60-69
Other references (books included in the slides, conference & journal papers) given in
the handout for the unit
© S Ramakrishnan
2
Program Structure
Program consists of blocks
Block consists of a sequence of statements
When a first statement is executed, the following
statements are executed in the given order
Can be represented by a flow graph
© S Ramakrishnan
3
Testing Coverage
Have looked at testing techniques such as:
Black-box testing which includes categories such as:
• Syntax-driven driven testing – where specification is described
by a certain grammar. -> Generate test cases such that each
production rule is applied/tested at least once
• Decision-table based testing – may suit if requirements have
been written as if-then rules
• Cause-effect graphs in functional testing – addresses
limitations of decision table where all inputs are treated
separately although real world problem demand another
approach. Boundary-value analysis & equivalence class
partition also assume the independence of input
Structural testing – includes basic categories such as
statement, branch & path coverage tests
© S Ramakrishnan
4
Testing Coverage
More on Black-box Testing with Cause-Effect Graphs:
Cause-effect graphs capture relationships
between specific combination of inputs (causes)
and outputs (effects).
• Helps avoid combinatorial explosion associated
with decision table approach
Causes and Effects represented as nodes of a
cause-effect graph – includes intermediate
nodes to link cause & effects in forming logical
expressions
© S Ramakrishnan
5
Testing Coverage –
Cause-Effect Graphs
Eg. of an ATM transaction system. Causes and Effected listed as:
Causes: C1 : Command is credit, C2: Command is Debit
C3: Account No. is valid, C4: Trans. Amount is valid
Effects: E1: Print “invalid command”, E2: “invalid acct no”
E3: “debit no. not valid”, E4 & E5: debit & credit a/c respectively
or
C1
C2
C3
C4
and
E1
and
E2
and
and
E3
Cause-effect graph
© S Ramakrishnan
E4
E5
6
Testing Coverage –
Cause-Effect Graphs
4 input (Cause) nodes & 5 output (Effect) nodes
the node in between input (C ) & output (E ) realise
“and” or “or” operators
Processing node used in cause-effect graph – and,
or, negation, and with processing node,
“and” - effect occurs if all inputs are true
“or” - effect occurs if at least one input is true
“negation” – effect occurs if inputs are false
Cause-Effect graph helps determine the
corresponding test cases
© S Ramakrishnan
7
Testing Coverage –
Cause-Effect Graphs
Eg. To determine test cases from C-E Graph
Want to find out the causes for E3 say given:
C2
C3
C4
and
C1 C2 C3 C4
E3
X
1
1 0
X= (don’t care condition)
1 = true, 0 = false
E3 does not depend on
Cause (C1)
© S Ramakrishnan
8
Test coverage based on
Data Flow Coverage Criteria
Why data flow orientation in testing?
Data structures and their usage are essential elements of
any code and hence need to be taken into account when
looking at software testing
Main categories of data flow coverage criteria
basic block
all-use
c-use
d-use
du-path
© S Ramakrishnan
9
Test coverage based on
Data Flow Coverage Criteria
In a piece of Java code:
sum = 0;
prod = 0;
i = 1;
while (i <= n)
{ sum+ = i;
prod* = i;
i++
}
if (k == 0) print_results1;
Eg
Definitions shown in blue
->
->
basic block shown in purple
prod* = i an eg of “use”
i++ also an eg of “use”
if “use” appears in a computational
expression, the pair is c-use,
if in predicate, resulting pair is p-use
if (k == 1) compute;
© S Ramakrishnan
10
Test coverage based on
Data Flow Coverage Criteria
Definition – value stored in a memory location
Defined (d) – data structure is defined, created or initialized
when it is given a valid state
Use – value fetched from a memory location
C-use – used in computation or output statement &
- associated with each node
P-use – used in a predicate& associated with each edge
All-uses
C-uses
P-uses
Decision
Basic Block
Hierarchy of different dataflow
coverage criteria
© S Ramakrishnan
11
Test coverage based on
Data Flow Coverage Criteria
Def-use Graph
Obtained from the flow graph
Associate with each node the sets
• C-use (i) - variables which have global c-uses in block i
• Def (i) - variables with global definitions in block i
Associate with each edge (i,j)
•
P-use (i,j) – variables which have p-uses on edge (i,j)
Define sets of nodes
•
•
dpu(x,i) - edges (j,k) such that x Є p-use(j,k) and there is a
def-clear path w.r.t. x from i to (j,k)
dcu(x,i) - nodes j such that x Є c-use(j) and there is a defclear path w.r.t. x from i to j
© S Ramakrishnan
12
Test coverage based on
Data Flow Coverage Criteria
Def-use Graph Paths – Definitions
Complete path – path from entry node to exit node
Def-clear path w.r.t. x from node i to node j and
from node i to edge nm , j
a path (i, n1,n2, …nm , j) containing no definitions or
undefinitions of x in nodes n1, n2, ….n m
© S Ramakrishnan
13
Test coverage based on
Data Flow Coverage Criteria
Data flow coverage criteria –
The family of data flow testing criteria is based on requiring
that –
The test data execute definition-clear paths from each node
containing a global definition of a variable to specified nodes
containing global c-uses and edge containing p-uses of that
variable
For each variable definition, data flow testing criteria require
that
All/some definition-clear paths w.r.t. that variable from the node
containing the definition to all/some of that uses/c-uses/p-uses
reachable by some such paths be executed
© S Ramakrishnan
14
Test coverage based on
Data Flow Coverage Criteria
All-def criterion
If variable x has a global definition in node i, the all-defs
criterion requires the test data to exercise some path which
goes from i to some node or edge at which the value
assigned to x in node i is used
All-uses criterion
If variable x has a global definition in node i, the all-uses
criterion requires the test data to exercise at least one path
which goes from i to each node or edge at which the value
assigned to x in node i is used
© S Ramakrishnan
15
Test coverage based on
Data Flow Coverage Criteria
All-DU-paths criterion
If variable x has a global definition in node i, the all-DUpaths criterion requires the test data to exercise all paths
which go from i to each node and edge at which the value
assigned to x in node i is used
Other DF testing criteria
All-p-uses
All-c-uses
All-p-uses/some-c-uses
All-c-uses/some-p-uses
© S Ramakrishnan
16
Test coverage based on
Data Flow Coverage Criteria
Hierarchy of data flow coverage criteria
all-paths
all-du-paths
all-uses
all-c-uses-some-p-uses
all-c-uses
all-defs
all-p-uses-some-c-uses
all-p-uses
all-edges
all-nodes
© S Ramakrishnan
17
Test coverage based on
Data Flow Coverage Criteria
Interprocedural Data Flow Testing
•
•
•
Most df testing methods deal with dependencies
that exist within a procedure – intra procedural aspect
Data dependencies may also exist between procedures
Requires analysis of flow of data across these
procedure/module boundaries
© S Ramakrishnan
18
Test coverage based on
Data Flow Coverage Criteria
Homework: Closer look at Table 12.6 Coverage
Criteria on P.479 in Peters & Pedrycz text (see
slide 1 for Reference details)
© S Ramakrishnan
19