1.一种基于频谱技术和断言切换技术的缺陷定位方法,其特征在于,包括如下步骤:步骤1:基于断言切换技术的切片获取;
1‑1.统计失败测试用例
1‑1‑1.在提供的测试用例中,将所有的失败测试用例统计并筛选出来;
1‑2.寻找关键断言
对要进行的切换断言缩小,使用多断言同时切换策略进行切换以便找到更多的关键断言;
其中断言缩小,具体为:首先通过追溯程序的执行过程记录下所有的断言,接着计算所有断言控制的语句,判断控制的语句中是否存在执行过的语句,如果存在则去除该断言,该断言不再进行切换;
其中多断言同时切换策略,具体为:在找出所有需要切换的断言后进行排序,依据断言与输出错误的距离远近排名,距离越近的断言排名越高,得出所有的排名后进行切换,由整个排名列表从高到低分别进行单断言切换、双断言切换、三断言切换,其中双断言切换固定排名第一的断言,三断言切换需要固定排名一、二的断言;
1‑3.获取切片
判断该程序是否有关键断言,对之前筛选出的失败测试用例进行切片,如果有则将所有的关键断言在切片过程中放进切片,否则直接进行切片;
1‑4.融合切片
在得到所有程序的失败测试用例的切片后进行进一步处理,对程序具有多个失败测试用例也就有多个切片,则需要对这些切片进行取并集处理,而只有单独切片不需要进行处理;
步骤2:基于频谱技术获取可疑列表;
2‑1.获取频谱信息
2‑1‑1.首先要保证程序至少要有一个失败测试用例;
2‑1‑2.接着执行程序的所有测试用例并记录执行过程收集相应的数据,收集的数据包括:测试用例、执行的语句、执行的结果,这些数据就是覆盖信息和输出信息;
2‑1‑3.通过解释器形成一个频谱矩阵:行对应每个测试用例,列对应每条语句,并利用单独列向量表示执行结果信息;
2‑2.中间变量计算
2‑2‑1.将上一步收集到的频谱信息输入到分析器中,进行四个中间变量的计算,公式如下:apq(j)=|{i|xij=pΛei=q}|a00(j)表示语句j不在成功的测试用例中的个数;a01(j)表示语句j在不在失败的测试用例中的个数;a10(j)表示语句j在成功的测试用例中的个数;a11(j)表示语句j在失败的测试用例中的个数,xij为语句j在测试用例i的覆盖结果,ei为测试用例i的执行结果;
2‑3.可疑列表获取
2‑3‑1.计算得出每条语句的中间变量后便利用公式计算出该条语句的怀疑度,这里使用的是公式:得到每条语句的怀疑度后便以怀疑度进行排名得到可疑语句列表;
步骤3:组合计算新可疑列表;
3‑1.确认语句
3‑1‑1.根据怀疑列表中的语句依次确认其是否在该程序的切片中,如果在则该语句的切片分数为1,否则为0;
3‑2.重新计算怀疑度
3‑2‑1.根据语句的怀疑度分数以及得到的切片分数重新计算怀疑度,公式如下:newsocre=α*oriscore+β*sliscore其中,oriscore即ochiai分数,sliscore即切片分数,α和β为系数,α+β=1;获得了重新计算怀疑度的可疑列表;
3‑2‑1.基于重新计算怀疑度的可疑列表进一步地定位缺陷。
2.根据权利要求1所述的一种基于频谱技术和断言切换技术的缺陷定位方法,其特征在于:所述的参数α和β均取0.5,以保持ochiai分数和sliscore具有相同的优先级,即为了切片和原可疑列表所占的比重一样,不至于其中一方过重,以致切片或者频谱技术得出的可疑语句占过高的排名。
3.根据权利要求1所述的一种基于频谱技术和断言切换技术的缺陷定位方法,其特征在于:所述的进一步地定位缺陷,具体为:首先检查前5的可疑语句,再检查前10的可疑语句,最后依次检查剩下的语句。