System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及软件测试,更具体的说是涉及一种基于多因素的软件测试用例优先级排序方法及系统。
技术介绍
1、软件测试用例优先级排序方法是一种对软件测试用例的顺序依据某个标准进行重新排列的方法,通过执行已排序的测试用例达到软件测试的目标,比如,尽快地检测出缺陷。传统的测试用例优先级排序方法是采用贪婪算法的基于代码覆盖的测试用例优先级排序方法,即总代码覆盖(total)和额外代码覆盖(additional),这两种方法都以“高覆盖率的测试用例更有可能检测出故障”为前提。由于传统方法假设缺陷在软件中均匀分布,不符合“二八原则”(即,软件中80%的缺陷存在20%的软件单元中),因此,提出了考虑缺陷评估的基于代码覆盖的方法,以引入缺陷分布这一因素。
2、现有考虑缺陷评估的基于代码覆盖的软件测试用例优先级排序方法主要分为两类:一类是直接将缺陷评估结果和代码覆盖率进行融合,形成基于代码覆盖的软件测试用例优先级排序方法变体,如wang等提出的质量认知的测试用例优先排序方法——qetp,该类方法存在当缺陷评估的结果为0时,代码覆盖的贡献也被抵消,导致用例优先级排序产生大量平局的情况,无法得到真正的用例排序;另一类是充分相信缺陷评估的结果,将缺陷评估作为主要目标,代码覆盖率作为次要目标,在缺陷评估结果的基础上进行基于代码覆盖的测试用例排序,如paterson等提出一种tcp评估比较策略——g-clef,该类方法存在当缺陷评估不准确时,以此为基准进行的优先级排序必然也会出现较大偏差。并且,多样的测试用例可以使得测试更加充分,暴露缺陷的可能性
3、因此,如何同时基于缺陷评估、代码覆盖和测试用例多样性三个因素对测试用例进行优先级排序,进而提高软件缺陷检测效率是本领域技术人员亟需解决的问题。
技术实现思路
1、有鉴于此,本专利技术提供了一种基于多因素的软件测试用例优先级排序方法及系统,同时基于缺陷评估、代码覆盖和测试用例多样性三个因素对测试用例进行优先级排序,尽可能多且快地检测软件缺陷,提高了软件缺陷检测效率。
2、为了实现上述目的,本专利技术采用如下技术方案:
3、一种基于多因素的软件测试用例优先级排序方法,包括:
4、获取被测软件所有实体的缺陷评估结果;
5、基于所述被测软件获取测试用例;
6、基于所述测试用例获取代码覆盖信息和测试用例多样性;
7、基于所述缺陷评估结果、所述代码覆盖信息和所述测试用例多样性进行线性加权集成,得到优先级排序目标函数;
8、基于所述优先级排序目标函数采用贪婪算法对所述测试用例进行排序,得到优先级排序结果。
9、优选的,所述缺陷评估结果获取方法为:
10、获取所述被测软件所有实体的历史缺陷数据和当前版本度量元数据;
11、基于所述历史缺陷数据作为训练数据集输入机器学习算法,构建得到缺陷检测模型;
12、基于所述当前版本度量元数据输入至所述缺陷检测模型,得到所述缺陷评估结果。
13、优选的,基于历史测试用例的执行情况获取得到所述代码覆盖信息;
14、当所述历史测试用例覆盖某个所述实体时置为1,未覆盖则置为0。
15、优选的,所述测试用例多样性tcd(tcj)具体为:
16、
17、其中,tcj表示第j个测试用例,m表示被测软件的实体数量,q表示测试用例的数量,cover(j,l)表示第l个测试用例对第i个实体的覆盖情况,覆盖为1,未覆盖为0,cover(j,i)表示第i个实体的被第j个测试用例的覆盖情况,覆盖为1,未覆盖为0。
18、优选的,所述优先级排序目标函数f(tcj)具体为:
19、
20、其中,ni表示测试用例覆盖实体的数量,p(tcj)表示缺陷评估结果,c(tcj)表示代码覆盖信息,w1、w2和w3分别表示缺陷评估结果加权系数、代码覆盖信息加权系数和测试用例多样性加权系数。
21、优选的,所述缺陷评估结果加权系数w1、所述代码覆盖信息加权系数w2和所述测试用例多样性加权系数w3的关系满足如下公式:
22、w1+w2+w3=1。
23、优选的,得到优先级排序结果具体包括:
24、所述贪婪算法包括total和additional;
25、基于所述优先级排序目标函数分别采用贪婪算法total和additional对应得到第一排序结果和第二排序结果作为所述优先级排序结果;
26、其中,所述第一优先级排序结果获取方法为:
27、基于所述优先级排序目标函数采用贪婪算法total作为排序策略,对应得到每个所述测试用例的第一排序值;
28、基于所有的所述第一排序值的大小进行降序排序,得到第一排序结果。
29、优选的,基于所述优先级排序目标函数采用贪婪算法additional作为排序策略;
30、获取所述第一排序结果中最大值对应的所述测试用例作为第一测试用例;
31、基于所述第一测试用例更新其他测试用例的代码覆盖信息,并计算所述第一测试用例之外的其他测试用例的第二排序值;
32、选取最大的所述第二排序值对应的测试用例作为第二测试用例;
33、基于所述第二测试用例更新所述第一测试用例和所述第二测试用例之外的测试用例的代码覆盖信息,并相应计算对应测试用例的第三排序值;
34、选取最大的所述第三排序值对应的测试用例作为第三测试用例;
35、重复上述过程,直至得到最后一个测试用例;
36、基于筛选所述测试用例的先后顺序作为排序结果,作为所述第二排序结果。
37、优选的,还包括:对所述第一排序结果和所述第二排序结果进行评估:
38、基于所述第一排序结果和所述第二排序结果分别执行所有的所述测试用例,对应得到每个所述测试用例的第一执行结果和第二执行结果;
39、选择优先级度量指标分别评估所述第一执行结果和所述第二执行结果。
40、一种基于多因素的软件测试用例优先级排序系统,包括:数据获取模块、目标函数构建模块和排序结果输出模块;
41、所述数据获取模块,用于获取被测软件所有实体的缺陷评估结果;基于所述被测软件获取测试用例;基于所述测试用例获取代码覆盖信息和测试用例多样性;
42、所述目标函数构建模块,用于基于所述缺陷评估结果、所述代码覆盖信息和所述测试用例多样性进行线性加权集成,得到优先级排序目标函数;
43、所述排序结果输出模块,用于基于所述优先级排序目标函数采用贪婪算法对所述测试用例进行排序,得到优先级排序结果。
44、经由上述的技术方案可知,与现有技术相比,本专利技术公开提供了一种基于多因素的软件测试用例优先级排序方法及系统,同时基于缺陷评估、代码覆盖和本文档来自技高网...
【技术保护点】
1.一种基于多因素的软件测试用例优先级排序方法,其特征在于,包括:
2.根据权利要求1所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,所述缺陷评估结果获取方法为:
3.根据权利要求1所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,基于历史测试用例的执行情况获取得到所述代码覆盖信息;
4.根据权利要求1所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,所述测试用例多样性TCD(TCj)具体为:
5.根据权利要求4所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,所述优先级排序目标函数f(TCj)具体为:
6.根据权利要求5所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,所述缺陷评估结果加权系数w1、所述代码覆盖信息加权系数w2和所述测试用例多样性加权系数w3的关系满足如下公式:
7.根据权利要求1所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,得到优先级排序结果具体包括:
8.根据权利要求7所述的一种基于多因素的软件测试
9.根据权利要求7所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,还包括:对所述第一排序结果和所述第二排序结果进行评估:
10.一种基于多因素的软件测试用例优先级排序系统,应用于如权利要求1-9任一项所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,包括:数据获取模块、目标函数构建模块和排序结果输出模块;
...【技术特征摘要】
1.一种基于多因素的软件测试用例优先级排序方法,其特征在于,包括:
2.根据权利要求1所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,所述缺陷评估结果获取方法为:
3.根据权利要求1所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,基于历史测试用例的执行情况获取得到所述代码覆盖信息;
4.根据权利要求1所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,所述测试用例多样性tcd(tcj)具体为:
5.根据权利要求4所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,所述优先级排序目标函数f(tcj)具体为:
6.根据权利要求5所述的一种基于多因素的软件测试用例优先级排序方法,其特征在于,所述缺陷评估结果加权系数w1...
【专利技术属性】
技术研发人员:崔灿,王志,王福喜,王祥根,刘恒,
申请(专利权)人:中国电子科技集团公司第十五研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。