细微差异是关键:利用差分提示解锁 ChatGPT 以发现失效诱导测试
软件工程
2023-09-12 v6
摘要
自动检测软件失效是一项重要任务,也是一个长期存在的挑战。它需要找到失效诱导测试用例,其测试输入能够触发软件的故障,并构建自动判定器以检测软件的错误行为。近期大语言模型(LLM)的进展促使我们研究当前最先进的 LLM——ChatGPT 能在多大程度上解决这一挑战。遗憾的是,我们的研究表明,ChatGPT 为存在缺陷的程序找到正确失效诱导测试用例的概率较低(28.8%)。一个可能的原因是,寻找失效诱导测试用例需要分析缺陷程序与其正确版本之间细微的代码差异。当这两个版本语法相似时,ChatGPT 难以识别细微的代码差异。我们的洞见是,当引导 ChatGPT 关注细微代码差异时,其性能可大幅提升。我们有一个有趣的发现:ChatGPT 能有效推断缺陷程序的预期行为。该预期行为可用于合成程序,从而使缺陷程序与其正确版本(即合成程序)之间的细微代码差异变得显式。受此观察驱动,我们提出了一种新颖方法,协同结合 ChatGPT 与差分测试来发现失效诱导测试用例。我们在 Quixbugs(一个缺陷程序基准)上评估了我们的方法,并与最先进的基线(包括直接使用 ChatGPT 和 Pynguin)进行比较。实验结果表明,我们的方法找到正确失效诱导测试用例的概率(77.8%)远高于基线,是最佳基线的 2.7 倍。
引用
@article{arxiv.2304.11686,
title = {Nuances are the Key: Unlocking ChatGPT to Find Failure-Inducing Tests with Differential Prompting},
author = {Tsz-On Li and Wenxi Zong and Yibo Wang and Haoye Tian and Ying Wang and Shing-Chi Cheung and Jeff Kramer},
journal= {arXiv preprint arXiv:2304.11686},
year = {2023}
}
备注
Accepted to the 38th IEEE/ACM International Conference on Automated Software Engineering (ASE 2023)