Path Testing and Test Coverage. Chapter 9

Similar documents
Path Testing and Test Coverage. Chapter 9

Chapter 10 Retrospective on Unit Testing

Software Testing Lecture 5. Justin Pearson

CSC D70: Compiler Optimization Dataflow-2 and Loops

Lecture Notes on Software Model Checking

CSCI3390-Lecture 14: The class NP

Chapter 2: The Basics. slides 2017, David Doty ECS 220: Theory of Computation based on The Nature of Computation by Moore and Mertens

SOLUTION: SOLUTION: SOLUTION:

Algorithms. NP -Complete Problems. Dong Kyue Kim Hanyang University

NP-Complete problems

Lecture 15: A Brief Look at PCP

CSE20: Discrete Mathematics

Logic. Propositional Logic: Syntax. Wffs

Static Program Analysis

Logic. Propositional Logic: Syntax

CSI 4105 MIDTERM SOLUTION

COSE312: Compilers. Lecture 17 Intermediate Representation (2)

CIS (More Propositional Calculus - 6 points)

NP-Completeness. Andreas Klappenecker. [based on slides by Prof. Welch]

Math 267a - Propositional Proof Complexity. Lecture #1: 14 January 2002

Dynamic Semantics. Dynamic Semantics. Operational Semantics Axiomatic Semantics Denotational Semantic. Operational Semantics

1 Introduction. 1.1 The Problem Domain. Self-Stablization UC Davis Earl Barr. Lecture 1 Introduction Winter 2007

Proof Rules for Correctness Triples

Answers to the CSCE 551 Final Exam, April 30, 2008

Proofs of Correctness: Introduction to Axiomatic Verification

CS481F01 Prelim 2 Solutions

Black-Box Testing Techniques III

Hardness of Approximation

Notes for Lecture Notes 2

Algorithm Design and Analysis

CS 6820 Fall 2014 Lectures, October 3-20, 2014

Geometric Steiner Trees

Tasks of lexer. CISC 5920: Compiler Construction Chapter 2 Lexical Analysis. Tokens and lexemes. Buffering

Overview. 1. Introduction to Propositional Logic. 2. Operations on Propositions. 3. Truth Tables. 4. Translating Sentences into Logical Expressions

P P P NP-Hard: L is NP-hard if for all L NP, L L. Thus, if we could solve L in polynomial. Cook's Theorem and Reductions

Tableau-based decision procedures for the logics of subinterval structures over dense orderings

Game Theory and Algorithms Lecture 7: PPAD and Fixed-Point Theorems

Part 1: Logic and Probability

(P ) Minimize 4x 1 + 6x 2 + 5x 3 s.t. 2x 1 3x 3 3 3x 2 2x 3 6

Data Structures in Java

What is SSA? each assignment to a variable is given a unique name all of the uses reached by that assignment are renamed

CS21 Decidability and Tractability

CS 188 Introduction to Fall 2007 Artificial Intelligence Midterm

CS 350 Algorithms and Complexity

CS 350 Algorithms and Complexity

Chapter 2. Reductions and NP. 2.1 Reductions Continued The Satisfiability Problem (SAT) SAT 3SAT. CS 573: Algorithms, Fall 2013 August 29, 2013

Logic, Sets, and Proofs

Proofs Propositions and Calculuses

CMSC 451: Lecture 7 Greedy Algorithms for Scheduling Tuesday, Sep 19, 2017

Model Checking & Program Analysis

Limitations of Algorithm Power

Essential facts about NP-completeness:

Computation and Logic Definitions

CS422 - Programming Language Design

9.6 r-combinations with Repetition Allowed

Introduction to Turing Machines. Reading: Chapters 8 & 9

Department of Computer Science University at Albany, State University of New York Solutions to Sample Discrete Mathematics Examination II (Fall 2007)

A General Testability Theory: Classes, properties, complexity, and testing reductions

THE LOGIC OF COMPOUND STATEMENTS

A Short Introduction to Hoare Logic

Automata Theory CS S-18 Complexity Theory II: Class NP

- Well-characterized problems, min-max relations, approximate certificates. - LP problems in the standard form, primal and dual linear programs

Data Structures and Algorithms Chapter 2

Computational Models Lecture 8 1

Topics in Approximation Algorithms Solution for Homework 3

Requirements-based Test Generation for Predicate Testing

