CoverUp: Effective High Coverage Test Generation for Python

Fuente: arXiv
Enregistré dans:
Détails bibliographiques
Auteurs principaux: Pizzorno, Juan Altmayer, Berger, Emery D.
Format: Preprint
Publié: 2024
Sujets:
Accès en ligne:
Tags: Ajouter un tag
Pas de tags, Soyez le premier à ajouter un tag!
_version_ 1866913827476471808
author Pizzorno, Juan Altmayer
Berger, Emery D.
author_facet Pizzorno, Juan Altmayer
Berger, Emery D.
contents Testing is an essential part of software development. Test generation tools attempt to automate the otherwise labor-intensive task of test creation, but generating high-coverage tests remains challenging. This paper proposes CoverUp, a novel approach to driving the generation of high-coverage Python regression tests. CoverUp combines coverage analysis, code context, and feedback in prompts that iteratively guide the LLM to generate tests that improve line and branch coverage. We evaluate our prototype CoverUp implementation across a benchmark of challenging code derived from open-source Python projects and show that CoverUp substantially improves on the state of the art. Compared to CodaMosa, a hybrid search/LLM-based test generator, CoverUp achieves a per-module median line+branch coverage of 80% (vs. 47%). Compared to MuTAP, a mutation- and LLM-based test generator, CoverUp achieves an overall line+branch coverage of 89% (vs. 77%). We also demonstrate that CoverUp's performance stems not only from the LLM used but from the combined effectiveness of its components.
format Preprint
id arxiv_https___arxiv_org_abs_2403_16218
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle CoverUp: Effective High Coverage Test Generation for Python
Pizzorno, Juan Altmayer
Berger, Emery D.
Software Engineering
Artificial Intelligence
Machine Learning
Programming Languages
I.2.0; D.2.5
Testing is an essential part of software development. Test generation tools attempt to automate the otherwise labor-intensive task of test creation, but generating high-coverage tests remains challenging. This paper proposes CoverUp, a novel approach to driving the generation of high-coverage Python regression tests. CoverUp combines coverage analysis, code context, and feedback in prompts that iteratively guide the LLM to generate tests that improve line and branch coverage. We evaluate our prototype CoverUp implementation across a benchmark of challenging code derived from open-source Python projects and show that CoverUp substantially improves on the state of the art. Compared to CodaMosa, a hybrid search/LLM-based test generator, CoverUp achieves a per-module median line+branch coverage of 80% (vs. 47%). Compared to MuTAP, a mutation- and LLM-based test generator, CoverUp achieves an overall line+branch coverage of 89% (vs. 77%). We also demonstrate that CoverUp's performance stems not only from the LLM used but from the combined effectiveness of its components.
title CoverUp: Effective High Coverage Test Generation for Python
topic Software Engineering
Artificial Intelligence
Machine Learning
Programming Languages
I.2.0; D.2.5
url https://arxiv.org/abs/2403.16218