返回
Understanding and Improving Flaky Test Classification
DOI:10.1145/3763098.png)
摘要
En 中文
回归测试是软件开发中不可或缺的一部分,但它受到易变测试(flaky tests)的影响——这些测试在运行相同代码时会出现不可确定性的通过和失败。这些不可预测的失败浪费了开发者的时间,并且常常掩盖了真实的错误。先前的研究表明,经过微调的大型语言模型(LLMs)能够以极高的准确率将易变测试分类到不同类别中。然而,我们发现由于实验设计不正确和训练数据集不切实际,先前的方法高估了模型的准确率——使得易变测试分类问题看起来比实际情况简单。在本文中,我们首先展示了先前易变测试分类器由于1)实验设计缺陷和2)数据集中易变(和非易变)测试真实分布的失真,导致预测准确率被高估。在我们修正实验设计并构建更切合实际的数据集(命名为FlakeBench)后,先前最先进的模型的F1分数急剧下降,从81.82%降至56.62%。受此观察启发,我们开发了一种新的训练策略,用于微调易变测试分类器FlakyLens,将分类F1分数提高到65.79%(比最先进方法高出9.17个百分点)。我们还将在同一分类任务上,将FlakyLens与最近的预训练LLMs(如CodeLlama和DeepSeekCoder)进行比较。结果表明,FlakyLens在这些模型中表现更优,凸显出通用LLMs在此类专业化任务上仍显不足。通过我们改进的易变测试分类器,我们识别出测试代码中对模型做出正确或错误预测有影响的关鍵标记。通过利用每个测试中每个代码标记的归因分数,我们研究了不同易变测试类别中对分类器决策影响更大的标记。为评估这些关鍵标记的影响,我们利用这些标记向测试引入对抗性扰动,并观察模型预测是否发生变化。研究发现,当使用最重要的标记引入扰动时,分类准确率的变化幅度可达-18.37个百分点。这些结果表明,这些模型在推广到训练数据之外时仍然存在困难,并且依赖于识别类别特定的标记(而非理解其语义上下文),这需要进一步研究更稳健的训练方法。
Keyword:
flaky tests
flaky test classification
large language models
期刊
P
IF:
2.8
论文数:
308
被引数:
4.7K

