Slide 1

Slide 1 text

Using Conditional Mutation to Increase the Efficiency of Mutation Analysis Ren´ e Just1 & Gregory M. Kapfhammer2 & Franz Schweiggert1 1Ulm University, Germany 2Allegheny College, USA 6th International Workshop on the Automation of Software Test Waikiki, Honolulu, Hawaii, USA May 23 - 24, 2011

Slide 2

Slide 2 text

Introduction Conditional Mutation Implementation Conclusion Overview of the Presentation Efficient Mutation Analysis Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 3

Slide 3 text

Introduction Conditional Mutation Implementation Conclusion Overview of the Presentation Efficient Mutation Analysis Challenges Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 4

Slide 4 text

Introduction Conditional Mutation Implementation Conclusion Overview of the Presentation Efficient Mutation Analysis Challenges Solutions Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 5

Slide 5 text

Introduction Conditional Mutation Implementation Conclusion Overview of the Presentation Efficient Mutation Analysis Challenges Solutions Conditional Mutation Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 6

Slide 6 text

Introduction Conditional Mutation Implementation Conclusion Overview of the Presentation Efficient Mutation Analysis Challenges Solutions Conditional Mutation Syntax Tree Transformation Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 7

Slide 7 text

Introduction Conditional Mutation Implementation Conclusion Overview of the Presentation Efficient Mutation Analysis Challenges Solutions Conditional Mutation Syntax Tree Transformation Expressions and Statements Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 8

Slide 8 text

Introduction Conditional Mutation Implementation Conclusion Overview of the Presentation Efficient Mutation Analysis Challenges Solutions Conditional Mutation Syntax Tree Transformation Expressions and Statements Compiler Integrated Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 9

Slide 9 text

Introduction Conditional Mutation Implementation Conclusion Overview of the Presentation Efficient Mutation Analysis Challenges Solutions Conditional Mutation Syntax Tree Transformation Expressions and Statements Compiler Integrated Comprehensive Empirical Study Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 10

Slide 10 text

Introduction Conditional Mutation Implementation Conclusion Overview of the Presentation Efficient Mutation Analysis Challenges Solutions Conditional Mutation Syntax Tree Transformation Expressions and Statements Compiler Integrated Comprehensive Empirical Study Efficient Technique - Fully Integrated into the Java 6 SE Compiler Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 11

Slide 11 text

Introduction Conditional Mutation Implementation Conclusion Overview of Mutation Analysis public int eval(int x){ int a=3, b=1, y; y = a * x; y += b; return y; } public int max(int a, int b){ int max = a; if(b>a){ max=b; } return max; } Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 12

Slide 12 text

Introduction Conditional Mutation Implementation Conclusion Overview of Mutation Analysis public int eval(int x){ int a=3, b=1, y; y = a * x; y += b; return y; } public int max(int a, int b){ int max = a; if(b>a){ max=b; } return max; } Methodically inject small syntactical faults into the program under test Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 13

Slide 13 text

Introduction Conditional Mutation Implementation Conclusion Overview of Mutation Analysis public int eval(int x){ int a=3, b=1, y; y = a * x; y += b; return y; } public int max(int a, int b){ int max = a; if(b>a){ max=b; } return max; } Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 14

Slide 14 text

Introduction Conditional Mutation Implementation Conclusion Overview of Mutation Analysis public int eval(int x){ int a=3, b=1, y; y = a * x; y += b; return y; } public int max(int a, int b){ int max = a; if(b>a){ max=b; } return max; } =⇒ =⇒ y = a - x; y = a + x; y = a / x; if(b < a) if(b != a) if(b == a) Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 15

Slide 15 text

Introduction Conditional Mutation Implementation Conclusion Overview of Mutation Analysis public int eval(int x){ int a=3, b=1, y; y = a * x; y += b; return y; } public int max(int a, int b){ int max = a; if(b>a){ max=b; } return max; } Unbiased and powerful method for assessing oracles and input values Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 16

Slide 16 text

Introduction Conditional Mutation Implementation Conclusion Overview of Mutation Analysis public int eval(int x){ int a=3, b=1, y; y = a * x; y += b; return y; } public int max(int a, int b){ int max = a; if(b>a){ max=b; } return max; } Unbiased and powerful method for assessing oracles and input values Useful method for fault seeding during the empirical study of testing techniques Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 17

