Pilz, S. (2023). Improving rust mutation testing using static and dynamic program analysis [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2023.110084
E194 - Institut für Information Systems Engineering
-
Date (published):
2023
-
Number of Pages:
54
-
Keywords:
software correctness; software testing; mutation testing; weak and strong mutation analysis; static and dynamic program analysis; Rust
en
Abstract:
Mutation testing is a powerful software testing method in which the program under test is seeded with artificial faults that are considered to be possible programming errors and should be discovered by a high-quality test suite. The cost of mutation testing is one of the most critical issues for its practical applications. In this thesis, we present the tool `muttest` for mutation analysis of Rust programs that improves quality and performance of mutation analysis compared to related systems. This thesis proposes several methods for leveraging Rust language features and results of static analysis to implement mutation operators while preventing the generation of invalid mutations. Moreover, dynamic program analysis is used to perform weak mutation analysis and its results are utilized to improve the performance of strong mutation analysis. By relying only on stable features of Rust, we ensure best-possible compatibility of `muttest` with future versions of Rust. The experimental evaluation in this thesis shows that `muttest` has competitive performance and produces a high-quality mutation analysis report.
en
Mutationstesten ist eine mächtiger Prozess um Software zu testen. Dabei wird das Zielprogramm mit künstlichen Fehlern versehen, die als mögliche Programmierfehler angenommen werden und die durch qualitativ hochwertige Testfälle entdeckt werden sollten. Die Kosten des Mutationstestens sind einer der kritischsten Eigenschaften, welche die praktische Anwendung erschwert. In dieser Arbeit stellen wir das Tool `muttest` für Mutationsanalyse von Rust Programmen vor, das die Qualität und Performanz von Mutationsanalyse von vergleichbaren Systemen übertrifft. Diese Arbeit stellt einige Techniken vor wie Sprachfeatures von Rust sowie die Ergebnisse von statischer Programmanalyse dazu verwendet werden Mutationsoperatoren zu implementieren, die keine ungültigen Mutationen generieren. Außerdem wird dynamische Programmanalyse dafür verwendet schwache Mutationsanalyse durchzuführen. Diese Ergebnisse werden wiederum dafür eingesetzt die Laufzeit von starker Mutationsanalyse zu verbessern. Durch die Einschränkung auf stabile Sprachfeatures von Rust, stellen wir optimale Kompatibilität von `muttest` mit zukünftigen Versionen von Rust sicher. Die experimentelle Evaluation dieser Arbeit zeigt, dass `muttest` konkurrenzfähige Laufzeit aufweist und einen qualitativ hochwertigen Mutationsanalysebericht liefert.