中文

检测与评估JavaScript中顺序相关的不稳定测试

软件工程 2025-01-23 v1

摘要

不稳定的测试是软件测试中的一个重要问题。具有非确定性结果的测试可能削弱测试过程的可靠性,使测试变得不可信。以往的研究确定,测试顺序依赖是导致不稳定性最常见的原因之一,尤其是在Java和Python中。然而,对于JavaScript测试,测试顺序依赖的情况鲜有了解。本文旨在调查使用Jest(一个广泛使用的JavaScript测试框架)的JavaScript项目中的测试顺序依赖。我们实现了一个系统方法来随机化测试、测试套件和describe块,并为每个层级产生10个唯一的测试排序。我们对每个顺序进行10次重复运行(每个测试套件/项目共100次重复),并记录任何测试结果的变化。我们随后手动分析每一种显示出不稳定结果的案例,以确定不稳定性的原因。我们对从GitHub获取的81个项目的数据集进行了我们的检测方法的检验。我们的结果显示,在10个项目中发现了55个与顺序相关的测试。大多数与顺序相关的测试(52个)发生在测试之间,而其余三个则发生在describe块之间。这些与顺序相关的测试要么是由于共享文件(13个)导致的,要么是由于共享模拟状态(42个)导致的。虽然共享文件是其他语言中顺序相关测试的已知原因,但我们的研究结果凸显了一种新的原因(共享模拟状态),此原因此前未被报道。

关键词

引用

@article{arxiv.2501.12680,
  title  = {Detecting and Evaluating Order-Dependent Flaky Tests in JavaScript},
  author = {Negar Hashemi and Amjed Tahir and Shawn Rasheed and August Shi and Rachel Blagojevic},
  journal= {arXiv preprint arXiv:2501.12680},
  year   = {2025}
}

备注

Paper accepted at ICST 2025