0% found this document useful (0 votes)
7 views

Ch4 ControlFlowTesting

Uploaded by

Rida Amir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Ch4 ControlFlowTesting

Uploaded by

Rida Amir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 24

Software Testing and Quality Assurance

Theory and Practice


Chapter 4
Control Flow Testing

Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 1
2

• Basic Idea
© Naik & Tripathy

• Outline of Control Flow Testing


• Control Flow Graph
• Paths in a Control Flow Graph
• Path Selection Criteria
• Generating Test Input
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
Containing Infeasible Paths
Outline of the Chapter


• Summary
Two kinds of basic program statements:
3


– Assignment statements (Ex. x = 2*y; )
© Naik & Tripathy

– Conditional statements (Ex. if(), for(), while(),


…)
• Control flow
– Successive execution of program statements is
viewed as flow of control. Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
– Conditional statements alter the default flow.
• Program path
– A program path is a sequence of statements from
entry to exit.
Basic Idea

– There can be a large number of paths in a


program.
– There is an (input, expected output) pair for each
path.
– Executing a path requires invoking the program
unit with the right test input.
– Paths are chosen by using the concepts of path
selection criteria.
• Tools: Automatically generate test inputs
from program paths.
Outline of Control Flow Testing

Figure 4.1: The process of generating test input data for control flow testing.

Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 4
Inputs to the test generation process
5


– Source code
© Naik & Tripathy

– Path selection criteria: statement, branch, …


• Generation of control flow graph (CFG)
– A CFG is a graphical representation of a program
unit.
Outline of Control Flow Testing

– Compilers are modified to produce CFGs. (You Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
can draw one by hand.)
• Selection of paths
– Enough entry/exit paths are selected to satisfy
path selection criteria.
• Generation of test input data
– Two kinds of paths
• Executable path: There exists input so that
the path is executed.
• Infeasible path: There is no input to execute
the path.
– Solve the path conditions to produce test input
for each path.
Control Flow Graph


Figure 4.2: Symbols in a control flow graph

Symbols in a CFG
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 6
Control Flow Graph

Figure 4.4: A high-level CFG representation of


openfiles().

Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 7
• Example code: ReturnAverage()
8

public static double ReturnAverage(int value[], int AS, int MIN, int MAX){
/* Function: ReturnAverage Computes the average of all those numbers in
© Naik & Tripathy

the input array in


the positive range [MIN, MAX]. The maximum size of the array is AS.
But, the array size
could be smaller than AS in which case the end of input is represented by -
999. */
int i, ti, tv, sum;
double av;
i = 0; ti = 0; tv = 0; sum = 0;
while (ti < AS && value[i] != -999) {
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
ti++;
if (value[i] >= MIN && value[i] <= MAX) {
tv++;
Control Flow Graph

sum = sum + value[i];


}
i++;
}
if (tv > 0)
av = (double)sum/tv;
else
av = (double) -999;
return (av);
}
Figure 4.6: A function to compute the average of
selected integers in an array.
Control Flow Graph

Figure 4.7: A CFG representation of ReturnAverage().

Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 9
10

• Statement coverage criterion


© Naik & Tripathy

– Statement coverage means executing individual


program statements and observing the output.
– 100% statement coverage means all the statements
1-2-3(T)-4(T)-5-6(T)-7(T)-8-9-3(F)-10(T)-12-13

have been executed at least once.


• Cover all assignment statements.
• Cover all conditional statements.
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
– Less than 100% statement coverage is unacceptable.
Path Selection Criteria

1-2-3(F)-10(F)-11-13

Table 4.4: Paths for statement coverage of the CFG of


Figure 4.7.
SCPath1

SCPath2
Branch coverage criterion
11


– A branch is an outgoing edge from a node in a
© Naik & Tripathy

CFG.
• A condition node has two outgoing branches
– corresponding to the True and False values
of the condition.
– Covering a branch means executing a path that
contains the branch. Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
– 100% branch coverage means selecting a set of
Path Selection Criteria

paths such that each branch is included on some


path.
Path Selection Criteria

Figure 4.8: The dotted arrows represent the branches not covered
by the statement covering in Table 4.4.
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 12
13 © Naik & Tripathy
1-2-3(T)-4(T)-5-6(T)-7(T)-8-9-3(F)-10(T)-12-13

• Branch coverage criterion


1-2-3(T)-4(T)-5-6(T)-7(F)-9-3(F)-10(F)-11-13

– A branch is an outgoing branch (edge) from a node in a


CFG.
1-2-3(T)-4(T)-5-6(F)-9-3(F)-10(F)-11-13

• A condition node has two outgoing branches –


Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
corresponding to the True and False values of the
condition.
Path Selection Criteria

– Covering a branch means executing a path that


contains the branch.
1-2-3(T)-4(F)-10(F)-11-13

– 100% branch coverage means selecting a set of paths


such that each branch is included on some path.
1-2-3(F)-10(F)-11-13
Table 4.5: Paths for branch coverage of the flow graph of
Figure 4.7.

BCPath 1
BCPath 2
BCPath 3
BCPath 4
BCPath 5
Predicate coverage criterion
14