Slide 17 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 18

Slide 18 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 19

Slide 19 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Program Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 20

Slide 20 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Program Mutants Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 21

Slide 21 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Program Mutants Often Yields a Substantial Num- ber of Mutants Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 22

Slide 22 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Program Mutants Often Yields a Substantial Num- ber of Mutants High Time Over- head for Generation Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 23

Slide 23 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Program Mutants Often Yields a Substantial Num- ber of Mutants High Time Over- head for Generation Mutation Analysis Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 24

Slide 24 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Program Mutants Often Yields a Substantial Num- ber of Mutants High Time Over- head for Generation Mutation Analysis Tests Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 25

Slide 25 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Program Mutants Often Yields a Substantial Num- ber of Mutants High Time Over- head for Generation Mutation Analysis Tests Results Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 26

Slide 26 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Program Mutants Often Yields a Substantial Num- ber of Mutants High Time Over- head for Generation Mutation Analysis Tests Results Individually Executing the Mutants is Too Expensive Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 27

Slide 27 text

Introduction Conditional Mutation Implementation Conclusion Mutation Analysis Challenges Mutant Generation Mutation Operators Program Mutants Often Yields a Substantial Num- ber of Mutants High Time Over- head for Generation Mutation Analysis Tests Results Individually Executing the Mutants is Too Expensive Prior Solutions? Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 28

Slide 28 text

Introduction Conditional Mutation Implementation Conclusion Prior Work in Mutation Analysis Improving Mutation Analysis Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 29

Slide 29 text

Introduction Conditional Mutation Implementation Conclusion Prior Work in Mutation Analysis Improving Mutation Analysis Offutt and Untch Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 30

Slide 30 text

Introduction Conditional Mutation Implementation Conclusion Prior Work in Mutation Analysis Improving Mutation Analysis Offutt and Untch Do Fewer Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 31

Slide 31 text

Introduction Conditional Mutation Implementation Conclusion Prior Work in Mutation Analysis Improving Mutation Analysis Offutt and Untch Do Fewer Sampling Selection Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 32

Slide 32 text

Introduction Conditional Mutation Implementation Conclusion Prior Work in Mutation Analysis Improving Mutation Analysis Offutt and Untch Do Fewer Do Smarter Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 33

Slide 33 text

Introduction Conditional Mutation Implementation Conclusion Prior Work in Mutation Analysis Improving Mutation Analysis Offutt and Untch Do Fewer Do Smarter Distributed Weak Mutation Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 34

Slide 34 text

Introduction Conditional Mutation Implementation Conclusion Prior Work in Mutation Analysis Improving Mutation Analysis Offutt and Untch Do Fewer Do Smarter Do Faster Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 35

Slide 35 text

Introduction Conditional Mutation Implementation Conclusion Prior Work in Mutation Analysis Improving Mutation Analysis Offutt and Untch Do Fewer Do Smarter Do Faster Compiler Integrated Bytecode Transformation Mutant Schemata Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 36

Slide 36 text

Introduction Conditional Mutation Implementation Conclusion Prior Work in Mutation Analysis Improving Mutation Analysis Offutt and Untch Do Fewer Do Smarter Do Faster Higher Order Mutation Jia and Harman Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 37

Slide 37 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Conditional Mutation Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 38

Slide 38 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Conditional Mutation Encapsulates all mutants within the same block Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 39

Slide 39 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Conditional Mutation Encapsulates all mutants within the same block Can be inte- grated within the compiler Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 40

Slide 40 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Conditional Mutation Encapsulates all mutants within the same block Transforms the abstract syntax tree (AST) Can be inte- grated within the compiler Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 41

Slide 41 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Conditional Mutation Encapsulates all mutants within the same block Transforms the abstract syntax tree (AST) Stmt → Conditional Stmt (if-then-else, switch) Expr → Conditional Expr (conditional operator ?:) Can be inte- grated within the compiler Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 42

Slide 42 text

Introduction Conditional Mutation Implementation Conclusion Working Example public int eval(int x){ int a=3, b=1, y; y = a * x ; y += b; return y; } Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 43

Slide 43 text

