🤖 AI Summary
Dynamic-typed languages like Python lack static type information, hindering automated unit test generation. To address this, this paper proposes a runtime type-tracing–based test generation approach: during program execution, it dynamically observes function invocations to incrementally infer argument and return types, then feeds these inferred types back into the test generation process to guide test case construction. Implemented within the Pynguin framework, the method integrates dynamic analysis with type inference, establishing— for the first time—the closed-loop co-adaptation of type inference and test generation. Experimental results show that the approach improves branch coverage by up to 90.0%, significantly boosts mutation scores, and achieves type inference quality comparable to state-of-the-art static analyzers (e.g., Pyright, pytype). This work introduces a novel paradigm for automated testing of dynamic languages.
📝 Abstract
Automated unit test generation is an established research field that has so far focused on statically-typed programming languages. The lack of type information in dynamically-typed programming languages, such as Python, inhibits test generators, which heavily rely on information about parameter and return types of functions to select suitable arguments when constructing test cases. Since automated test generators inherently rely on frequent execution of candidate tests, we make use of these frequent executions to address this problem by introducing type tracing, which extracts type-related information during execution and gradually refines the available type information. We implement type tracing as an extension of the Pynguin test-generation framework for Python, allowing it (i) to infer parameter types by observing how parameters are used during runtime, (ii) to record the types of values that function calls return, and (iii) to use this type information to increase code coverage. The approach leads to up to 90.0% more branch coverage, improved mutation scores, and to type information of similar quality to that produced by other state-of-the-art type-inference tools.