Propositional Logic: Syntax

Programming Languages and Types

Multimedia Retrieval Distance. Egon L. van den Broek

Computational Models Lecture 8 1

Decision Problems with TM s. Lecture 31: Halting Problem. Universe of discourse. Semi-decidable. Look at following sets: CSCI 81 Spring, 2012

CITS2211 Discrete Structures (2017) Cardinality and Countability

Computational Models Lecture 8 1

Advanced Automata Theory 7 Automatic Functions

3 Propositional Logic

Recognizing Safety and Liveness by Alpern and Schneider

Lecture 3: Nondeterminism, NP, and NP-completeness

Sets are one of the basic building blocks for the types of objects considered in discrete mathematics.

Intro to Theory of Computation

Dataflow Analysis. A sample program int fib10(void) { int n = 10; int older = 0; int old = 1; Simple Constant Propagation

Running Time Evaluation

October 6, Equivalence of Pushdown Automata with Context-Free Gramm

Conditional planning. Chapter Nondeterministic operators

Circuits. Lecture 11 Uniform Circuit Complexity

Space-aware data flow analysis

Chapter 1 The Real Numbers

2 - Strings and Binomial Coefficients

Part 4. Decomposition Algorithms

Automatic Verification of Parameterized Data Structures

Algorithms: COMP3121/3821/9101/9801

Uncertainty and Bayesian Networks

CS5371 Theory of Computation. Lecture 14: Computability V (Prove by Reduction)

NP and Computational Intractability

More NP-Complete Problems

CS 5114: Theory of Algorithms. Tractable Problems. Tractable Problems (cont) Decision Problems. Clifford A. Shaffer. Spring 2014

G54FOP: Lecture 17 & 18 Denotational Semantics and Domain Theory III & IV

Improper Nesting Example

Flows and Cuts. 1 Concepts. CS 787: Advanced Algorithms. Instructor: Dieter van Melkebeek

CS151 Complexity Theory. Lecture 13 May 15, 2017

Spiking Neural P Systems with Anti-Spikes as Transducers

Transcription:

Path Testing and Test Coverage Chapter 9

Structural Testing Also known as glass/white/open box testing Structural testing is based on using specific knowledge of the program source text to define test cases Contrast with functional testing where the program text is not seen but only hypothesized PT 2

Structural Testing Structural testing methods are amenable to Rigorous definitions Control flow Data flow Coverage criteria Mathematical analysis Graphs Path analysis Precise measurement Metrics Coverage analysis PT 3

Program Graph Definition What is a program graph? PT 4

Program Graph Definition 2 Given a program written in an imperative programming language Its program graph is a directed graph Nodes are statements and statement fragments Edges represent flow of control Two nodes are connected If execution can proceed from one to the other PT 5

Triangle program text 1 output ("Enter 3 integers") 2 input (a, b, c) 3 output("side a b c: ", a, b, c) 4 if (a < b + c) and (b < a+c) and (c < a+b) 5 then istriangle true 6 else istriangle false 7 fi 8 if istriangle 9 then if (a = b) and (b = c) 10 then output ("equilateral") 11 else if (a b ) and ( a c ) and ( b c) 12 then output ("scalene") 13 else output("isosceles") 14 fi 15 fi 16 else output ("not a triangle") 17 fi PT 6

Triangle Program Program Graph PT 7

DD-Path What is a DD-path? PT 8

DD-Path informal definition A decision-to-decision path (DD-Path) is a path chain in a program graph such that Initial and terminal nodes are distinct Every interior node has indeg =1 and outdeg = 1 The initial node is 2-connected to every other node in the path No instances of 1- or 3-connected nodes occur PT 9

Connectedness definition What is the definition of node connectedness? Hint: There are 4-types of connectedness PT 10

Connectedness definition 2 Two nodes J and K in a directed graph are 0-connected iff no path exists between them 1-connected iff a semi-path but no path exists between them PT 11

Connectedness definition 2 Two nodes J and K in a directed graph are 2-connected iff a path exists between between them 3-connected iff a path goes from J to K, and a path goes from K to J PT 12

DD-Path formal definition A decision-to-decision path (DD-Path) is a chain in a program graph such that: Case 1: consists of a single node with indeg=0 Case 2: consists of a single node with outdeg=0 Case 3: consists of a single node with indeg 2 or outdeg 2 Case 4: consists of a single node with indeg =1, and outdeg = 1 Case 5: it is a maximal 2-connected chain of length 1 DD-Paths are also known as segments PT 13

Triangle program DD-paths Nodes Path Case 1 First 1 2,3 A 5 4 B 3 5 C 4 6 D 4 7 E 3 8 F 3 9 G 3 Nodes Path Case 10 H 4 11 I 3 12 J 4 13 K 4 14 L 3 15 M 3 16 N 4 17 Last 2 PT 14

DD-path Graph What is a DD-path graph? PT 15

DD-Path Graph informal definition Given a program written in an imperative language, its DD-Path graph is a directed graph, in which Nodes are DD-Paths of the program graph Edges represent control flow between successor DD- Paths. Also known as Control Flow Graph PT 16

Control Flow Graph Derivation Straightforward process Some judgment is required The last statement in a segment must be a predicate a loop control a break a method exit PT 17

Triangle program DD-path graph PT 18

displaylastmsg Example Java program public int displaylastmsg(int ntoprint) { np = 0; if ((msgcounter > 0) && (ntoprint > 0)) { for (int j = lastmsg; (( j!= 0) && (np < ntoprint)); --j) { System.out.println(messageBuffer[j]); ++np; } if (np < ntoprint) { for (int j = SIZE; ((j!= 0) && (np < ntoprint)); --j) { System.out.println(messageBuffer[j]); ++np; } } } return np; } PT 19

displaylastmsg Segments part 1 Line Segment 1 public int displaylastmsg(int ntoprint) { 2 np = 0; A 3a if ( (msgcounter > 0) A 3b && (ntoprint > 0)) B 4a { for (int j = lastmsg; C 4b ( ( j!= 0) D 4c && (np < ntoprint)); E 4d --j) F 5 { System.out.println(messageBuffer[j]); F 6 ++np; F 7 } F PT 20

displaylastmsg Segments part 2 Line Segment 8 if (np < ntoprint) G 9a { for (int j = SIZE; H 9b ((j!= 0) && I 9c (np < ntoprint)); J 9d --j) K 10 { System.out.println(messageBuffer[j]); K 11 ++np; K 12 } L 13 } L 14 } L 15 return np; L 16 } L PT 21

displaylastmsg Control Flow Graph PT 22

Control flow graphs definition 1 Depict which program segments may be followed by others A segment is a node in the CFG A conditional transfer of control is a branch represented by an edge An entry node (no inbound edges) represents the entry point to a method An exit node (no outbound edges) represents an exit point of a method PT 23

Control flow graphs definition 2 An entry-exit path is a path from the entry node to the exit node Path expressions represent paths as sequences of nodes How do we represent path expressions? PT 24

Control flow graphs definition 3 An entry-exit path is a path from the entry node to the exit node Path expressions represent paths as sequences of nodes Regular expressions involving loops Loops are represented as segments within parentheses followed by an asterisk There are 22 different entry-exit path expressions in displaylastmsg PT 25

Entry-exit path expressions part 1 Entry-Exit paths 1 A L 2 A B L 3 A B C D G L 4 A B C D E G L 5 A B C (D E F)* D G L 6 A B C (D E F)* D E G L 7 A B C D G H I L 8 A B C D G H I J L 9 A B C D G H (I J K)* I L 10 A B C (D E F)* D E G H (I J K)* I J L 11 A B C D E G H I L PT 26

Entry-exit path expressions part 2 Entry-Exit paths 12 A B C D E G H I J L 13 A B C D E G H (I J K)* I L 14 A B C D E G H (I J K)* I J L 15 A B C (D E F)* D G H I L 16 A B C (D E F)* D G H I J L 17 A B C (D E F)* D G H (I J K)* I L 18 A B C (D E F)* D G H (I J K)* I J L 19 A B C (D E F)* D E G H I L 20 A B C (D E F)* D E G H I J L 21 A B C (D E F)* D E G H (I J K)* I L 22 A B C (D E F)* D E G H (I J K)* I J L PT 27

Paths displaylastmsg decision table part 1 Path condition by Segment Name Entry/Exit Path A B D E G I J 1 A L F 2 A B L T F 3 A B C D G L T T F F 4 A B C D E G L T T T F 5 A B C (D E F)* D G L T T T/F T/ F 6 A B C (D E F)* D E G L T T T/T T/F F 7 A B C D G H I L T T F T F 8 A B C D G H I J L T T F T T F 9 A B C D G H (I J K)* I L T T F T/F T/ T 10 A B C D G H (I J K)* I J L T T F T/T T/F T 11 A B C D E G H I L T T T F T F x/x Conditions at loop-entry / loop-exit is don t care PT 28

Paths displaylastmsg decision table part 2 Path condition by Segment Name Entry/Exit Path A B D E G I J 12 A B C D E G H I J L T T T F T T F 13 A B C D E G H (I J K)* I L T T T F T T/F T/ 14 A B C D E G H (I J K)* I J L T T T F T T/T T/F 15 A B C (D E F)* D G H I L T T T/F T/ T F 16 A B C (D E F)* D G H I J L T T T/T T/F T T F 17 A B C (D E F)* D G H (I J K)* I L T T T/F T/ T T/F T/ 18 A B C (D E F)* D G H (I J K)* I J L T T T/F T/ T T/T T/F 19 A B C (D E F)* D E G H I L T T T/T T/F T F 20 A B C (D E F)* D E G H I J L T T T/T T/F T T F 21 A B C (D E F)* D E G H (I J K)* I L T T T/T T/F T T T 22 A B C (D E F)* D E G H (I J K)* I J L T T T/T T/F T T T x/x Conditions at loop-entry / loop-exit is don t care PT 29

Program text coverage Metrics List the program text coverage metrics. PT 30

Program text coverage Metrics 2 C 0 Every Statement C 1 Every DD-path C 1p Every predicate to each outcome C 2 C 1 coverage + loop coverage C d C 1 coverage + every dependent pair of DD-paths C MCC Multiple condition coverage C lk Every program path that contains k loop repetitions C stat Statistically significant fraction of the paths C Every executable path PT 31

Program text coverage models What are the common program text coverage models? PT 32

Program text coverage models 2 Statement Coverage Segment Coverage Branch Coverage Multiple-Condition Coverage PT 33

Statement coverage C 0 When is statement coverage achieved? PT 34

Statement coverage C 0 2 Achieved when all statements in a method have been executed at least once A test case that will follow the path expression below will achieve statement coverage in our example A B C (D E F)* D G H (I J K)* I L One test case is enough to achieve statement coverage! PT 35

Segment coverage When is segment coverage achieved? PT 36

Segment coverage 2 Achieved when all segments have been executed at least once Segment coverage counts segments rather than statements May produce drastically different numbers Assume two segments P and Q P has one statement, Q has nine Exercising only one of the segments will give either 10% or 90% statement coverage Segment coverage will be 50% in both cases PT 37

Statement coverage problems What problems are there with statement coverage? PT 38

Statement coverage problems 2 Important cases may be missed Predicate may be tested for only one value Misses many bugs Loop bodies may only be iterated only once String s = null; if (x!= y) s = Hi ; String s2 = s.substring(1); What coverage solves this problem? Define it PT 39

Branch coverage C 1p Achieved when every edge from a node is executed at least once At least one true and one false evaluation for each predicate How many test cases are required? PT 40

Branch coverage C 1p 2 Can be achieved with D+1 paths in a control flow graph with D 2-way branching nodes and no loops Even less if there are loops In the Java example displaylastmsg branch coverage is achieved with three paths see next few slides X L X C (Y F)* Y G L X C (Y F)* Y G H (Z K)* Z L PT 41

Java example program displaylastmsg DD-path graph X, Y & Z are shorthand for the nodes within the dotted boxes; used for branch testing PT 42

Java example program displastlastmsg aggregate predicate DD-path graph PT 43

Aggregate Paths decision table part 1 Path condition by Segment Name Branch Coverage A B D E G I J 1 X L F 2 X L T F 3 X C Y G L T T F F 4 X C Y G L T T T F 5 X C (Y F)* Y G L T T T/F T/ F 6 X C (Y F)* Y G L T T T/T T/F F 7 X C Y G H Z L T T F T F 8 X C Y G H Z L T T F T T F 9 X C Y G H (Z K)* I L T T F T/F T/ T 10 X C Y G H (Z K)* I L T T F T/T T/F T 11 X C Y G H Z L T T T F T F x/x Conditions at loop-entry / loop-exit is don t care PT 44

Aggregate Paths decision table example part 2 Path condition by Segment Name Branch Coverage A B D E G I J 12 X C Y G H Z L T T T F T T F 13 X C Y G H (Z K)* Z L T T T F T T/F T/ 14 X C Y G H (Z K)* Z L T T T F T T/T T/F 15 X C (Y F)* Y G H Z L T T T/F T/ T F 16 X C (Y F)*Y G H Z L T T T/T T/F T T F 17 X C (Y F)* Y G H (Z K)* Z L T T T/F T/ T T/F T/ 18 X C (Y F)* Y G H (Z K)* Z L T T T/F T/ T T/T T/F 19 X C (Y F)* Y G H Z L T T T/T T/F T F 20 X C (Y F)* Y G H Z L T T T/T T/F T T F 21 X C (Y F)* Y G H (Z K)* Z L T T T/T T/F T T T 22 X C (Y F)* Y G H (Z K)* Z L T T T/T T/F T T T x/x Conditions at loop-entry / loop-exit is don t care PT 45

Branch coverage problems What are the problems with branch coverage? PT 46

Branch coverage problems 2 Ignores implicit paths from compound paths 11 paths in aggregate model vs 22 in full model PT 47

Branch coverage problems 3 Short-circuit evaluation means that many predicates might not be evaluated A compound predicate is treated as a single statement If n clauses 2 n combinations Only 2 are tested PT 48

Branch coverage problems 4 Only a subset of all entry-exit paths is tested Two tests for branch coverage vs 4 tests for path coverage a = b = x = y = 0 a = x = 0 b = y = 1 if (a == b) x++; if (x == y) x--; PT 49

Overcoming branch coverage problems How do we overcome branch coverage problems? PT 50

Overcoming branch coverage problems 2 Use Multiple condition coverage All true-false combinations of simple conditions in compound predicates are considered at least once Guarantees statement, branch and predicate coverage Does not guarantee path coverage PT 51

Overcoming branch coverage problems 3 Use Multiple condition coverage A truth table may be necessary Not necessarily achievable Lazy evaluation true-true and true-false are impossible Mutually exclusive conditions false-false branch is impossible if ((x > 0) (x < 5)) PT 52

Overcoming branch coverage problems 4 Can have infeasible paths due to dependencies and redundant predicates Paths perpetual.. motion and free.. lunch are impossible In this case indicates a potential bug At least poor program text if x = 0 then oof.perpetual else off.free fi if x!= 0 then oof.motion else off.lunch fi PT 53

Dealing with Loops Loops are highly fault-prone, so they need to be tested carefully Based on the previous slides on testing decisions what would be a simple view of testing a loop? PT 54

Dealing with Loops 2 Simple view Involves a decision to traverse the loop or not Test as a two way branch What would functional testing suggest as a better way of testing? What tests does it suggest? PT 55

Dealing with Loops 3 A bit better Boundary value analysis on the index variable Suggests Zero iterations One iteration Many iterations How do we deal with nested loops? PT 56

Dealing with Loops 3 Nested loops Tested separately starting with the innermost Once loops have been tested what can we do with the control flow graph? PT 57

Dealing with Loops 4 Once loops have been tested They can be condensed to a single node PT 58

Condensation graphs What is a condensation graph? PT 59

Condensation graphs 2 What is a condensation graph? Condensation graphs are based on removing strong components or DD-paths For programs remove structured program constructs One entry, one exit constructs for sequences, choices and loops Each structured component once tested can be replaced by a single node when condensing a graph PT 60

Violations of proper structure Program text that violates proper structure cannot be condensed Branches either into or out of the middle of a loop Branches either into or out of then and else phrases of if then else statements Increases the complexity of the program Increases the difficulty of testing the program PT 61

Cyclomatic number The cyclomatic number for a graph is given by CN(G) = e v + 2*c e number of edges v number of vertices c number of connected regions For strongly connected graphs, need to add edges from every sink to every source PT 62

Cyclomatic number for structured programs For properly structured programs there is only one component with one entry and one exit. There is no edge from exit to entry. Definition 1: CN(G) = e v + 2 Only 1 component, not strongly connected Definition 2: CN(G) = p + 1 p is the number of predicate nodes with out degree = 2 Definition 3: CN(G) = r + 1 r is the number of enclosed regions PT 63