Saved in:
Bibliographic Details
Main Authors: Etemadi, Khashayar, Mohammadi, Bardia, Su, Zhendong, Monperrus, Martin
Format: Preprint
Published: 2024
Subjects:
Online Access:https://arxiv.org/abs/2406.10375
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866915480625741824
author Etemadi, Khashayar
Mohammadi, Bardia
Su, Zhendong
Monperrus, Martin
author_facet Etemadi, Khashayar
Mohammadi, Bardia
Su, Zhendong
Monperrus, Martin
contents It is essential to detect functional differences between programs in various software engineering tasks, such as automated program repair, mutation testing, and code refactoring. The problem of detecting functional differences between two programs can be reduced to searching for a difference exposing test (DET): a test input that results in different outputs on the subject programs. In this paper, we propose Mokav, a novel execution-driven tool that leverages LLMs to generate DETs. Mokav takes two versions of a program (P and Q) and an example test input. When successful, Mokav generates a valid DET, a test input that leads to provably different outputs on P and Q. Mokav iteratively prompts an LLM with a specialized prompt to generate new test inputs. At each iteration, Mokav provides execution-based feedback from previously generated tests until the LLM produces a DET. We evaluate Mokav on 1535 pairs of Python programs collected from the Codeforces competition platform and 32 pairs of programs from the QuixBugs dataset. Our experiments show that Mokav outperforms the state-of-the-art, Pynguin and Differential Prompting, by a large margin. Mokav can generate DETs for 81.7% (1,255/1535) of the program pairs in our benchmark (versus 4.9% for Pynguin and 37.3% for Differential Prompting). We demonstrate that the iterative and execution-driven feedback components of the system contribute to its high effectiveness.
format Preprint
id arxiv_https___arxiv_org_abs_2406_10375
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Mokav: Execution-driven Differential Testing with LLMs
Etemadi, Khashayar
Mohammadi, Bardia
Su, Zhendong
Monperrus, Martin
Software Engineering
It is essential to detect functional differences between programs in various software engineering tasks, such as automated program repair, mutation testing, and code refactoring. The problem of detecting functional differences between two programs can be reduced to searching for a difference exposing test (DET): a test input that results in different outputs on the subject programs. In this paper, we propose Mokav, a novel execution-driven tool that leverages LLMs to generate DETs. Mokav takes two versions of a program (P and Q) and an example test input. When successful, Mokav generates a valid DET, a test input that leads to provably different outputs on P and Q. Mokav iteratively prompts an LLM with a specialized prompt to generate new test inputs. At each iteration, Mokav provides execution-based feedback from previously generated tests until the LLM produces a DET. We evaluate Mokav on 1535 pairs of Python programs collected from the Codeforces competition platform and 32 pairs of programs from the QuixBugs dataset. Our experiments show that Mokav outperforms the state-of-the-art, Pynguin and Differential Prompting, by a large margin. Mokav can generate DETs for 81.7% (1,255/1535) of the program pairs in our benchmark (versus 4.9% for Pynguin and 37.3% for Differential Prompting). We demonstrate that the iterative and execution-driven feedback components of the system contribute to its high effectiveness.
title Mokav: Execution-driven Differential Testing with LLMs
topic Software Engineering
url https://arxiv.org/abs/2406.10375