FlakyFix:利用大语言模型预测不稳定测试修复类别与测试代码修复
软件工程
2024-10-08 v4 人工智能
机器学习
摘要
不稳定测试存在问题,因为同一被测软件版本下它们非确定性地通过或失败,造成混淆并浪费开发精力。虽然机器学习模型已被用于预测不稳定性及其根本原因,但提供支持以修复该问题的研究少得多。为弥补此差距,本文聚焦于预测消除不稳定性所需的修复类型,并据此修复测试代码。我们针对一类不稳定测试子集进行研究,其不稳定性根源在测试本身而非生产代码。一个关键思想是以为其预测修复类别形式提供的测试不稳定性额外知识来引导修复过程。因此,我们首先提出一个框架,自动为 13 个修复类别生成标注数据集,并仅通过分析测试代码训练模型预测不稳定测试的修复类别。我们使用代码模型和少样本学习(few-shot learning)的实验结果表明,我们能正确预测大多数修复类别。为展示此类修复类别标签在自动修复不稳定性上的用处,我们用此类额外知识增强 GPT-3.5 Turbo(一种大语言模型(LLM))的提示以请求修复建议。结果显示,我们提出的修复类别标签辅以上下文学习(in-context learning),显著增强了 GPT-3.5 Turbo 生成不稳定测试修复的能力。基于对 GPT 修复的不稳定测试样本的执行与分析,我们估计此类修复中很大比例(约介于 51% 与 83% 之间)可预期通过。对于修复后失败的测试,平均需进一步修改 16% 的测试代码才能通过。
引用
@article{arxiv.2307.00012,
title = {FlakyFix: Using Large Language Models for Predicting Flaky Test Fix Categories and Test Code Repair},
author = {Sakina Fatima and Hadi Hemmati and Lionel Briand},
journal= {arXiv preprint arXiv:2307.00012},
year = {2024}
}
备注
26 pages, 20 Figures