Implementing Content-Based Regression Test Selection Using the LLVM Intermediate Representation

Unit testing is a commonly used technique to automatically test specific parts of a software (unit) in order to ensure correctness. However, running all tests after every change can take a significant amount of time and energy.

Therefore, we describe TASTING, an approach for efficiently selecting and reusing regression-test executions across program changes, branches, and variants in continuous integration settings. Instead of detecting changes between two variants of the software-under-test, TASTING recursively composes hashes of the defining elements with all their dependencies on AST-level at compile time into a semantic fingerprint of the test and its execution environment. This fingerprint is easy to store and remains stable across changes if the test’s run-time behavior is not affected.

The goal of this thesis is to replace the AST-level hashing procedure with an LLVM intermediate representation-based approach. For the evaluation, the new implementation than should be applied to various C/C++ open-source software projects.

USENIX Conference A Best Paper Award
cHash: Detection of Redundant Compilations via AST Hashing
Christian Dietrich, Valentin Rothberg, Ludwig Füracker, Andreas Ziegler, Daniel LohmannProceedings of the 2017 USENIX Annual Technical Conference (USENIX '17)USENIX Association2017Best Paper Award.
PDF Details Slides Raw Data [BibTex]
ICSOFT Conference B Best Student Paper
TASTING: Reuse Test-case Execution by Global AST Hashing
Tobias Landsberg, Christian Dietrich, Daniel LohmannProceedings of the 17th International Conference on Software Technologies - ICSOFTSciTePress2022Best Student Paper.
PDF 10.5220/0011139200003266 [BibTex]