Semantic Mutation Testing

advertisement
Semantic Mutation Testing
John A. Clark, Haitao Dan, and Robert M. Hierons
Andreas Voraberger
13.01.2014
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
1
Content
• Introduction
• Traditional Mutation Testing
•
•
•
•
The idea
Mutation count
Possibilities
Advantages / Disadvantages
• Semantic Mutation Testing
•
•
•
•
•
•
•
•
•
The idea
Implementing semantic mutation
Advantages
Semantic Error Model
Common misunderstandings
Refinement
Translation
Example (Cruise-control system)
Conclusion
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
2
Introduction
• Testing is important but expensive
• 50% of development budget
• Test automation
• More efficient/effective
• Mutation Testing
• Distinguishing between descriptions (N)
• Semantic Mutation Testing
• Distinguishing between semantics (L)
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
3
Introduction
• Code defined by the pair: (N, L)
• N: the description (source code)
• L: the semantics of the language
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
4
Traditional Mutation Testing
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
5
The idea
• Mutants are classes of faults
• Produce mutants (N’)
• Making changes to the program
• Apply mutation operators
• {+, -}
• {<=, <}
• {delete parts}
• (N,L)  (N‘,L)
• Test Cases should distinguish N/N‘ (mutant killed)
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
6
Mutation count
• Single mutation operator creates large number of mutations
• Even in small programs
• Only use “first-order mutants“
• Produced by application of one operator
• Hypothesis: all “first-order mutants“ kill most “higher-order mutants“
• Equivalent mutant: not kill able
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
7
Possibilities
1. Judge test data against the mutants created
2. Produce test data to kill all mutants
• A test set that is good in distinguishing N from N’ is good at finding
faults
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
8
Advantages
• Target particular classes of faults
• Optimal for small slips or typos
• Simulate other test criteria
• Mutants lead to errors  provide code coverage
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
9
Disadvantages
• High number of mutants, even with
• Only “first-order mutants“
• Small programs
• Solution: “selective mutation“
• Equivalent mutants
• Leads to manual effort
• Increases costs
• Doesn’t aim on semantic mistakes
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
10
Semantic Mutation Testing (SMT)
Overview
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
11
The idea
• Produce mutants (L’)
• (N,L)  (N,L‘)
• Discover misunderstandings related to semantic mistakes
• Requires description language with a semantics that allows
manipulation
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
12
Implementing semantic mutation
• Parameterisable system
• Mutate through changing the parameters
• Express semantics that can be manipulated
• A set of rewrite rules
• Simulate a mutation of the semantics
• Changes to the syntax throughout the description
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
13
Advantages
• Lead to far fewer mutants
• Fewer equivalent mutants
• Tests translation, refinement, migration, porting code
• Eliminates misunderstandings
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
14
Semantic Mutation Testing (SMT)
Scenarios
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
15
Semantic Error Model
• Change of description in development process
• Abstract  Concrete
1.
2.
3.
4.
5.
Requirements
Specification
Design
Code
Machine code
• Misunderstandings in every transformation
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
16
Semantic Error Model
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
17
Semantic Error Model
• Refinement
• Transformation to different abstraction level
• Translation
• Transformation on the same abstraction level
 Basis for misunderstandings
 Solution: SMT
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
18
Common misunderstandings
• Find set of semantic misunderstandings
• For different languages
• Based on studies or experience
• Implement tests, finding them
• Set of operators should reflect the environment
• Different mistakes depending on programmer skills
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
19
Refinement
• Semantic mistakes between abstraction levels
• Problems on copying syntax
• Maybe different semantics
• Examples
•
•
•
•
•
Truncation rules
Precedence rules
Datatypes
Floating point precision
Binary representation
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
20
Migration / Porting (Translation)
• Migration / Porting to a different language
• Maybe different semantics
• Use a semantic test case generation tool
• Suits of semantic mutation operators for common combinations
• Point to common failures
• Example: C to Z
• Division of negative numbers
• Branching structures
• floating-point comparison
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
21
Semantic Mutation Testing (SMT)
Example
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
22
Example
• Shows
• cruise-control system
• Not only slips have to be tested
• Developers can make semantic mistakes
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
23
Statechart for a cruise-control system
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
24
Cruise-control system (Case 1)
• State: no_vehicle_in_front
• Events:
• brake
• level=increase
• What happens?
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
25
Cruise-control system (Case 2)
• State: no_vehicle_in_front
• Events:
• Vehicle detected
• level=increase
• What happens?
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
26
Conclusion
• Semantic Testing is necessary
• SMT is a working practice
• Captures a different failure type than MT
• Focuses on misunderstandings
• Normal MT still necessary
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
27
Quelle
• John A. Clark, Haitao Dan, and Robert M. Hierons. Semantic mutation
testing. In Third International Conference on Software Testing,
Verification, and Validation Workshops, pages 100-109. IEEE, 2010
Andreas Voraberger
AK Softwaretechnologie 1 WS 2013/14
28
Download