Combining Type Inference and Automated Unit Test Generation for Python

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Krodinger, Lukas, Lukasczyk, Stephan, Fraser, Gordon
Formato: Preprint
Publicado: 2025
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866908430140178432
author Krodinger, Lukas
Lukasczyk, Stephan
Fraser, Gordon
author_facet Krodinger, Lukas
Lukasczyk, Stephan
Fraser, Gordon
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2507_01477
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Combining Type Inference and Automated Unit Test Generation for Python
Krodinger, Lukas
Lukasczyk, Stephan
Fraser, Gordon
Software Engineering
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.
title Combining Type Inference and Automated Unit Test Generation for Python
topic Software Engineering
url https://arxiv.org/abs/2507.01477