🤖 AI Summary
This work addresses the inadequacy of existing mutation testing approaches in effectively simulating typical faults in dynamically typed languages like Python, which often leads to insufficient test assessment. To overcome this limitation, the authors propose a hybrid mutation testing method that integrates static and dynamic analysis. The approach introduces seven novel mutation operators specifically designed based on Python anti-patterns, enabling the generation of more representative and realistic faults. Furthermore, a synergistic static-dynamic mechanism is employed to efficiently filter out equivalent mutants. An implementation of the technique, named PyTation, was evaluated on 13 open-source projects. Experimental results demonstrate that the method significantly enhances mutant uniqueness while reducing cross-killing rates and test overlap, thereby effectively uncovering hidden defects even in high-coverage test suites.
📝 Abstract
Mutation testing is an effective technique for assessing the effectiveness of test suites by systematically injecting artificial faults into programs. However, existing mutation testing techniques fall short in capturing many types of common faults in dynamically typed languages like Python. In this paper, we introduce a novel set of seven mutation operators that are inspired by prevalent anti-patterns in Python programs, designed to complement the existing general-purpose operators and broaden the spectrum of simulated faults. We propose a mutation testing technique that utilizes a hybrid of static and dynamic analyses to mutate Python programs based on these operators while minimizing equivalent mutants. We implement our approach in a tool called PyTation and evaluate it on 13 open-source Python applications. Our results show that PyTation generates mutants that complement those from general-purpose tools, exhibiting distinct behaviour under test execution and uncovering inadequacies in high-coverage test suites. We further demonstrate that PyTation produces a high proportion of unique mutants, a low cross-kill rate, and a low test overlap ratio relative to baseline tools, highlighting its novel fault model. PyTation also incurs few equivalent mutants, aided by dynamic analysis heuristics.