In recent years, many test case prioritization (TCP) techniques have been proposed to speed up the process of fault detection. However, little work has taken the efficiency problem of these techniques into account. In this paper, we target the Greedy Additional (GA) algorithm, which has been widely recognized to be effective but less efficient, and try to improve its efficiency while preserving effectiveness. In our Accelerated GA (AGA) algorithm, we use some extra data structures to reduce redundant data accesses in the GA algorithm and thus the time complexity is reduced from $\mathcal{O}(m^2n)$ to $\mathcal{O}(kmn)$ when $n > m$, where $m$ is the number of test cases, $n$ is the number of program elements, and $k$ is the iteration number. Moreover, we observe the impact of iteration numbers on prioritization efficiency on our dataset and propose to use a specific iteration number in the AGA algorithm to further improve the efficiency. We conducted experiments on 55 open-source subjects. In particular, we implemented each TCP algorithm with two kinds of widely-used input formats, adjacency matrix and adjacency list. Since a TCP algorithm with adjacency matrix is less efficient than the algorithm with adjacency list, the result analysis is mainly conducted based on TCP algorithms with adjacency list. The results show that AGA achieves 5.95X speedup ratio over GA on average, while it achieves the same average effectiveness as GA in terms of Average Percentage of Fault Detected (APFD). Moreover, we conducted an industrial case study on 22 subjects, collected from Baidu, and find that the average speedup ratio of AGA over GA is 44.27X, which indicates the practical usage of AGA in real-world scenarios.
翻译:近些年来,人们提出了许多测试案件优先排序(TCP)技术,以加快发现错误的过程。然而,很少考虑到这些技术的效率问题。在本文件中,我们的目标是贪婪附加算法(GA)算法(GA),该算法被广泛承认为有效,但效率较低,并试图提高效率。在我们加速GA算法(AGA)算法中,我们使用一些额外数据结构来减少GA算法中多余的数据访问量,从而将时间复杂性从$mathcal{O}(m%2n)降低到$mathcal{O}(kmn) 。当美元 > (m) 美元时,这些技术效率问题没有被考虑。在本文中,我们针对贪婪补充算法(GAGA)算法($m)算法(GAGA)算法(GAGA)算法(GAGA)算法(ML)算法(MLA) 的平均值,我们用的是比GSA(GA)平均)算法(LA)的数值分析结果,而我们用的是AGSA(OCLA)算法(A)的比A)算法(OLA)算法(A)的平均值的比A)。