论文标题
通过限制输入数据结构来改善Python本地库的TESE生成
Improving Tese Case Generation for Python Native Libraries Through Constraints on Input Data Structures
论文作者
论文摘要
现代Python使用本机库执行计算功能,并提供Python接口以提高执行速度;因此,测试这些库对于项目的鲁棒性至关重要。一个挑战是,现有方法使用覆盖范围来指导生成,但是本机库以黑框运行到无执行信息的情况下以python代码。另一个是动态二进制仪器降低了测试性能,因为它需要监视本机库和Python虚拟机。 为了应对这些挑战,在本文中,我们提出了一种在Python代码层上工作的自动测试案例生成方法。我们的见解是,本机库中的许多路径条件用于通过与VM进行交互来处理输入数据结构。在我们的方法中,我们请启动Python解释器来监视本机库与VM之间的相互作用,从而对结构产生约束,然后使用约束来指导测试案例生成。我们在名为Pycing的工具中实施方法,并将其应用于六个广泛使用的Python项目。实验结果表明,借助结构约束指导,与现有的测试用例和最新工具相比,盖式可以涵盖更多的执行路径。同样,借助测试框架中的调节器,pycing可以在10个Python接口中识别分段故障,并在9中识别内存泄漏。我们的仪器策略也对测试效率也具有可接受的影响。
Modern Python projects execute computational functions using native libraries and give Python interfaces to boost execution speed; hence, testing these libraries becomes critical to the project's robustness. One challenge is that existing approaches use coverage to guide generation, but native libraries run as black boxes to Python code with no execution information. Another is that dynamic binary instrumentation reduces testing performance as it needs to monitor both native libraries and the Python virtual machine. To address these challenges, in this paper, we propose an automated test case generation approach that works at the Python code layer. Our insight is that many path conditions in native libraries are for processing input data structures through interacting with the VM. In our approach, we instrument the Python Interpreter to monitor the interactions between native libraries and VM, derive constraints on the structures, and then use the constraints to guide test case generation. We implement our approach in a tool named PyCing and apply it to six widely-used Python projects. The experimental results reveal that with the structure constraint guidance, PyCing can cover more execution paths than existing test cases and state-of-the-art tools. Also, with the checkers in the testing framework Pytest, PyCing can identify segmentation faults in 10 Python interfaces and memory leaks in 9. Our instrumentation strategy also has an acceptable influence on testing efficiency.