Beruflich Dokumente
Kultur Dokumente
Syntax-based Testing
(Mutation Testing)
Lin Tan
February 12, 2014
16-Syntax - February 12, 2014
Mutation Testing
Grammar
account = digit{3}
amount = "$"digit+"."digit{2}
digit = ["0"-"9"]
4
16-Syntax - February 12, 2014
Using Grammar
Grammar
actions = action*
account = digit{3}
amount = $digit+"."digit{2}
digit = ["0"-"9"]
6
Start symbol
Non-terminals
Production rule
Terminals
16-Syntax - February 12, 2014
Coverage Criteria
Grammar
actions = action*
account = digit{3}
amount = $digit+"."digit{2}
digit = ["0"-"9"]
8
Start symbol
Non-terminals
Production rule
Terminals
How many terminals?
How many productions?
How many derivable strings?
16-Syntax - February 12, 2014
Terminology
Nonterminal Replacement
Terminal Replacement
amount = $digit+"$"digit{2}
12
deposit $9.22 $12.35
ground string:
deposit 123 $12.35
deposit 123 $12$35
16-Syntax - February 12, 2014
More Grammar Mutation Operators
Grammar
actions = action*
account = digit{3}
amount = $digit+"."digit{2}
digit = ["0"-"9"]
16
Production rule
16-Syntax - February 12, 2014
Coverage Criteria
Goal
Kill mutants
Reachability:
Infection:
Propagation:
Unavoidable;
Need B " A;
Need B > A;
Wrong minVal needs to return to the caller; that is, we can't
execute the body of the if statement.
16-Syntax - February 12, 2014
Conditions
Reachability: unavoidable;
Infection: need B ! A;
Operator Replacement
Math Mutator
Increments Mutator
http://pitest.org/
16-Syntax - February 12, 2014