Regression testing in software development checks if new software features affect existing ones. Regression testing is a key task in continuous development and integration, where software is built in small increments and new features are integrated as soon as possible. It is therefore important that developers are notified about possible faults quickly. In this article, we propose a test case prioritization schema that combines the use of a static and a dynamic prioritization algorithm. The dynamic prioritization algorithm rearranges the order of execution of tests on the fly, while the tests are being executed. We propose to use a conditional probability dynamic algorithm for this. We evaluate our solution on three industrial datasets and utilize Average Percentage of Fault Detection for that. The main findings are that our dynamic prioritization algorithm can: a) be applied with any static algorithm that assigns a priority score to each test case b) can improve the performance of the static algorithm if there are failure correlations between test cases c) can also reduce the performance of the static algorithm, but only when the static scheduling is performed at a near optimal level.
翻译:软件开发中的回归测试用于检查新软件功能是否影响现有功能。在持续开发与集成(软件以小增量方式构建,新功能尽快集成)过程中,回归测试是关键任务。因此,快速通知开发者可能存在的故障至关重要。本文提出一种结合静态与动态优先级排序算法的测试用例优先级排序方案。动态优先级排序算法在测试执行过程中实时调整测试执行顺序,本文采用基于条件概率的动态算法实现此目标。我们在三组工业数据集上评估该方案,并使用平均故障检测百分比(APFD)作为评估指标。主要发现如下:a) 该动态算法可应用于任何为测试用例分配优先级分数的静态算法;b) 若测试用例间存在故障相关性,该算法能提升静态算法的性能;c) 在静态调度达到近乎最优水平的情况下,该算法也可能降低静态算法的性能。