1
Drexel University
CS 451 Software Engineering Winter 2009
1
CS 451 Software Engineering Winter 2009 Yuanfang Cai Room 104, - - PowerPoint PPT Presentation
CS 451 Software Engineering Winter 2009 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu 1 1 Drexel University Software Testing Techniques FUNDAMENTALS The goal of testing is to find errors. A good
1
Drexel University
1
Drexel University
FUNDAMENTALS
The goal of testing is to find errors. A good test is one that has a high probability of finding
A good test is not redundant A good test should be neither too simple nor to
Drexel University
1. Knowing the specified function that a product was designed to perform. 2. Knowing the internal workings of a product
Drexel University
Drexel University
1. guarantee that all independent paths within a module have been exercised at least once. 2. exercise all logical decisions on their true and false sides. 3. execute all loops at their boundaries and within their
4. exercise internal data structures to ensure their validity.
Drexel University
Method Coverage Statement Coverage Branch Coverage Condition Coverage
Drexel University
All methods have been called Test Case 1: f(0, 0, 0) = 0
float f(int a, int b, int c) { if (a == 0) return 0; int x = b / a; if ((a == b || b == c) && (x != c)) x = -c; return 1.f / x; }
Drexel University
All “statements” have been executed Test Case 1: f(1, 1, 1) = -1
float f(int a, int b, int c) { if (a == 0) return 0; int x = b / a; if ((a == b || b == c) && (x != c)) x = -c; return 1.f / x; }
Drexel University
All branches have been taken at least once Test Case 1: f(1, 0, 0) = NaN
float f(int a, int b, int c) { if (a == 0) return 0; int x = b / a; if ((a == b || b == c) && (x != c)) x = -c; return 1.f / x; }
Drexel University
All predicates have been both true and false Test Case 1: f(1, 1, 2) = -0.5
float f(int a, int b, int c) { if (a == 0) return 0; int x = b / a; if ((a == b || b == c) && (x != c)) x = -c; return 1.f / x; }
Drexel University
Drexel University
Drexel University
Drexel University
Drexel University
Flow Chart Flow Graph
Drexel University
Compound Conditions occur when one or more Boolean
conditional statement.
IF A OR B is represented as follows:
Compound Logic:
Drexel University
Drexel University
Path 1: 1-11
Path 2: 1-2-3-4-5-10-1-11
Path 3: 1-2-3-6-8-9-10-1-11
Path 4: 1-2-3-6-7-9-10-1-11
1-2-3-4-5-10-1-2-3-6-8-9-10-1-11
Drexel University
Drexel University
Drexel University
1. The number of regions corresponds to the cyclomatic complexity. 2. Cyclomatic complexity, V(G), for a flow graph G, is defined as: V(G) = E – N + 2, where E is the number of flow graph edges, and N is the number of flow graph nodes. 3. Alternatively: V(G) = P + 1, where P is the number of predicate nodes contained in the flowchart G.
Drexel University
1. The flow graph has 4 regions. 2. V(G) = 11 edges – 9 nodes +2 = 4 3. V(G) = 3 predicate nodes + 1 = 4
Drexel University
Drexel University
Drexel University
Drexel University
V(G) = 6 regions
V(G) = 17 edges – 13 nodes + 2 = 6
V(G) = 5 predicate nodes + 1 = 6
Paths:
Path 1: 1-2-10-11-13
Path 2: 1-2-10-12-13
Path 3: 1-2-3-10-11-13
Path 4: 1-2-3-4-5-8-9-2-…
Path 5: 1-2-3-4-5-6-7-8-2….
Path 6: 1-2-3-4-5-6-7-8-9-2… Prepare test cases that will force execution of each path in the basis set.
Drexel University
Look for test cases to:
Skip loop entirely Go through loop once Go through loop more than once
Drexel University
Drexel University
1. Skip the loop entirely 2. Only one pass through the loop 3. Two passes through the loop 4. M passes through the loop where m < n 5. N-1, n, n+1 passes through the loop
Drexel University
If we extended the simple loop test cases to nested loops, the number of tests would grow geometrically.
Instead use the following scheme:
1. Start at the innermost loop. Set all other loops to their minimum values. 2. Conduct simple loop tests for the innermost loop while holding the
for out-of-range or excluded values. 3. Work outward, conducting tests for the next loop, but keeping all the other outer loops at minimum values and other nested loops to “typical” values. 4. Continue until all loops have been tested.
Drexel University
Drexel University
Flow graph vs. Flow chart Cyclomatic Complexity Independent Path Code Coverage Test cases