基于差异聚类的测试用例优先级排序与GPU优化的最优二叉搜索树实现
1. 测试用例优先级排序方法
为了尽早检测到不同代码区域的差异故障,提出了一种基于历史数据的差异聚类框架来实现测试用例优先级排序。该方法的主要步骤如下:
1. 生成测试用例依赖图 :以一个旧版本和一个新版本的测试套件为输入,根据函数调用情况计算旧版本和新版本函数之间的相似度得分。例如,若旧测试用例 testCaseOld()
调用了 m1()
、 m2()
、 m3()
和 m4()
,新测试用例 testCaseNew()
调用了 m2()
、 m4()
和 m5()
,则它们的相似度得分是2(相同调用函数的数量)。以测试用例为顶点,相似度得分为边,生成执行函数调用图 G (V, E)
,并计算每个测试用例的连接度。使用测试用例总数的平方根上限值来确定聚类的数量。
2. 形成相似测试用例聚类 :计算聚类头与测试用例连接度之间的距离,将测试用例分配到距离较近的聚类中。未与任何聚类头连接(相似度得分是0)的测试用例被分配到“孤儿聚类”。对于孤儿聚类中的成员,先测量其连接度,再与各个聚类头及其成员的值进行比较,将其分配到最接近的聚类中。剩余与聚类头或成员连接度为0的测试用例,以及仅相互连接的测试用例对,被分配到“孤立聚类”。
3. 对聚类间测