cs 451 software engineering winter 2009
play

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 Drexel University White Box Testing Drexel University White Box Testing White box testing is sometimes called glass box


  1. CS 451 Software Engineering Winter 2009 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu 1 Drexel University

  2. White Box Testing Drexel University

  3. White Box Testing White box testing is sometimes called glass box  testing. White box testing uses the control structure described  as part of the component level design to derive test cases. Using white box testing methods, the software  engineer can derive test cases that: guarantee that all independent paths within a module have 1. been exercised at least once. exercise all logical decisions on their true and false sides. 2. execute all loops at their boundaries and within their 3. operational bounds exercise internal data structures to ensure their validity. 4. Drexel University

  4. Basis Path Testing The basis path method enables the test case designer  to derive a logical complexity measure of a procedural design and use this measure as a guide for defining a basis set of execution paths. Test cases derived to exercise the basis set are  guaranteed to execute every statement in the program at least one time during testing. Drexel University

  5. Basis Path Testing FLOW GRAPH NOTATION  A flow graph depicts logical control flow using the  notation shown below: Each structured construct corresponds to a flow graph  symbol. Drexel University

  6. Basis Path Testing Flow charts and flow  graphs correspond to one another The flow chart  depicts the program control structure. Drexel University

  7. Basis Path Testing Flow Graph  Each circle, called a flow graph node, represents  one or more procedural statements. A sequence of process boxes and a decision  diamond can map to a single node. The arrows of a flow graph, called edges or links,  represent flow of control. An edge must terminate at a node.  Areas bounded by edges are called regions.  Drexel University

  8. Basis Path Testing Flow Chart Flow Graph Drexel University

  9. Basis Path Testing Independent Program Paths  An independent program path is any path through  the program that introduces at least one new set of processing statements or a new condition . When stated in terms of a flow graph, an  independent path must move along at least one edge that has not been traversed before the path is defined. Count from the shortest paths  Drexel University

  10. Basis Path Testing For example, a set of  independent paths for the flow graph illustrated in Figure 14.2b is: 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  Each new path introduces a  new edge. Note the following path is not independent: 1-2-3-4-5-10-1-2-3-6-8-9-10-1-11  Drexel University

  11. Basis Path Testing A basis set for a flow graph is the set of paths that  cover every statement in the program. Therefore Paths 1, 2, 3, & 4 are the basis set for the  previous figure. If tests are designed to force execution of these paths,  every statement is guaranteed to execute at least one time. Every condition will have been executed on its true and false sides. Note, a basis set is not unique. A number of basis  sets may be derived from a procedural design. How do we know how many paths to look for?  Drexel University

  12. Basis Path Testing Cyclomatic complexity is a software metric that  provides a quantitative measure of the logical complexity of a program. When used in the context of the basis path testing  method, the value computed for cyclomatic complexity defines the number of independent paths in the basis set of a program and provides an upper bound for the number of tests that must be conducted to ensure that all statements have been executed at least once. Drexel University

  13. Basis Path Testing Cyclomatic complexity is computed a number of ways:  The number of regions corresponds to the cyclomatic 1. complexity. Cyclomatic complexity, V(*G), for a flow graph G, is 2. 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. Cyclomatic complexity, V(G), for a flow graph G, is 3. defined as: V(G) = P + 1, where P is the number of predicate nodes contained in the flow graph G. Drexel University

  14. Basis Path Testing Cyclomatic Complexity  The flow graph has 4 regions. 1. V(G) = 11 edges – 9 nodes +2 2. = 4 V(G) = 3 predicate nodes + 1 3. = 4 Often components with a  high V(G) are a high risk for error and should be tested more completely. Drexel University

  15. Basis Path Testing Deriving Test Cases  Using the design or code as a foundation, draw a 1. corresponding flow graph. Determine the cyclomatic complexity of the 2. resultant flow graph. Determine a basis set of linearly independent paths. 3. Prepare test cases that will force execution of each 4. path in the basis set. Drexel University

  16. Basis Path Testing Figure 14.4  Drexel University

  17. Drexel University

  18. Basis Path Testing Figure 14.4  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

  19. Code Coverage  Method Coverage  All methods have been called  Statement Coverage  All “statements” have been executed  Branch Coverage  All predicates have been both true and false  Condition Coverage  All predicates have been both true and false Drexel University

  20. Junit Example  Java Code to Test public class Math { static public int add(int a, int b) { return a + b; } } Drexel University

  21. Junit example  JUNIT test case import junit.framework.*; public class TestMath extends TestCase { public void testAdd() { int num1 = 3; int num2 = 2; int total = 5; int sum = 0; sum = Math.add(num1, num2); assertEquals(sum, total); } } Drexel University

  22. Dealing With Loops  Look for test cases to:  Skip loop entirely  Go through loop once  Go through loop more than once Drexel University

  23. Control Structure Testing Four different classes of loops:  Drexel University

  24. Control Structure Testing Four different classes of loops:  Simple Loops: The following tests should be  performed for simple loops, where n is the maximum number of allowable passes through the loop. Skip the loop entirely 1. Only one pass through the loop 2. Two passes through the loop 3. M passes through the loop where m < n 4. N-1, n, n+1 passes through the loop 5. Drexel University

  25. Control Structure Testing Four different classes of loops:  Nested Loops:  If we extended the simple loop test cases to nested loops, the  number of tests would grow geometrically. Instead use the following scheme:  Start at the innermost loop. Set all other loops to their minimum 1. values. Conduct simple loop tests for the innermost loop while holding 2. the outer loops at their minimum iteration parameter. Add other tests for out-of-range or excluded values. Work outward, conducting tests for the next loop, but keeping all 3. the other outer loops at minimum values and other nested loops to “typical” values. Continue until all loops have been tested. 4. Drexel University

  26. Control Structure Testing Concatenated Loops  Concatenated loops can be tested using the  approach defined for simple loops, if each of the loops is independent of each other. If the two loops are concatenated and the loop  counter for loop 1 is used as an initial value of loop 2, then the loops are not independent. Unstructured Loops  Whenever possible, this class of loops should be  redesigned to reflect the use of the structured programming constructs. Drexel University

  27. Summary  Flow graph vs. Flow chart  Cyclomatic Complexity  Independent Path  Code Coverage  Test cases Drexel University

Recommend


More recommend