当前位置:
X-MOL 学术
›
Empir. Software Eng.
›
论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
An approach and benchmark to detect behavioral changes of commits in continuous integration
Empirical Software Engineering ( IF 4.1 ) Pub Date : 2020-03-05 , DOI: 10.1007/s10664-019-09794-7 Benjamin Danglot , Martin Monperrus , Walter Rudametkin , Benoit Baudry
Empirical Software Engineering ( IF 4.1 ) Pub Date : 2020-03-05 , DOI: 10.1007/s10664-019-09794-7 Benjamin Danglot , Martin Monperrus , Walter Rudametkin , Benoit Baudry
When a developer pushes a change to an application’s codebase, a good practice is to have a test case specifying this behavioral change. Thanks to continuous integration (CI), the test is run on subsequent commits to check that they do no introduce a regression for that behavior. In this paper, we propose an approach that detects behavioral changes in commits. As input, it takes a program, its test suite, and a commit. Its output is a set of test methods that capture the behavioral difference between the pre-commit and post-commit versions of the program. We call our approach DCI (Detecting behavioral changes in CI). It works by generating variations of the existing test cases through (i) assertion amplification and (ii) a search-based exploration of the input space. We evaluate our approach on a curated set of 60 commits from 6 open source Java projects. To our knowledge, this is the first ever curated dataset of real-world behavioral changes. Our evaluation shows that DCI is able to generate test methods that detect behavioral changes. Our approach is fully automated and can be integrated into current development processes. The main limitations are that it targets unit tests and works on a relatively small fraction of commits. More specifically, DCI works on commits that have a unit test that already executes the modified code. In practice, from our benchmark projects, we found 15.29% of commits to meet the conditions required by DCI.
中文翻译:
一种检测持续集成中提交行为变化的方法和基准
当开发人员将更改推送到应用程序的代码库时,一个好的做法是让测试用例指定此行为更改。由于持续集成 (CI),测试在后续提交上运行,以检查它们是否不会为该行为引入回归。在本文中,我们提出了一种检测提交中行为变化的方法。作为输入,它需要一个程序、它的测试套件和一个提交。它的输出是一组测试方法,用于捕获程序的预提交和提交后版本之间的行为差异。我们称我们的方法为 DCI(检测 CI 中的行为变化)。它的工作原理是通过 (i) 断言放大和 (ii) 基于搜索的输入空间探索来生成现有测试用例的变体。我们在 6 个开源 Java 项目的 60 次提交中评估我们的方法。据我们所知,这是有史以来第一个针对现实世界行为变化的精选数据集。我们的评估表明 DCI 能够生成检测行为变化的测试方法。我们的方法是完全自动化的,可以集成到当前的开发流程中。主要的限制是它针对单元测试并且只处理相对较小的提交。更具体地说,DCI 处理具有已执行修改后代码的单元测试的提交。在实践中,从我们的基准项目中,我们发现 15.29% 的提交满足 DCI 要求的条件。我们的评估表明 DCI 能够生成检测行为变化的测试方法。我们的方法是完全自动化的,可以集成到当前的开发流程中。主要的限制是它针对单元测试并且只处理相对较小的提交。更具体地说,DCI 处理具有已执行修改后代码的单元测试的提交。在实践中,从我们的基准项目中,我们发现 15.29% 的提交满足 DCI 要求的条件。我们的评估表明 DCI 能够生成检测行为变化的测试方法。我们的方法是完全自动化的,可以集成到当前的开发流程中。主要的限制是它针对单元测试并且只处理相对较小的提交。更具体地说,DCI 处理具有已执行修改后代码的单元测试的提交。在实践中,从我们的基准项目中,我们发现 15.29% 的提交满足 DCI 要求的条件。
更新日期:2020-03-05
中文翻译:
一种检测持续集成中提交行为变化的方法和基准
当开发人员将更改推送到应用程序的代码库时,一个好的做法是让测试用例指定此行为更改。由于持续集成 (CI),测试在后续提交上运行,以检查它们是否不会为该行为引入回归。在本文中,我们提出了一种检测提交中行为变化的方法。作为输入,它需要一个程序、它的测试套件和一个提交。它的输出是一组测试方法,用于捕获程序的预提交和提交后版本之间的行为差异。我们称我们的方法为 DCI(检测 CI 中的行为变化)。它的工作原理是通过 (i) 断言放大和 (ii) 基于搜索的输入空间探索来生成现有测试用例的变体。我们在 6 个开源 Java 项目的 60 次提交中评估我们的方法。据我们所知,这是有史以来第一个针对现实世界行为变化的精选数据集。我们的评估表明 DCI 能够生成检测行为变化的测试方法。我们的方法是完全自动化的,可以集成到当前的开发流程中。主要的限制是它针对单元测试并且只处理相对较小的提交。更具体地说,DCI 处理具有已执行修改后代码的单元测试的提交。在实践中,从我们的基准项目中,我们发现 15.29% 的提交满足 DCI 要求的条件。我们的评估表明 DCI 能够生成检测行为变化的测试方法。我们的方法是完全自动化的,可以集成到当前的开发流程中。主要的限制是它针对单元测试并且只处理相对较小的提交。更具体地说,DCI 处理具有已执行修改后代码的单元测试的提交。在实践中,从我们的基准项目中,我们发现 15.29% 的提交满足 DCI 要求的条件。我们的评估表明 DCI 能够生成检测行为变化的测试方法。我们的方法是完全自动化的,可以集成到当前的开发流程中。主要的限制是它针对单元测试并且只处理相对较小的提交。更具体地说,DCI 处理具有已执行修改后代码的单元测试的提交。在实践中,从我们的基准项目中,我们发现 15.29% 的提交满足 DCI 要求的条件。