Introduction Conditional Mutation Implementation Conclusion Working Example public int eval(int x){ int a=3, b=1, y; y = a * x ; y += b; return y; } ⇓ ASSIGN IDENT y BINARY ∗ a x Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 44

Slide 44 text

Introduction Conditional Mutation Implementation Conclusion Working Example public int eval(int x){ int a=3, b=1, y; y = a * x ; y += b; return y; } ⇓ ASSIGN IDENT y BINARY ∗ a x Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 45

Slide 45 text

Introduction Conditional Mutation Implementation Conclusion Working Example public int eval(int x){ int a=3, b=1, y; y = a * x ; y += b; return y; } ⇓ ASSIGN IDENT y BINARY ∗ a x =⇒ =⇒ ASSIGN IDENT y COND-EXPR THEN BINARY + a x COND (M NO ==2) ELSE COND-EXPR THEN BINARY - a x COND (M NO ==1) ELSE BINARY ∗ a x Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 46

Slide 46 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Algorithm public int eval(int x){ int a=3, b=1, y; y = a * x ; y += b; return y; } 1 Define mutation operators MOP(x ∗ y) = {x − y, x + y, x/y} 2 Determine whether current expression or statement is affected by mutation 3 Apply mutation operators Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 47

Slide 47 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Algorithm public int eval(int x){ int a=3, b=1, y; y = a * x ; y += b; return y; } 1 Define mutation operators MOP(x ∗ y) = {x − y, x + y, x/y} 2 Determine whether current expression or statement is affected by mutation 3 Apply mutation operators Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 48

Slide 48 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Algorithm public int eval(int x){ int a=3, b=1, y; y = a * x ; y += b; return y; } 1 Define mutation operators MOP(x ∗ y) = {x − y, x + y, x/y} 2 Determine whether current expression or statement is affected by mutation 3 Apply mutation operators Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 49

Slide 49 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Algorithm public int eval(int x){ int a=3, b=1, y; y = (M_NO==1)? a - x : a * x ; y += b; return y; } 1 Define mutation operators MOP(x ∗ y) = {x − y, x + y, x/y} 2 Determine whether current expression or statement is affected by mutation 3 Apply mutation operators Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 50

Slide 50 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Algorithm public int eval(int x){ int a=3, b=1, y; y = (M_NO==2)? a + x : (M_NO==1)? a - x : a * x ; y += b; return y; } 1 Define mutation operators MOP(x ∗ y) = {x − y, x + y, x/y} 2 Determine whether current expression or statement is affected by mutation 3 Apply mutation operators Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 51

Slide 51 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Algorithm public int eval(int x){ int a=3, b=1, y; y = (M_NO==3)? a / x : (M_NO==2)? a + x : (M_NO==1)? a - x : a * x ; y += b; return y; } 1 Define mutation operators MOP(x ∗ y) = {x − y, x + y, x/y} 2 Determine whether current expression or statement is affected by mutation 3 Apply mutation operators Versatile approach, can be combined with prior solutions Formal description and implementation details in the paper Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 52

Slide 52 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Algorithm public int eval(int x){ int a=3, b=1, y; y = (M_NO==3)? a / x : (M_NO==2)? a + x : (M_NO==1)? a - x : a * x ; y += b; return y; } 1 Define mutation operators MOP(x ∗ y) = {x − y, x + y, x/y} 2 Determine whether current expression or statement is affected by mutation 3 Apply mutation operators Versatile approach, can be combined with prior solutions Formal description and implementation details in the paper Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 53

Slide 53 text

Introduction Conditional Mutation Implementation Conclusion Conditional Mutation Algorithm public int eval(int x){ int a=3, b=1, y; y = (M_NO==3)? a / x : (M_NO==2)? a + x : (M_NO==1)? a - x : a * x ; y += b; return y; } 1 Define mutation operators MOP(x ∗ y) = {x − y, x + y, x/y} 2 Determine whether current expression or statement is affected by mutation 3 Apply mutation operators Versatile approach, can be combined with prior solutions Formal description and implementation details in the paper Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 54

Slide 54 text

