首页> 外文会议>IEEE/ACM International Conference on Software Engineering >Towards Refactoring-Aware Regression Test Selection
【24h】

Towards Refactoring-Aware Regression Test Selection

机译:走向重构感知回归测试选择

获取原文

摘要

Regression testing checks that recent project changes do not break previously working functionality. Although important, regression testing is costly when changes are frequent. Regression test selection (RTS) optimizes regression testing by running only tests whose results might be affected by a change. Traditionally, RTS collects dependencies (e.g., on files) for each test and skips the tests, at a new project revision, whose dependencies did not change. Existing RTS techniques do not differentiate behavior-preserving transformations (i.e., refactorings) from other code changes. As a result, tests are run more frequently than necessary. We present the first step towards a refactoring-aware RTS technique, dubbed Reks, which skips tests affected only by behavior-preserving changes. Reks defines rules to update the test dependencies without running the tests. To ensure that Reks does not hide any bug introduced by the refactoring engines, we integrate Reks only in the pre-submit testing phase, which happens on the developers' machines. We evaluate Reks by measuring the savings in the testing effort. Specifically, we reproduce 100 refactoring tasks performed by developers of 37 projects on GitHub. Our results show that Reks would not run, on average, 33% of available tests (that would be run by a refactoring-unaware RTS technique). Additionally, we systematically run 27 refactoring types on ten projects. The results, based on 74,160 refactoring tasks, show that Reks would not run, on average, 16% of tests (max: 97% and SD: 24%). Finally, our results show that the Reks update rules are efficient.
机译:回归测试检查最近的项目变更不会破坏以前的工作功能。虽然重要的是,当频繁时,回归测试成本高昂。回归测试选择(RTS)通过仅运行的测试来优化回归测试,其结果可能会受到更改的影响。传统上,RTS为每个测试收集依赖性(例如,在文件上)并在新的项目修订版中跳过测试,其依赖项不会改变。现有的RTS技术不会区分从其他代码更改中的行为保留的转换(即,重构)。因此,测试比必要的更频繁地运行。我们向重构感知RTS技术进行了第一步,重新设计了REKS,其才能通过行为保留更改影响测试。 REKS定义了在不运行测试的情况下更新测试依赖项的规则。为了确保REKS不隐藏重构引擎引入的任何错误,我们仅在预先提交的测试阶段集成了REKS,这会发生在开发人员的机器上。我们通过测量测试努力的节省来评估REKS。具体而言,我们通过GitHub上的37个项目的开发人员重现了100个重构任务。我们的结果表明,REKS不会平均运行33 %的可用测试(这将由重构 - 不知RTS技术运行)。此外,我们系统地在十个项目上系统地运行27种重构类型。结果,基于74,160重构任务,显示REKS不会平均运行16 %的测试(最多:97 %和SD:24 %)。最后,我们的结果表明,REKS更新规则是有效的。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号