1 |
Mutation Testing : A comparison of mutation selection methodsHagman, Hans January 2012 (has links)
Software is all around us in our lives in the industrialized world, and we as a society and individuals need it to function correctly. Software testing fills the role of performing behavior audits, to guide the correction of the software to its intended behavior. The consequences of faulty software can range to the late arrival of trains, to nuclear meltdowns. This places quality requirements on the software of various levels. Program based mutation testing provides a high level of faultfinding capability. It does this by injecting many synthetic faults into the code under test, as described by mutation operators. These faults are used to search for testcases that would identify such faults, and consequently find real faults that the synthetic faults mimic. However, mutation testing is costly on three accounts; each mutant of the original code is compiled, each mutant should ideally have an associated testcase to reveal that fault the mutant contains, finally the testcases are analyzed thoroughly by looking the output of the original and mutants to reveal the error in behavior. In order to reduce cost while maintaining a high level of faultfinding, selective mutation testing is investigated, it uses a subset of all the available mutation operators. The investigation found that using Absolute value-, and Relational operator-, mutation reduces cost of mutation testing by 80%, while uncovering 83% of the injected faults.
|
2 |
Generate Test Selection Statistics With Automated Selective MutationGamini, Devi charan January 2020 (has links)
Context. Software systems are under constant updating for being faulty and to improve and introduce features. The Software testing is the most commonly used method for validating the quality of software systems. Agile processes help to automate testing process. A regression test is the main strategy used in testing. Regression testing is time consuming, but with increase in codebases is making it more time extensive and time consuming. Making regression testing time efficient for continuous integration is the new strategy. Objectives. This thesis focuses on co-relating code packages to test packages by automating mutation to inject error into C code. Regression testing against mutated code establishes co-relations. Co-relation data of particular modified code packages can be used for test selections. This method is most effective than the traditional test selection method. For this thesis to reduce the mutation costs selective mutation method is selected. Demonstrating the proof of concept helps to prove proposed hypothesis. Methods. An experiment answers the research questions. Testing of hypothesis on open source C programs will evaluate efficiency. Using this correlation method testers can reduce the testing cycles regardless of test environments. Results. Experimenting with sample programs using automated selective mutation the efficiency to co-relate tests to code packages was 93.4%. Results. After experimenting with sample programs using automated selective mutation the efficiency to co-relate tests to code packages was 93.4%. Conclusions. This research concludes that the automated mutation to obtain test selection statistics can be adopted. Though it is difficult for mutants to fail every test case, supposing that this method works with 93.4% efficient test failure on an average, then this method can reduce the test suite size to 5% for the particular modified code package.
|
3 |
Mutation testing : the perfect set of mutation operators / Mutationstestning : den perfekta mängden av mutationsoperatorerFalk, Jonathan January 2024 (has links)
While mutation testing is an effective fault-based testing technique, it has its challenges such as being computationally expensive and requiring a large amount of effort to review surviving mutants. These problems have resulted in mutation testing mostly being restricted to academic research and not as widely adopted in the industry. In the academic context, the focus has been on maximizing the mutation score and while a high mutation score might increase the quality of the software, it is not feasible to kill all the mutants. Moreover, all mutants are not as equally important, and some can not or should not be killed. Instead, the focus should be shifted to prioritizing the productive mutants, those that further improve the test suite or the source code. This thesis investigated if some mutation operators are more suitable for certain types of software by using selective mutation. The mutation operators were evaluated based on their ability to generate productive mutants. Moreover, the mutation operators were analyzed to identify how they could be improved to reduce the number of unproductive mutants generated by them. Dextool Mutate was used to conduct mutation testing on four open-source C/C++ software that were all different types of software. It was concluded that some mutation operators are more suitable for certain types of software resulting in the proposal of a set of mutation operators for each software type. Moreover, various improvements for the mutation operators were identified that reduce the number of unproductive mutants generated. Lastly, it may be helpful to customize the implementation of mutation operators for each type of software and some software types may require additional specialized mutation operators.
|
Page generated in 0.1235 seconds