Introduction to Software Testing Syntactic Logic Coverage Criteria

Slides:



Advertisements
Similar presentations
1 Applications of Optimization to Logic Testing Gary Kaminski and Paul Ammann ICST 2010 CSTVA Workshop.
Advertisements

Course Software Testing & Verification 2013/14 Wishnu Prasetya
Software Testing Logic Coverage. Introduction to Software Testing (Ch 3) © Ammann & Offutt 2 Logic Coverage Four Structures for Modeling Software Graphs.
Introduction to Software Testing Chapter 3.1, 3.2 Logic Coverage Paul Ammann & Jeff Offutt
Logic ChAPTER 3 1. Truth Tables and Validity of Arguments
CITS5501 Software Quality and Testing Logic and Path Coverage From Introduction to Software Testing, 2 nd ed, Ammann & Offutt.
The Application of Graph Criteria: Source Code  It is usually defined with the control flow graph (CFG)  Node coverage is used to execute every statement.
EE1J2 – Discrete Maths Lecture 5
Introduction to Software Testing Chapter 3.1 Logic Coverage Paul Ammann & Jeff Offutt.
Introduction to Software Testing Chapter 8.2
Topics in Software Dynamic White-box Testing Part 1: Control-flow Testing [Reading assignment: Chapter 7, pp plus many things in slides that are.
Homework 3.
Of 33 Improving Logic-Based Testing Jeff Offutt Professor, Software Engineering George Mason University Fairfax, VA USA
Introduction to Software Testing Chapter 2.3 Graph Coverage for Source Code Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
CSE 20 DISCRETE MATH Prof. Shachar Lovett Clicker frequency: CA.
Chapter 1 The Logic of Compound Statements. Section 1.1 Logical Form and Logical Equivalence.
Today’s Agenda  Quick Review  Finish Graph-Based Testing  Predicate Testing Software Testing and Maintenance 1.
Probabilistic graphical models. Graphical models are a marriage between probability theory and graph theory (Michael Jordan, 1998) A compact representation.
Software Logic Mutation Testing Presented by Gary Kaminski.
Introduction to Software Testing Chapter 8.1 Logic Coverage Paul Ammann & Jeff Offutt
Logical Form and Logical Equivalence Lecture 2 Section 1.1 Fri, Jan 19, 2007.
Introduction to Software Testing Chapter 3.6 Disjunctive Normal Form Criteria Paul Ammann & Jeff Offutt
3.3: Truth Tables. Types of Statements Negation: ~p Conjunction: p ˄ q (p and q) Disjunction: p V q (p or q, or both) Conditional: p → q (if p, then q)
Introduction to Software Testing Chapter 3.1, 3.2 Logic Coverage Paul Ammann & Jeff Offutt
Chapter 7 Logic, Sets, and Counting
Introduction to Software Testing Chapter 2.3 Graph Coverage for Source Code Paul Ammann & Jeff Offutt
Software Verification Graph Model. 2 Graph Coverage Four Structures for Modeling Software Graphs Logic Input Space Syntax Use cases Specs Design Source.
Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 2.3 Graph Coverage for Source Code Paul Ammann & Jeff Offutt.
Chapter 7 Logic, Sets, and Counting Section 1 Logic.
Logical Form and Logical Equivalence Lecture 1 Section 1.1 Wed, Jan 12, 2005.
Introduction to Software Testing Chapter 8.1 Logic Coverage Paul Ammann & Jeff Offutt
Using Logic Criterion Feasibility to Reduce Test Set Size While Guaranteeing Double Fault Detection Gary Kaminski and Paul Ammann Software Engineering.
Notes - Truth Tables fun, fun, and more fun!!!!. A compound statement is created by combining two or more statements, p and q.
Introduction to Software Testing Chapter 3.6 Disjunctive Normal Form Criteria Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 3.6 Disjunctive Normal Form Criteria Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 3.1 Logic Coverage Paul Ammann & Jeff Offutt.
CHAPTER 1 INTRODUCTION TO DIGITAL LOGIC
THE K-MAP.
1 Graph Coverage (3). Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Section 2.2 ◦ Section
MATH 110 Sec 12-1 Lecture: Intro to Counting Introduction to Counting: Just how many are there?
1 Using a Fault Hierarchy to Improve the Efficiency of DNF Logic Mutation Testing Gary Kaminski and Paul Ammann ICST 2009.
Control Flow Graphs : The if Statement 1 if (x < y) { y = 0; x = x + 1; } else { x = y; } x >= yx < y x = y y = 0 x = x + 1 if (x < y) { y = 0;
Introduction to Software Testing Chapter 3.2 Logic Coverage
Introduction to Software Testing Chapter 3.4 Logic Coverage for Specifications Paul Ammann & Jeff Offutt
Data Flow Coverage Criteria
Software Testing and Maintenance Lecture 3 Graph Coverage for Source Code Paul Ammann & Jeff Offutt Instructor: Hossein Momeni Mazandaran.
Data Flow Testing. Introduction to Software Testing (Ch 2) © Ammann & Offutt 2 Definition of a Graph A set N of nodes, N is not empty A set N 0 of initial.
Using Logic Criterion Feasibility to Reduce Test Set Size While Guaranteeing Fault Detection Gary Kaminski and Paul Ammann ICST 2009 March 24 Version.
Software Dynamic White-box Testing Lecture 6 Part 1: Control-flow Testing.
Test #2 Practice MGF 1106 Summer 2011.
Introduction to Software Testing Chapter 8.2
Lab 7 Control-Flow Testing
Introduction to Software Testing Chapter 8.1 Logic Coverage
Paul Ammann & Jeff Offutt
CS 352 Introduction to Logic Design
Logic Coverage CS 4501 / 6501 Software Testing
Paul Ammann & Jeff Offutt
In-Class Extended Example Ch. 6.4
Digital Logic & Design Dr. Waseem Ikram Lecture 12.
Digital Logic & Design Dr. Waseem Ikram Lecture 13.
Paul Ammann & Jeff Offutt
Logic Coverage CS 4501 / 6501 Software Testing
Graph Coverage for Source Code
Logic Coverage for Source Code CS 4501 / 6501 Software Testing
Introduction to Software Testing Chapter 8.1 Logic Coverage
Tata Consultancy Services
COSC 4506/ITEC 3506 Software Engineering
Paul Ammann & Jeff Offutt
Presentation transcript:

Introduction to Software Testing Syntactic Logic Coverage Criteria

Conversion Test Testing of code that is used to convert data from existing systems for use in the newly replaced systems

Testing the system for the users to learn and use the product. Usability Test Testing the system for the users to learn and use the product.

Disjunctive Normal Form Basics: A literal is a clause or the negation (overstrike) of a clause Examples: a, a A term is a set of literals connected by logical “and” “and” is denoted by adjacency instead of  Examples: ab, ab, ab for a  b, a  ¬ b, ¬ a  ¬ b 4

Disjunctive Normal Form A (disjunctive normal form) predicate is a set of terms connected by “or” “or” is denoted by + instead of  Examples: abc + ab + ac Terms are also called “implicants” If a term is true, that implies the predicate is true 5

Implicant Coverage Obvious coverage idea : Make each implicant evaluate to “true” Problem : Only tests “true” cases for the predicate Solution : Include DNF representations for negation Implicant Coverage (IC) : Given DNF representations of a predicate f and its negation f, for each implicant in f and f, TR contains the requirement that the implicant evaluate to true. Example: f = ab + bc f = b + ac Implicants: { ab, bc, b, ac } Possible test set: {TTF, FFT} Observation: IC is relatively weak 6

Improving on Implicant Coverage Additional Definitions : A proper subterm is a term with one or more clauses removed Example: abc has 6 proper subterms: a, b, c, ab, ac, bc A prime implicant is an implicant such that no proper subterm is also an implicant Example: f = ab + abc Implicant ab is a prime implicant Implicant abc is not a prime implicant (due to proper subterm ac) A redundant implicant is an implicant that can be removed without changing the value of the predicate Example: f = ab + ac + bc ab is redundant Predicate can be written: ac + bc 7

Unique True Points A minimal DNF representation is one with only prime, non-redundant implicants A unique true point with respect to a given implicant is an assignment of truth values so that The given implicant is true, and All other implicants are false A unique true point test focuses on just one implicant A minimal representation guarantees the existence of at least one unique true point for each implicant Multiple Unique True Point Coverage (MUTP) : Given minimal DNF representations of a predicate f, for each implicant i, choose unique true points (UTPs) such that clauses not in i take on values T and F. 8

Unique True Point Example Consider again : f = ab + bc Implicants : { ab, bc, b, ac } Each of these implicants is prime None of these implicants is redundant Unique true points : ab: {TTT} bc: {FTF} b: {FFF, TFF, TFT} ac: {FTT} Note: One possible (minimal) test set satisfying MUTP For third clause, need first and third tests, but not second Note that MUTP is infeasible for the other three clauses not enough UTPs for clauses not in implicant to take on all truth values

Near False Points A near false point with respect to a clause c in implicant i is an assignment of truth values such that f is false, but if c is negated (and all other clauses left as is), i (and hence f) evaluates to true Relation to determination: at a near false point, c determines f Hence we should expect relationship to ACC criteria Note that definition only mentions f, and not f Clearly, CUTPNFP subsumes RACC Unique True Point and Near False Point Pair Coverage (CUTPNFP) : Given a minimal DNF representation of a predicate f, for each clause c in each implicant i, TR contains a unique true point for i and a near false point for c such that the points differ only in the truth value of c.

CUTPNFP Example Consider f = ab + cd Implicant ab has 3 unique true points : {TTFF, TTFT, TTTF} For clause a, we can pair unique true point TTFF with near false point FTFF For clause b, we can pair unique true point TTFF with near false point TFFF Implicant cd has 3 unique true points : {FFTT, FTTT, TFTT} For clause c, we can pair unique true point FFTT with near false point FFFT For clause d, we can pair unique true point FFTT with near false point FFTF CUTPNFP set : {TTFF, FFTT, TFFF, FTFF, FFTF, FFFT} First two tests are unique true points; others are near false points Rough number of tests required: # implicants * # literals

The MNFP and MUMCUT Criteria The next two criteria provide enough scaffolding to make guarantees about fault detection (see later slides) Multiple Near False Point Coverage (MNFP) : Given a minimal DNF representation of a predicate f, for each literal c in each implicant i, TR choose near false points (NFPs) such that clauses not in i take on values T and F. MUMCUT : Given a minimal DNF representation of a predicate f, apply MUTP, CUTPNFP, and MNFP.

DNF Fault Classes ENF: Expression Negation Fault f = ab+c f’ = ab+c TNF: Term Negation Fault f = ab+c f’ = ab+c TOF: Term Omission Fault f = ab+c f’ = ab LNF: Literal Negation Fault f = ab+c f’ = ab+c LRF: Literal Reference Fault f = ab + bcd f’ = ad + bcd LOF: Literal Omission Fault f = ab + c f’ = a + c LIF: Literal Insertion Fault f = ab + c f’ = ab + bc ORF+: Operator Reference Fault f = ab + c f’ = abc ORF*: Operator Reference Fault f = ab + c f’ = a + b + c Key idea is that fault classes are related with respect to testing : Test sets guaranteed to detect certain faults are also guaranteed to detect additional faults

Fault Detection Relationships Literal Insertion Fault LIF Literal Reference Fault LRF Literal Omission Fault LOF Term Omission Fault TOF Literal Negation Fault LNF Operator Reference Fault ORF* Operator Reference Fault ORF+ Term Negation Fault TNF Expression Negation Fault ENF

Karnaugh Maps for Testing Logic Expressions Fair Warning We use, rather than teach, Karnaugh Maps Newcomers to Karnaugh Maps probably need a tutorial Suggestion: Google “Karnaugh Map Tutorial” Our goal: Apply Karnaugh Maps to concepts used to test logic expressions Identify when a clause determines a predicate Identify the negation of a predicate Identify prime implicants and redundant implicants Identify unique true points Identify unique true point / near false point pairs No new material here on testing Just fast shortcuts for concepts already presented

K-Map: A Clause Determines a Predicate Consider the predicate : f = b + ac + ac Suppose we want to identify when b determines f The dashed line highlights where b changes value If two cells joined by the dashed line have different values for f, then b determines f for those two cells b determines f: ac + ac (but NOT at ac or ac ) Repeat for clauses a and c t 1 10 11 01 00 ab c Introduction to Software Testing, Edition 2 (Ch 8) © Ammann & Offutt

K-Map: Negation of a predicate Consider the predicate: f = ab + bc Draw the Karnaugh Map for the negation Identify groups Write down negation: f = b + a c t 1 10 11 01 00 ab c t 1 10 11 01 00 ab c Introduction to Software Testing, Edition 2 (Ch 8) © Ammann & Offutt

K-Map: Prime and Redundant Implicants Consider the predicate: f = abc + abd + abcd + abcd + acd Draw the Karnaugh Map Implicants that are not prime: abd, abcd, abcd, acd Redundant implicant: abd Prime implicants Three: ad, bcd, abc The last is redundant Minimal DNF representation f = ad + bcd 01 00 10 11 ab cd t Introduction to Software Testing, Edition 2 (Ch 8) © Ammann & Offutt

K-Map: Unique True Points Consider the predicate: f = ab + cd Three unique true points for ab TTFF, TTFT, TTTF TTTT is a true point, but not a unique true point Three unique true points for cd FFTT, FTTT, TFTT Unique true points for f f = ac + bc + ad + bd FTFT,TFFT, FTTF, TFTF 01 00 10 11 ab cd t Introduction to Software Testing, Edition 2 (Ch 8) © Ammann & Offutt

MUTP: Multiple Unique True Points For each implicant find unique true points (UTPs) so that Literals not in implicant take on values T and F Consider the DNF predicate: f = ab + cd For implicant ab Choose TTFT, TTTF For implicant cd Choose FTTT, TFTT MUTP test set {TTFT, TTTF, FTTT, TFTT} 01 00 10 11 ab cd t Introduction to Software Testing, Edition 2 (Ch 8) © Ammann & Offutt

CUTPNFP: Corresponding Unique True Point Near False Point Pairs Consider the DNF predicate: f = ab + cd For implicant ab For a, choose UTP, NFP pair TTFF, FTFF For b, choose UTP, NFP pair TTFT, TFFT For implicant cd For c, choose UTP, NFP pair FFTT, FFFT For d, choose UTP, NFP pair FFTT, FFTF Possible CUTPNFP test set {TTFF, TTFT, FFTT //UTPs FTFF, TFFT, FFFT, FFTF} //NFPs 01 00 10 11 ab cd t Introduction to Software Testing, Edition 2 (Ch 8) © Ammann & Offutt

MNFP : Multiple Near False Points Find NFP tests for each literal such that all literals not in the term attain F and T Consider the DNF predicate: f = ab + cd For implicant ab Choose FTFT, FTTF for a Choose TFFT, TFTF for b For implicant cd Choose FTFT, TFFT for c Choose FTTF, TFTF for d MNFP test set {TFTF, TFFT, FTTF, TFTF} Example is small, but generally MNFP is large 01 00 10 11 ab cd t Introduction to Software Testing, Edition 2 (Ch 8) © Ammann & Offutt

Minimal-MUMCUT Criterion Kaminski/Ammann (ICST 2009) Minimal-MUMCUT uses low level criterion feasibility analysis Adds CUTPNFP and MNFP only when necessary Minimal-MUMCUT guarantees detecting LIF, LRF, LOF And thus all 9 faults in the hierarchy CUTPNFP feasible? MNFP Test Set = MUTP + MNFP For Each Literal In Term MUTP + CUTPNFP MUTP feasible? MUTP + NFP For Each Term Introduction to Software Testing, Edition 2 (Ch 8) © Ammann & Offutt

Example: Using Control-flow Testing to Test Program COUNT Consider the following program: /* COUNT This program counts the number of characters and lines in a text file. INPUT: Text File OUTPUT: Number of characters and number of lines. */ 1                  main(int argc, char *argv[]) 2                  { 3                  int numChars = 0; 4                  int numLines = 0; 5                  char chr; 6                  FILE *fp = NULL; 7                 

Program COUNT (Cont’d) 8                  if (argc < 2) 9                  { 10              printf(“\nUsage: %s <filename>”, argv[0]); 11              return (-1); 12              } 13              fp = fopen(argv[1], “r”); 14              if (fp == NULL) 15              { 16              perror(argv[1]); /* display error message */ 17              return (-2); 18              }

Program COUNT (Cont’d) 19 while (!feof(fp)) 20              { 21              chr = getc(fp); /* read character */ 22              if (chr == ‘\n’) /* if carriage return */ 23              ++numLines; 24              else 25              ++numChars; 26              } 27              printf(“\nNumber of characters = %d”, numChars); 28              printf(“\nNumber of lines = %d”, numLines); 29              }

Bubble Sort Algorithm 1 for (j=1; j<N; j++) { last = N - j + 1; 2 for (k=1; k<last; k++) { 3 if (list[k] > list[k+1]) { temp = list[k]; list[k] = list[k+1]; list[k+1] = temp; 4 } 5 } 6 } 7 print(“Done\n”); 1 2 3 4 5 6 7

Example Control Flow – Stats public static void computeStats (int [ ] numbers) { int length = numbers.length; double med, var, sd, mean, sum, varsum; sum = 0; for (int i = 0; i < length; i++) sum += numbers [ i ]; } med = numbers [ length / 2]; mean = sum / (double) length; varsum = 0; varsum = varsum + ((numbers [ I ] - mean) * (numbers [ I ] - mean)); var = varsum / ( length - 1.0 ); sd = Math.sqrt ( var ); System.out.println ("length: " + length); System.out.println ("mean: " + mean); System.out.println ("median: " + med); System.out.println ("variance: " + var); System.out.println ("standard deviation: " + sd); © Ammann & Offutt 28