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 1 Drexel University Software Testing Techniques FUNDAMENTALS The goal of testing is to find errors. A good


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

  2. Software Testing Techniques  FUNDAMENTALS  The goal of testing is to find errors.  A good test is one that has a high probability of finding an error.  A good test is not redundant  A good test should be neither too simple nor to complex. Drexel University

  3. Black Box and White Box Testing One can test an engineered product by:  Knowing the specified function that a product was designed to 1. perform. 2. Knowing the internal workings of a product Black box testing alludes to tests that are conducted at  the software interface. A black box test examines some fundamental  aspect of a system with little regard for the internal structure of the software. White-box testing of software is predicated on close  examination of procedural detail. Drexel University

  4. White Box Testing Drexel University

  5. 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: 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 operational bounds 4. exercise internal data structures to ensure their validity. Drexel University

  6. Code Coverage  Method Coverage  Statement Coverage  Branch Coverage  Condition Coverage Drexel University

  7. Method Coverage  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

  8. Statement Coverage  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

  9. Branch Coverage  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

  10. Condition Coverage  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

  11. 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

  12. 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

  13. Basis Path Testing Flow charts and flow  graphs correspond to one another The flow chart depicts  the program control structure. The flow graph  assumes no compound structures. Drexel University

  14. 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

  15. Basis Path Testing Flow Chart Flow Graph Drexel University

  16. Basis Path Testing Compound Conditions  Compound Conditions occur when one or more Boolean  operators (OR, AND, NAND, NOR) is/are present in a conditional statement. IF A OR B is represented as follows:  Compound Logic: Drexel University

  17. 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. Drexel University

  18. 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

  19. 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

  20. 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

  21. Basis Path Testing Cyclomatic complexity is computed a number of ways:  The number of regions corresponds to the cyclomatic 1. 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

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

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

  24. Basis Path Testing Figure 14.4  Drexel University

  25. Drexel University

  26. 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

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

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

  29. 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. 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

  30. 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:  1. Start at the innermost loop. Set all other loops to their minimum values. Conduct simple loop tests for the innermost loop while holding the 2. outer loops at their minimum iteration parameter. Add other tests 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

Recommend


More recommend