1 / 70

White-Box Testing Techniques II

White-Box Testing Techniques II. Dataflow Testing. Originals prepared by Stephen M. Thebaut, Ph.D. University of Florida. White-Box Testing Topics. Logic coverage Dataflow coverage Path conditions and symbolic execution (lecture III) Other white-box testing strategies

Download Presentation

White-Box Testing Techniques II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. White-Box Testing Techniques II Dataflow Testing Originals prepared by Stephen M. Thebaut, Ph.D. University of Florida

  2. White-Box Testing Topics • Logic coverage • Dataflow coverage • Path conditions and symbolic execution (lecture III) • Other white-box testing strategies • e.g. fault-based testing

  3. Dataflow Coverage • Basic idea: • Program paths along which variables are defined and then used should be covered • A family of path selection criteria has been defined, each providing a different degree of coverage • CASE tool support is very desirable

  4. Variable Definition • A program variable is DEFINED when it appears: • on the left hand side of an assignment statement egy = 17 • in an input statementeg read(y) • as an call-by-reference parameter in a subroutine call egupdate(x, &y);

  5. Variable Use • A program variable is USED when it appears: • on the right hand side of an assignment statement eg y = x+17 • as an call-by-value parameter in a subroutine or function call eg y = sqrt(x) • in the predicate of a branch statement eg if ( x > 0 ) { … }

  6. Variable Use: p-use and c-use • Use in the predicate of a branch statement is a predicate-use or “p-use” • Any other use is a computation-use or “c-use” • For example, in the program fragment: if ( x > 0 ) { print(y); } there is a p-use ofxand a c-use ofy

  7. Variable Use • A variable can also be used and then re-defined in a single statement when it appears: • on both sides of an assignment statement eg y = y + x • as an call-by-reference parameter in a subroutine call eg increment( &y )

  8. More Dataflow Terms and Definitions • A path is definition clear(“def-clear”) with respect to a variable v if it has no variable re-definition of v on the path • A complete pathis a path whose initial node is a start node and whose final node is an exit node

  9. Dataflow Terms and Definitions • A definition-use pair(“du-pair”) with respect to a variable v is a double (d,u) such that • d is a node in the program’s flow graph at which v is defined, • u is a node or edge at which v is used and • there is a def-clear path with respect to vfrom d to u • Note that the definition of a du-pair does not require the existence of a feasibledef-clear path from d to u

  10. Example 1 1. input(A,B) if (B>1) { 2. A = A+7 } 3. if (A>10) { 4. B = A+B } 5. output(A,B) input(A,B) 1 B>1 B1 2 A = A+7 3 A>10 A10 4 B = A+B 5 output(A,B)

  11. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  12. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  13. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  14. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  15. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  16. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  17. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  18. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  19. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  20. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  21. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  22. Identifying DU-Pairs – Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  23. Identifying DU-Pairs – Variable B input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  24. Dataflow Test Coverage Criteria • All-Defs for every program variable v, at least onedef-clear path from every definition of vto at least one c-use or one p-use of v must be covered

  25. Dataflow Test Coverage Criteria • Consider a test case executing path: 1. <1,2,3,4,5> • Identify all def-clear paths covered (ie subsumed) by this path for each variable • Are all definitions for each variable associated with at least one of the subsumed def-clear paths?

  26. Def-Clear Paths subsumed by <1,2,3,4,5> for Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  27. Def-Clear Paths Subsumed by <1,2,3,4,5> for Variable B input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  28. Dataflow Test Coverage Criteria • Since<1,2,3,4,5>covers at least one def-clear path from every definition of A or B to at least one c-use or p-use of A or B, All-Defs coverage is achieved

  29. Dataflow Test Coverage Criteria • All-Uses: for every program variable v,at least onedef-clear pathfrom everydefinition of v to everyc-use and every p-use of v must be covered • Consider additional test cases executing paths: 2. <1,3,4,5> 3. <1,2,3,5> • Do all three test cases provide All-Uses coverage?

  30. Def-Clear Paths Subsumed by <1,3,4,5> for Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  31. Def-Clear Paths Subsumed by <1,3,4,5> for Variable B input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  32. Def-Clear Paths Subsumed by <1,2,3,5> for Variable A input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  33. Def-Clear Paths Subsumed by <1,2,3,5> for Variable B input(A,B) 1 B>1 B1 2 A := A+7 3 A>10 A10 4 B := A+B 5 output(A,B)

  34. Dataflow Test Coverage Criteria • None of the three test cases covers the du-pair (1,<3,5>) for variable A, • All-Uses Coverage is not achieved

  35. Example 2 1. input(X,Y) 2. while (Y>0) { 3. if (X>0) 4. Y := Y-X else 5. input(X) 6. } 7. output(X,Y) 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y := Y-X 6 Y0 Y>0 7 output(X,Y)

  36. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y := Y-X 6 Y0 Y>0 7 output(X,Y)

  37. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y := Y-X 6 Y0 Y>0 7 output(X,Y)

  38. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y = Y-X 6 Y0 Y>0 7 output(X,Y)

  39. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y = Y-X 6 Y0 Y>0 7 output(X,Y)

  40. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y = Y-X 6 Y0 Y>0 7 output(X,Y)

  41. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y = Y-X 6 Y0 Y>0 7 output(X,Y)

  42. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y = Y-X 6 Y0 Y>0 7 output(X,Y)

  43. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y = Y-X 6 Y0 Y>0 7 output(X,Y)

  44. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y := Y-X 6 Y0 Y>0 7 output(X,Y)

  45. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y := Y-X 6 Y0 Y>0 7 output(X,Y)

  46. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y := Y-X 6 Y0 Y>0 7 output(X,Y)

  47. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y := Y-X 6 Y0 Y>0 7 output(X,Y)

  48. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y = Y-X 6 Y0 Y>0 7 output(X,Y)

  49. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y := Y-X 6 Y0 Y>0 7 output(X,Y)

  50. Identifying DU-Pairs – Variable X 1 input(X,Y)) 2 Y>0 Y0 3 X0 X>0 input(X) 5 4 Y := Y-X 6 Y0 Y>0 7 output(X,Y)

More Related