Introduction Conditional Mutation Implementation Conclusion Mutation Coverage public int eval(int x){ int a=3, b=1, y; y = (M_NO==3)? a / x : (M_NO==2)? a + x : (M_NO==1)? a - x : a * x ; y += b; return y; } Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 55

Slide 55 text

Introduction Conditional Mutation Implementation Conclusion Mutation Coverage public int eval(int x){ int a=3, b=1, y; y = (M_NO==3)? a / x : (M_NO==2)? a + x : (M_NO==1)? a - x : a * x ; y += b; return y; } Mutants not exe- cuted cannot be killed Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 56

Slide 56 text

Introduction Conditional Mutation Implementation Conclusion Mutation Coverage public int eval(int x){ int a=3, b=1, y; y = (M_NO==3)? a / x : (M_NO==2)? a + x : (M_NO==1)? a - x : (M_NO==0 && COVERED(1,3))? a * x : a * x ; y += b; return y; } Mutants not exe- cuted cannot be killed Determine covered mutants with addi- tional instrumentation Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 57

Slide 57 text

Introduction Conditional Mutation Implementation Conclusion Mutation Coverage public int eval(int x){ int a=3, b=1, y; y = (M_NO==3)? a / x : (M_NO==2)? a + x : (M_NO==1)? a - x : (M_NO==0 && COVERED(1,3))? a * x : a * x ; y += b; return y; } Mutants not exe- cuted cannot be killed Determine covered mutants with addi- tional instrumentation Only execute and investi- gate the covered mutants Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 58

Slide 58 text

Introduction Conditional Mutation Implementation Conclusion MAJOR: Mutation Analysis in a Java Compiler Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 59

Slide 59 text

Introduction Conditional Mutation Implementation Conclusion MAJOR: Mutation Analysis in a Java Compiler Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 60

Slide 60 text

Introduction Conditional Mutation Implementation Conclusion MAJOR: Mutation Analysis in a Java Compiler Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 61

Slide 61 text

Introduction Conditional Mutation Implementation Conclusion MAJOR: Mutation Analysis in a Java Compiler Configuration: Common compiler options Domain specific language (DSL) http://www.mathematik.uni-ulm.de/sai/major Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 62

Slide 62 text

Introduction Conditional Mutation Implementation Conclusion Performance Analysis 1 2 3 4 5 6 7 8 9 10 11 12 0 20000 40000 60000 80000 100000 120000 140000 Compiler runtime in seconds Number of mutants apache ant jfreechart itext java pathfinder commons math commons lang numerics4j Overhead for generating and compiling mutants is negligible Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 63

Slide 63 text

Introduction Conditional Mutation Implementation Conclusion Performance Analysis 1 2 3 4 5 6 7 8 9 10 11 12 0 20000 40000 60000 80000 100000 120000 140000 Compiler runtime in seconds Number of mutants apache ant jfreechart itext java pathfinder commons math commons lang numerics4j Overhead for generating and compiling mutants is negligible Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 64

Slide 64 text

Introduction Conditional Mutation Implementation Conclusion Performance Analysis Application Mutants Runtime of test suite Memory consumption original instrumented original instrumented wcs wcs+cov aspectj 406,382 4.3 4.8 5.0 559 813 apache ant 60,258 331.0 335.0 346.0 237 293 jfreechart 68,782 15.0 18.0 23.0 220 303 itext 124,184 5.1 5.6 6.3 217 325 java pathfinder 37,331 17.0 22.0 29.0 182 217 commons math 67,895 67.0 83.0 98.0 153 225 commons lang 25,783 10.3 11.8 14.8 104 149 numerics4j 5,869 1.2 1.3 1.6 73 90 Runtime overhead is application dependent Larger for CPU-bound applications Small for I/O-bound applications Even for large projects, applicable on commodity workstations Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 65

Slide 65 text

Introduction Conditional Mutation Implementation Conclusion Performance Analysis Application Mutants Runtime of test suite Memory consumption original instrumented original instrumented wcs wcs+cov aspectj 406,382 4.3 4.8 5.0 559 813 apache ant 60,258 331.0 335.0 346.0 237 293 jfreechart 68,782 15.0 18.0 23.0 220 303 itext 124,184 5.1 5.6 6.3 217 325 java pathfinder 37,331 17.0 22.0 29.0 182 217 commons math 67,895 67.0 83.0 98.0 153 225 commons lang 25,783 10.3 11.8 14.8 104 149 numerics4j 5,869 1.2 1.3 1.6 73 90 Runtime overhead is application dependent Larger for CPU-bound applications Small for I/O-bound applications Even for large projects, applicable on commodity workstations Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 66