– If all possible combinations of truth values of the
© Naik & Tripathy

conditions affecting a path have been explored


under some tests, then we say that predicate
coverage has been achieved.
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
Path Selection Criteria
Path Selection Criteria

Figure 4.9: Partial control flow graph with (a) OR operation and (b)
AND operation.
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 15
Having identified a path, a key question is
16


how to make the path execute, if possible.
© Naik & Tripathy

– Generate input data that satisfy all the conditions


on the path.
• Key concepts in generating test input data
– Input vector
– Predicate Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
– Path condition
Generating Test Input

– Predicate interpretation
– Path predicate expression
– Generating test input from path predicate
expression
Input vector
17


– An input vector is a collection of all data entities
© Naik & Tripathy

read by the routine whose values must be fixed


prior to entering the routine.
– Members of an input vector can be as follows.
• Input arguments to the routine
• Global variables and constants
• Files
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
• Contents of registers (in Assembly language
Generating Test Input

programming)
• Network connections
• Timers
– Example: An input vector for openfiles() consists
of individual presence or absence of the files
“files1,” “file2,” and “file3.”
– Example: The input vector of ReturnAverega()
shown in Figure 4.6 is <value[], AS, MIN,
MAX>.
Predicate
18


– A predicate is a logical function evaluated at a
© Naik & Tripathy

decision point.
– Example: ti < AS is a predicate in node 3 of
Figure 4.7.
– Example: The construct OB is a predicate in node
5 in Figure 4.9.
• Path predicate
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
– A path predicate is the set of predicates
Generating Test Input

associated with a path.


– Figure 4.10: An example path from Fig. 4.7:
• 1-2-3(T)-4(T)-5-6(T)-7(T)-8-9-3(F)-10(T)-
12-13.
– Figure 4.11: The path predicate for the path
shown in Figure 4.10.
ti < AS ≡ True
value[i] != -999 ≡ True
value[i] >= MIN ≡ True
value[i] <= MAX ≡ True
ti < AS ≡ False
tv > 0 ≡ True
Predicate interpretation
19


– A path predicate may contain local variables.
© Naik & Tripathy

– Example: <i, ti, tv> in Figure 4.11 are local


variables.
– Local variables play no role in selecting inputs
that force a path to execute.
– Local variables can be eliminated by a process
called symbolic execution.
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
– Predicate interpretation is defined as the process
Generating Test Input

of
– symbolically substituting operations along a
path in order to express the predicate solely in
terms of the input vector and a constant
vector.
– A predicate may have different interpretations
depending on how control reaches the predicate.
Path predicate expression
20


– An interpreted path predicate is called a path
© Naik & Tripathy

predicate expression.
– A path predicate expression has the following
attributes.
• It is void of local variables.
• It is a set of constraints in terms of the input
vector, and, maybe, constants.
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
• Path forcing inputs can be generated by
Generating Test Input

solving the constraints.


• If a path predicate expression has no
solution, the path is infeasible.
– Figure 4.13: Path predicate expression for the
path shown in Figure 4.10.
0 < AS ≡ True …… (1)
value[0] != -999 ≡ True …… (2)
value[0] >= MIN ≡ True …… (3)
value[0] <= MAX ≡ True …… (4)
1 < AS ≡ False …… (5)
1>0 ≡ True …… (6)
Path predicate expression
21


– An example of infeasible path
© Naik & Tripathy

– Figure 4.14: Another example of path from


Figure 4.7.
• 1-2-3(T)-4(F)-10(T)-12-13
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
– Figure 4.15: Path predicate expression for the
path shown in Figure 4.14.
Generating Test Input

0 < AS ≡ True …… (1)


value[0] != -999 ≡ True …… (2)
0>0 ≡ True …… (3)
Generating input data from a path predicate
22


expression
© Naik & Tripathy

– Consider the path predicate expression of Figure


4.13 (reproduced below.)
0 < AS ≡ True …… (1)
value[0] != -999 ≡ True …… (2)
value[0] >= MIN ≡ True …… (3)
value[0] <= MAX ≡ True …… (4)
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
1 < AS ≡ False …… (5)
Generating Test Input

1>0 ≡ True …… (6)


– One can solve the above equations to obtain the
following test input data
AS =1
MIN = 25
MAX = 35
Value[0] = 30
– Note: The above set is not unique.
A program unit may contain a large number
23


of paths.
© Naik & Tripathy

– Path selection becomes a problem. Some selected


paths may be infeasible.
– Apply a path selection strategy:
• Select as many short paths as possible.
• Choose longer paths. Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
Containing Infeasible Paths

– There are efforts to write code with fewer/no


infeasible paths.
Control flow is a fundamental concept in
24


program execution.
© Naik & Tripathy

• A program path is an instance of execution


of a program unit.
• Select a set of paths by considering path
selection criteria.
• Statement coverage
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing)
• Branch coverage
• Predicate coverage
• All paths
• From source code, derive a CFG (compilers
Summary

are modified for this.)


• Select paths from a CFG based on path
selection criteria.
• Extract path predicates from each path.
• Solve the path predicate expression to
generate test input data.
• There are two kinds of paths.
• feasible
• infeasible

You might also like