面向错误定位的巧合正确性测试用例识别方法及装置的制造方法_2

文档序号:9396797阅读:来源:国知局
提取与错误相关的分支
[0051] 由于程序P中存在着一些分支只会被当前的正确测试用例覆盖到,这些分支的执 行与否与错误代码的关联性很弱,如果这些没有被当前任意一失败测试用例覆盖的分支作 为特征信息的一部分将影响分类结果,因而我们采用如下规则过滤那些与错误不相关的分 支,从而使保留的分支更能反映错误的相关特性。
[0052] RF - IrpjJii e Τ, λ rp, e Ips(Ii)^ ( .1 )
[0053] 其中,tpsU,)表示测试用例t,覆盖到的分支集合。从公式⑴可以看出,RP中 的任一个分支都至少被失败测试用例集Tr的一个测试用例覆盖到,也就是说分支的执行 可能会影响到错误代码的感染和传播。为了方便后续的讨论,将RP代表的分支集合表示为 Irp1, rp2, · · ·,rpj,w < = m〇
[0054] (2)分支覆盖特征信息收集
[0055] 当在程序P上运行测试用例集T中的每个测试用例时,针对RP中的每一个分支 rP],我们收集如下的信息Cji和C:;,分别表示在一个测试用例t]执行时分支rp ,执行结果为 真的次数和执行结果为假的次数。由于程序执行中可能存在循环,所以其执行次数可能大 于1。当rP]的真或假执行没有被触发,则相应的取值为0。对于任一个测试用例t ,,它的 分支覆盖特征可以表示如下:
[0057] S102、将所述每个测试用例运行所述预设程序的执行结果作为所述每个测试用例 的分类标签;
[0058] 当收集完所有测试用例的分支覆盖特征信息后,同时将每条测试用例的执行结果 作为类标签,如执行结果为正确的,则类标签为〇,否则为1。
[0059] S103、根据所述覆盖特征信息及携带分类标签的测试用例集,对回归模型进行训 练,得到分类模型;
[0060] 具体的,所述回归模型为logistic回归模型。
[0061] 具体的,本实施例以测试集中所有测试用例的分支覆盖作为特征信息,以测试用 例的执行结果作为类标签对logistic回归模型进行训练并得出分类模型。
[0062] S104、根据所述分类模型,对正确测试用例进行预测,筛选出所述正确测试用例中 的巧合正确性测试用例;
[0063] 其中,所述巧合正确性测试用例为在程序执行过程中执行了错误的语句但是产生 了正确的输出的测试用例。
[0064] 具体的,巧合正确性为程序中的错误语句被测试用例执行了,但没有产生错误的 输出。巧合正确性测试用例为一个测试用例是巧合正确的当且仅当它同时满足以下两个条 件:
[0065] 1、这个测试用例在程序执行过程中执行了错误的语句;
[0066] 2、这个测试用例产生了正确的输出。
[0067] 具体的,所述根据所述分类模型,对正确测试用例进行预测,筛选出所述正确测试 用例中的巧合正确性测试用例,包括:
[0068] 根据所述分类模型,对正确测试用例进行预测,得出所述正确测试用例为巧合正 确性测试用例的概率排序;
[0069] 根据所述正确测试用例为巧合正确性测试用例的概率排序,筛选出所述正确测试 用例中的巧合正确性测试用例。
[0070] 具体的,当据所述分类模型,对正确测试用例进行预测后,会得到正确测试用例中 为巧合正确性测试用例的可能性大小,并按大小排序。最后,基于估计的可能巧合正确性测 试用例从大到小选出适量的疑似巧合正确性测试用例。
[0071] 本发明实施例提供的一种面向错误定位的巧合正确性测试用例识别方法,包括: 收集测试用例集中每个测试用例运行预设程序的覆盖特征信息;将所述每个测试用例运行 所述预设程序的执行结果作为所述每个测试用例的分类标签;根据所述覆盖特征信息及携 带分类标签的测试用例集,对回归模型进行训练,得到分类模型;根据所述分类模型,对正 确测试用例进行预测,筛选出所述正确测试用例中的巧合正确性测试用例,从而提高测试 用例定位错误位置的效率。
[0072] 具体的,为了高效快速地识别巧合正确性测试用例,本发明中采用logistic回归 模型。logistic回归模型属于概率型非线性回归,它是研究二分类观察结果与一些影响之 间关系的一种多变量分析方法。当logistic回归模型完成训练后,该模型在预测新的实例 所属类别时,可以快速计算得出新实例为某一类别的概率。由于其计算代价不高,易于理解 和实现,且具有良好的分类效果,因而在分类问题上得到了广泛运用。
[0073] 本实施例在得到T中所有测试用例的特征信息和类标签后,以此作为输入对 logistic回归模型进行训练,得到一个分类模型,记为LG。下面介绍基于LG模型来识别巧 合正确性测试用例。
[0074] 首先本实施例提出一种估计测试集T中可能存在的巧合正确性测试用例数目,以 此数目指导后续的选择数量。
[0075] 本发明利用测试用例的覆盖特征及执行结果来推断可能的巧合正确性测试用例 数目。首先,针对程序中的每一个可执行语句e,计算语句e包含错误代码的可疑度值,记为 S(e)。这里我们使用Oichai度量公式,因为它在定位错误上表现出了较稳定的性能。S(e) 的定义如下:
[0077] 符号<anp,anf,aep,a ef>表示满足对应下标条件的测试用例数量,其中每个符号的第 一个下标表示该语句被对应的测试用例执行(e)或者没有被执行(η),第二个下标表示对 应的测试用例执行结果是正确的(P)或者是错误的(f)。当符号的上下文不能指明是针对 明險语句时,我们会在符号的后面加上"(e)"代表语句e的相关值。例如,、(e)表示执行 了语句e且结果为正确的测试用例数目。
[0078] 假设在单错误版本程序中存在着一条错误语句ef。根据巧合正确性测试用例的定 义,可知、(ef)表示在测试用例集当中实际巧合正确性测试用例的数目。由于错误语句ef在程序中的位置未知,所以很难确定、(ef)的值。但是,可以容易地得到满足下列条件的 语句e%
[0079] arg maxe. e p {S (e') | aef (e') = | Tf |} (3)
[0080] 语句f是所有语句中被T f中所有失败测试用例覆盖到且可疑度值S (e)最大的语 句。由于错误语句ef对应的arf等于|Tf|,因而至少存在一个语句满足上述公式。但这样 的语句f可能存在多个,由于,对应的a ef总是等于I T f I,且根据公式,因为Tf为已知量, 所以S (e)的值只跟^和a @相关。因而对于任意满足公式(3)的,来说,其对应的a @也 总是相等的。取任意的一个f对后面的推导结果都不会产生影响。
[0081] 根据公式(3),由于aep (ef) = |Tf|,其中语句ef可能是满足公式(3)的侯选语句 之一,因而容易得到S(e,彡S(ef)。同时,由于= |Tf|所以容易得出等式= aef(ef)也成立。因此,可以推导出来aep(e*)彡aep(e f)。证明过程如下:
[0083] 由于aep(ef)表示测试用例集当中实际巧合正确性测试用例的数目,因而根据公式 (3)得到的f对应的a 的值总是小于或等于测试用例集T中实际存在的巧合正确性 测试用例数目。把、(e〇的值记为CCN。
[0084] 接着,基于分类模型LG和CCN计算得到疑似巧合正确性测试用例。为了方便叙 述,记count等于Ticc,即已识别的疑似巧合正确性测试用例数量。初始时易知count为 0。本发明采用如下的步骤来识别巧合正确性测试用例:
[0085] (1)对于Tp的任一个测试用例t,计算LG(T = 1)的值,即该测试用例是巧合正确 性测试用例的概率。并将LG(T = 1)从大到小排序形成排行榜RankPro。
[0086] (2)如果count〈CCN且RankPro不为空,则将RankPro中概率值最大的测试用例 加入Ticc,同时从RankPro中移除,且置count = count+Ι,继续步骤(2);否则,执行步骤 (3)〇
[0087] (3)将Ticc作为识别的疑似巧合正确性测试用例返回。
[0088] 优
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1