Slide 66 text

Introduction Conditional Mutation Implementation Conclusion Performance Analysis Application Mutants Runtime of test suite Memory consumption original instrumented original instrumented wcs wcs+cov aspectj 406,382 4.3 4.8 5.0 559 813 apache ant 60,258 331.0 335.0 346.0 237 293 jfreechart 68,782 15.0 18.0 23.0 220 303 itext 124,184 5.1 5.6 6.3 217 325 java pathfinder 37,331 17.0 22.0 29.0 182 217 commons math 67,895 67.0 83.0 98.0 153 225 commons lang 25,783 10.3 11.8 14.8 104 149 numerics4j 5,869 1.2 1.3 1.6 73 90 Runtime overhead is application dependent Larger for CPU-bound applications Small for I/O-bound applications Even for large projects, applicable on commodity workstations Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 67

Slide 67 text

Introduction Conditional Mutation Implementation Conclusion Performance Analysis Application Mutants Runtime of test suite Memory consumption original instrumented original instrumented wcs wcs+cov aspectj 406,382 4.3 4.8 5.0 559 813 apache ant 60,258 331.0 335.0 346.0 237 293 jfreechart 68,782 15.0 18.0 23.0 220 303 itext 124,184 5.1 5.6 6.3 217 325 java pathfinder 37,331 17.0 22.0 29.0 182 217 commons math 67,895 67.0 83.0 98.0 153 225 commons lang 25,783 10.3 11.8 14.8 104 149 numerics4j 5,869 1.2 1.3 1.6 73 90 Runtime overhead is application dependent Larger for CPU-bound applications Small for I/O-bound applications Even for large projects, applicable on commodity workstations Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 68

Slide 68 text

Introduction Conditional Mutation Implementation Conclusion Performance Analysis Application Mutants Runtime of test suite Memory consumption original instrumented original instrumented wcs wcs+cov aspectj 406,382 4.3 4.8 5.0 559 813 apache ant 60,258 331.0 335.0 346.0 237 293 jfreechart 68,782 15.0 18.0 23.0 220 303 itext 124,184 5.1 5.6 6.3 217 325 java pathfinder 37,331 17.0 22.0 29.0 182 217 commons math 67,895 67.0 83.0 98.0 153 225 commons lang 25,783 10.3 11.8 14.8 104 149 numerics4j 5,869 1.2 1.3 1.6 73 90 Runtime overhead is application dependent Larger for CPU-bound applications Small for I/O-bound applications Even for large projects, applicable on commodity workstations Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 69

Slide 69 text

Introduction Conditional Mutation Implementation Conclusion Enabling Efficient Mutation Analysis Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 70

Slide 70 text

Introduction Conditional Mutation Implementation Conclusion Enabling Efficient Mutation Analysis Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 71

Slide 71 text

Introduction Conditional Mutation Implementation Conclusion Conclusion Conclusion: Largest empirical study of mutation analysis to date Mutant generation time reduced to a minimum Mutation coverage provides runtime optimization Versatilely applicable in every Java-based environment Arbitrary conditions enable support for higher order mutation Future Work: Implement new mutation operators Enhance the domain specific language Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 72

Slide 72 text

Introduction Conditional Mutation Implementation Conclusion Conclusion Conclusion: Largest empirical study of mutation analysis to date Mutant generation time reduced to a minimum Mutation coverage provides runtime optimization Versatilely applicable in every Java-based environment Arbitrary conditions enable support for higher order mutation Future Work: Implement new mutation operators Enhance the domain specific language Just & Kapfhammer & Schweiggert Ulm University, Allegheny College Using Conditional Mutation to Increase the Efficiency of Mutation Analysis

Slide 73

Slide 73 text

Using Conditional Mutation to Increase the Efficiency of Mutation Analysis Thank you for your attention! Questions? http://www.mathematik.uni-ulm.de/sai/major