| Literature DB >> 23607084 |
Mike Papadakis1, Nicos Malevris.
Abstract
Mutation testing is usually regarded as an important method towards fault revealing. Despite this advantage, it has proved to be impractical for industrial use because of its expenses. To this extend, automated techniques are needed in order to apply and reduce the method's demands. Whilst there is much evidence that automated test data generation techniques can effectively automate the testing process, there has been little work on applying them in the context of mutation testing. In this paper, search-based testing is used in order to effectively generate test inputs capable of revealing mutants. To this end, a dynamic execution scheme capable of introducing and guiding the search towards the sought mutants is proposed. Experimentation with the proposed approach reveals its superiority from the previously proposed methods. Additionally, the framework's feasibility and practicality of producing mutation based test cases are also demonstrated.Entities:
Keywords: Mutation testing; Search based testing; Test case generation
Year: 2013 PMID: 23607084 PMCID: PMC3629277 DOI: 10.1186/2193-1801-2-121
Source DB: PubMed Journal: Springerplus ISSN: 2193-1801
Branch fitness
| Expression | True branch | False branch |
|---|---|---|
| a == b | abs( a - b) | a == b?k : 0 |
| a ! = b | a ! = b? 0 : k | abs (a ! = b?a - b : 0) |
| a < b | abs (a < b?0 : a - b + k) | abs (a < b?a - b + k : 0) |
| a < = b | abs (a < = b?0 : a - b) | abs (a < = b?a - b : 0) |
| a > b | abs (a > b?0 : a - b + k) | abs (a > b?a - b + k : 0) |
| a > = b | abs (a > = b?0 : a - b) | abs (a > = b?a - b : 0) |
| a || b | min[fit(a), fit(b)] | fit(a) + fit(b) |
| a && b | fit(a) + fit(b) | min[fit(a), fit(b)] |
Mutation fitness
| Operator | Original expression | Mutant fitness | ||
|---|---|---|---|---|
| a > b | a > = b: | a ! = b: | true: | |
| a < b: | a == b: | false: | ||
| a < = b: | ||||
| a > = b | a > b: | a ! = b: | true: | |
| a < b: | a == b: | alse:abs(a-b) | ||
| a < = b: | ||||
| a < b | a > b: | a ! = b: | true: | |
| a > = b: | a == b: | false: | ||
| a < = b: | ||||
| a < = b | a > b: | a ! = b: | true: | |
| a > = b: | a == b: | false: | ||
| a < b: | ||||
| a ! = b | a > b: | a < = b: | true: | |
| a > = b: | a == b: | false: | ||
| a < b: | ||||
| a == b | a > b: | a < = b: | true: | |
| a > = b: | a ! = b: | false: | ||
| a < b: | ||||
| a + b | a - b: | a / b: | a: | |
| a * b: | a% b: | b: | ||
| a – b | a + b: | a / b: | a: | |
| a * b: | a% b: | b: | ||
| a * b | a + b: | a / b: | a: | |
| a - b: | a% b: | b: | ||
| a / b | a + b: | a * b: | a: | |
| a – b: | a% b: | b: | ||
| a% b | a + b: | a * b: | a: | |
| a – b: | a / b: | b: | ||
| a | abs(a): | -abs (a): | 0: | |
| a && b | a||b: | a: | true: | |
| b: | false: | |||
| a || b | a&&b: | a: | true: | |
| b: | false: | |||
Figure 1Demonstrating Example.
Test program details
| Test subjects | Lines of code | Input settings | No. of mutants |
|---|---|---|---|
Mutants killed by the utilized fitness functions
| Test subjects | Random | Reach | Infect | Impact | DReach | DInfect | DImpact |
|---|---|---|---|---|---|---|---|
Figure 2Mutants killed by the utilized approaches for various fitness evaluation limits.
Figure 3Trityp program: Mutants killed vs fitness evaluations.