Software Testing and Quality Assurance

advertisement
Software Testing and Quality
Assurance
Lecture 8 - Software Testing
Techniques
1
Lecture Outline



Discuss testing techniques based on
achieving coverage of the software.
Control-flow testing
Data-flow testing

Static Data-flow testing
2
Coverage Based Testing

To achieve some form of coverage of
the program-under- test based on welldefined-criteria

Rather than partitioning the input domain of
the program.
3
Control-flow Testing

Aims to understand the flow of control within
a program.



Select test inputs to exercise paths in the ControlFlow Graph (CFG).
Paths are selected based on the control
information in the graph.
Examples of coverage criteria include:



Path coverage
Branch coverage
condition coverage
4
Control-flow Graphs

Control-flow is a graph G = (V,E) where;



Vertex represents a program statement
Edge represents the ability of a program to
flow from its current statement to the next
statement.
If an edge is associated with a conditional
statement, label the edge with the
conditional value, either true or false.
5
Control-flow Graphs Example
Int power (int base, int n)
{
int power i;
power = 1;
for (i = 1; I ≤ n; i ++) {
power = base * power;
}
Return power;
}
6
Control-flow Graphs Example
int base, int n
int power, 1
Power = 1
i=1
i=i+1
I≤n
Power = base * power
return power
7
Control-flow Graphs Example
int base, int n
Execution Path
int power, 1
Condition
Power = 1
i=1
Branch or decision
i=i+1
I≤n
Power = base * power
return power
8
Coverage Based Criteria



Statement - every statement of the program
should be exercised at least once.
Branch coverage - every possible alternative
in a branch of the program should be tested
at least once.
Condition coverage - each condition in a
branch is made to evaluate to true or false.
9
Coverage Based Criteria

Multiple condition coverage



All possible combinations of condition
outcomes within each branch should be
exercised at least once.
For example, if (a&&b) --- evaluate all
possible combinations.
Path coverage

Every execution path of the program
should be exercised at least once.
10
Data-Flow Testing

Despite analysis of input and output
domains used in


Equivalence partitioning, boundary value
analysis, and control flow
Testing relies on personal experience to
choose test cases.
For example, program with 5 input variables
3125 possible EC
11
Data-Flow Testing

Information about the creation and use
of data definitions in a program.


Detect many single programming or logical
faults in the program;
Provide testers with dependencies
between the definitions and use of
variables.
Complement coverage based testing.
12
Static Data-Flow Testing


Simplest form of data-flow analysis
A programming language statement can
act on a variable in 3 different ways.



Define a variable
Reference a variable
Undefined a variable
13
Static Data-Flow Testing Define (d)


A statement defines a variable by
assigning a value to a variable.
For example,

x = 5;
Scan (x);

x = 3 * y;

Defined the variable x
Only defined the variable x
If y is declared and defined.
14
Static Data-Flow Testing Reference (r)

A statement makes a reference to a variable
either as an:

I-value - variable, array cell into which values can
be stored.


A variable that appears on the left hand side of an
assignment statement.
R -value - any variable that must be referenced to
get its value.

A variable that appears on the right hand side of an
assignment statement.
15
Static Data-Flow Testing - Undefine (u)


A statement un-defines a variable
whenever the value of the variable
becomes unknown.
For example,

The scope of a local variable ends.
16
Static Data-Flow Testing Anomalies

u-r anomaly



d-u anomaly


Undefined variable is referenced.
For example, un-initialized variable.
A defined variable has not been referenced before
it becomes undefined.
d-d anomaly


Same variable is defined twice.
Usually due to misspelling or because variables
have been imported from another function.
17
Action on variable c
Error (….)
Int i,j; int *c;
A
No action
C = malloc(….)
B
Define
C
c = Null
False
D
reference
C [0] = 1; c[1] = 1; sum = 2;
i=2
H
Return sum;
False
E
No action
F
G
I≤n
True
reference
C [i] = c[I-1] + c[I-2]; sum += c[I];
Fee (c)
J
Un-define
No action
I++
u-r anomaly
I
K
18
Key points

Control-Flow Testing aims to understand the
flow of control within a program.


Data-Flow Testing


Most common - Control-Flow Graph
Provides additional information to use for program
analysis and testing.
Static Data-Flow Analysis



Typing errors
Un-initialized variables,
Misspelling of names etc.
19
Announcement

Quiz 2 moved from



Wednesday 29/10/2008 to
Saturday 01/11/2008.
Material

Lec 6, Lec 7,Lec 8 & Lec 9
20
Download