Leveraging metamorphic testing to automatically detect inconsistencies in code generator families - Boussaa, Mohamed; Barais, Olivier; Sunyé, Gerson; Baudry, Benoit (Software testing, verification & reliability, 2020)
SUMMARY Generative software development has paved the way for the creation of multiple code generators that serve as a basis for automatically generating code to different software and hardware platforms. In this context, the software quality becomes highly correlated to the quality of code generators used during software development. Eventual failures may result in a loss of confidence for the developers, who will unlikely continue to use these generators. It is then crucial to verify the correct behaviour of code generators in order to preserve software quality and reliability. In this paper, we leverage the metamorphic testing approach to automatically detect inconsistencies in code generators via so‐called “metamorphic relations”. We define the metamorphic relation (i.e., test oracle) as a comparison between the variations of performance and resource usage of test suites running on different versions of generated code. We rely on statistical methods to find the threshold value from which an unexpected variation is detected. We evaluate our approach by testing a family of code generators with respect to resource usage and performance metrics for five different target software platforms. The experimental results show that our approach is able to detect, among 95 executed test suites, 11 performance and 15 memory usage inconsistencies. This paper shows an approach based on metamorphic testing to automatically detect inconsistencies in code generator families. The metamorphic relation is defined as a comparison between the variations of performance and resource usage of test suites running on different versions of generated code. Statistical methods are applied to find the threshold value from which an unexpected variation is detected. The experimental results show that our approach is able to detect several non‐functional inconsistencies.