一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法技术

技术编号:38477245 阅读:4 留言:0更新日期:2023-08-15 16:56
本发明专利技术提供一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法,包括下列步骤:1)构建对象关系图;2)计算K核重要性;3)计算结构洞重要性;4)构造重要性贡献矩阵;5)计算测试桩复杂度;6)生成类集成测试序列。本发明专利技术解决了目前方法中存在的“类重要性的度量具有单一性和片面性”的问题,该发明专利技术不但能够在较短时间内生成测试代价较低的类集成测试序列,而且能够为测试人员提供多种可以选择的测试方案,优先测试更多重要的类,提高了软件测试的效率,最终更好地控制了软件产品的质量。最终更好地控制了软件产品的质量。最终更好地控制了软件产品的质量。

【技术实现步骤摘要】
一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法


[0001]本专利技术属于软件测试
,且特别是有关于一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法。

技术介绍

[0002]软件测试阶段包括单元测试、集成测试、系统测试、验证和确认以及回归测试。其中,集成测试以单元检测为基础,结合组装的不同要求将模块组成全新的系统。集成测试旨在发现与系统组件的接口和集成相关的错误;面向过程程序以事件为中心,以功能为导向,层次结构明显。传统的集成测试方法可以轻松地完成面向过程程序的集成测试。然而面向对象程序与面向过程程序不同,面向对象程序类间关系复杂,传统的集成测试方法无法准确完成面向对象程序的集成测试。因此,研究人员提出类集成测试序列生成方法解决面向对象程序的集成测试问题。在类集成测试序列生成问题中,以往的研究大多聚焦于测试桩数目和测试桩复杂度,没有考虑到类重要性对类集成测试序列的影响。集成测试最主要的目的是发现与系统组件相关的故障。降低测试桩成本固然很重要,但是检测类间故障的时间和消除故障的成本等测试效率同样不可忽视;重要类的故障倾向性大并且产生故障时破坏性强,如果测试人员在测试时把重要类排在较后的位置进行测试,可能会影响故障检测的时间和修复故障的成本,很大程度影响了测试效率。
[0003]类重要性度量分为局部重要性和全局重要性。局部重要性指仅使用类的相邻信息而忽略全局信息来度量类的重要性;局部重要性可以快速找到最直接的依赖关系,时间复杂度低,适用于大型软件。全局重要性基于整个对象关系图来衡量类的扩散能力和重要性,从而具有更高的精度。但全局重要性时间复杂度较高,不适用于大型软件。
[0004]局部重要性和全局重要性均可以找到相对重要的类,但是在对象关系图中,有一种处于特殊位置的类同样值得关注;结构洞体现了类间的非冗余关系,具有较多结构洞的类更有利于信息的传播,因此,在度量类重要性时,需要考虑结构洞对类的影响。
[0005]已有的考虑类重要性的研究大多只考虑局部重要性,未考虑到类的全局重要性和结构洞带来的影响。类重要性的度量具有单一性和片面性。

技术实现思路

[0006]本专利技术目的在于提供一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法,解决了“现有研究在度量类重要性时,没有综合考虑局部重要性和全局重要性,考虑的因素较为单一,类重要性的度量具有单一性和片面性。”的问题,进而大幅度提高了类集成测试的效率,同时保证了较高的可用性。
[0007]为达成上述目的,本专利技术提出一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法。方法包括下列步骤:
[0008]1)构建对象关系图:对源程序进行静态分析,获取各类的成员变量信息、成员方法
信息以及类间的属性耦合、方法耦合,构造对象关系图;
[0009]2)计算K核重要性:首先,根据对象关系图计算类的度重要性;其次,为类赋K值;然后,更新对象关系图中类的度信息;重复上述步骤直至所有类获得K值;归一化类的K核重要性;
[0010]3)计算结构洞重要性:首先,根据对象关系图计算类的度重要性;其次,根据度重要性计算类的邻接度;然后根据邻接度计算约束系数;最后根据约束系数计算结构洞重要性;
[0011]4)构造重要性贡献矩阵,计算类重要性:将对象关系图中类的自身的结构洞重要性按照比例分配给与其相邻节点,构造重要性贡献矩阵;根据重要性贡献矩阵计算类重要性;
[0012]5)计算测试桩复杂度:根据第1部分计算出的类间属性耦合和方法耦合计算属性复杂度和方法复杂度;然后使用熵权法确定属性复杂度与方法复杂度的权值;最后生成测试桩复杂度;
[0013]6)生成类集成测试序列:利用测试桩复杂度和类重要性选择合适的类加入类集成测试序列,并利用反馈调节机制调整类的重要性,根据类重要性生成完整的类集成测试序列。
[0014]进一步,其中上述步骤1)的具体步骤如下:
[0015]步骤1)

1:静态分析源程序,获取类间耦合信息;
[0016]步骤1)

2:根据类间调用关系生成对象关系图。
[0017]进一步,其中上述步骤2)的具体步骤如下:
[0018]步骤2)

1:根据对象关系图计算类的度重要性;
[0019]步骤2)

2:为类赋K值:移除对象关系图中所有度重要性最小的类和边,令移除的类的K值等于K
si

[0020]步骤2)

3:更新对象关系图中类的度信息;
[0021]步骤2)

4:重复上述步骤直至所有类获得K值;
[0022]步骤2)

5:归一化类的K核重要性。
[0023]进一步,其中上述步骤3)的具体步骤如下:
[0024]步骤3)

1:根据对象关系图计算类的度重要性;
[0025]步骤3)

2:根据度重要性计算类的邻接度;
[0026]步骤3)

3:根据邻接度计算约束系数;
[0027]步骤3)

4:根据约束系数计算结构洞重要性。
[0028]进一步,其中上述步骤4)的具体步骤如下:
[0029]步骤4)

1:构造重要性贡献矩阵;
[0030]步骤4)

2:根据重要性贡献矩阵计算类重要性。
[0031]进一步,其中上述步骤5)的具体步骤如下:
[0032]步骤5)

1:计算属性复杂度和方法复杂度;
[0033]步骤5)

2:使用熵权法确定属性复杂度与方法复杂度的权值;
[0034]步骤5)

3:生成测试桩复杂度。
[0035]进一步,其中上述步骤6)的具体步骤如下:
[0036]步骤6)

1:计算类间的测试桩复杂度;
[0037]步骤6)

2:计算类重要性;
[0038]步骤6)

3:选择合适的类加入类集成测试序列;
[0039]步骤6)

4:利用反馈机制调整剩余类的类重要性;
[0040]步骤6)

5:检查类集成测试序列是否生成完毕,若是,结束;否则,跳转至步骤4)2

4继续执行。
[0041]本专利技术的有益效果是:通过本方法解决了“现有研究在度量类重要性时,没有综合考虑局部重要性和全局重要性,考虑的因素较为单一,类重要性的度量具有单一性和片面性。”的问题,进而大幅度提高了类集成测试的效率,同时保证了较高的可用性,本专利技术优点:不但能够在较短时间内生成测试代价较低的类集成测试序列,而且能够为测试人员提供多种可以选择的测试方案,优先测试更多重要的类,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法,其特征在于,该方法包括如下步骤:1)构建对象关系图:对源程序进行静态分析,获取各类的成员变量信息、成员方法信息以及类间的属性耦合、方法耦合,构造对象关系图;2)计算K核重要性:首先,根据对象关系图计算类的度重要性;其次,为类赋K值;然后,更新对象关系图中类的度信息;重复上述步骤直至所有类获得K值;归一化类的K核重要性;3)计算结构洞重要性:首先,根据对象关系图计算类的度重要性;其次,根据度重要性计算类的邻接度;然后根据邻接度计算约束系数;最后根据约束系数计算结构洞重要性;4)构造重要性贡献矩阵,计算类重要性:将对象关系图中类的自身的结构洞重要性按照比例分配给与其相邻节点,构造重要性贡献矩阵;根据重要性贡献矩阵计算类重要性;5)计算测试桩复杂度:根据第1部分计算出的类间属性耦合和方法耦合计算属性复杂度和方法复杂度;然后使用熵权法确定属性复杂度与方法复杂度的权值;最后生成测试桩复杂度;6)生成类集成测试序列:利用测试桩复杂度和类重要性选择合适的类加入类集成测试序列,并利用反馈调节机制调整类的重要性,根据类重要性生成完整的类集成测试序列。2.根据权利要求1所述的一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法,其特征在于,1)构建对象关系图具体的方法包括:定义1:对象关系图:对象关系图通常用G(V,E)来表示,V={V1,V2......Vn},其中V表示类的集合,E表示有向边的集合,邻接矩阵A
n*n
=(a
ij
)
n*n
,其中,在对象关系图中,将5种类间关系映射成为3种依赖关系:继承关系包含继承关系,用I表示;聚集关系包含聚集关系和组合关系,用Ag表示;关联关系包含关联关系和使用关系,用As表示。3.根据权利要求2所述的一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法,其特征在于,2)计算K核重要性的具体方法包括:K核重要性通常用来挖掘图中处于核心位置的节点,K核值越高,节点就越重要,通过对传统的K核重要性计算方法做出修改,使得K核重要性可以更准确地表示类的全局重要性;首先,根据对象关系图计算类的度重要性W2
i
:用G(V,E)表示对象关系图,其中则度信息W2
i
的计算方法如公式(1)所示:W2
i
=∑a
ji
+∑a
ij
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)其次,为类赋K值:移除对象关系图中所有度重要性最小的类和边,令移除的类的K值等于K
si
,K
si
计算方法如公式(2)所示:K
si
=min{W2
i
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)然后,更新对象关系图中类的度信息W2
i
,计算方法如公式(3)所示;其中,λ为调节因子,K
si
为已移除节点的K值;进而,再次遍历对象关系图,移除W2
i
≤K
si
的类和边,直至所有剩余类的W2
i
均大于K
si
,选取W2
i
中的最小值的更新K
si
,最后,重复上述过程,直至所有的类获得K值;
W2
i
=∑a
ji
+∑a
ij
+λK
si
(0≤λ≤1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)所有类获得K值后,进行归一化处理获取类的K核重要性K
i
,计算方法如公式(4)所示。4.根据权利要求3所述的一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法,其特征在于,3)计算结构洞重要性的具体方法:常用的衡量结构洞指标主要有7个:网络约束系数、介数中心性、局部聚类系数度、效率、等级度、PageRank和有效规模;选择约束系数RC
i
来衡量结构洞重要性;首先,计算类的邻接度Q(i);然后,计算类的约束系数RC
i
;最后,根据约束系数生成类的结构洞重要性S
i
;由于对象关系图为有向图,因此,选择入度与出度的和作为度重要性;首先根据对象关系图计算类的度重要性:对象关系图通常用G(V,E)来表示,其中,V表示类的集合,E表示有向边的集合,邻接矩阵A
n*n
=(a
ij
)
n*n
,则度重要性W1
i
的计算方法如公式(5)所示:W1
i
=∑a
ij
+a
ji
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)类邻接度Q(i)的计算方法如公式(6)所示;其中,σ为类i所依赖的类集;约束系数RC
i
用来表征邻居节点对节点形成结构洞的约束力,约束系数越小,形成结构洞的可能性和规模越大,结构洞重要性就大;约束系数RC
i
计算方法如公式(7)所示:其中,p
ij
表示类i为维持与类j的邻居关系所投入的精力占总精力的比例;p
ij
的计算方法如公式(8)所示:法如公式(8)所示:约束系数越小,构成结构洞的可能性就越大;因此,结构洞重要性S
i
计算方式如公式(9)所示。5.根据权利要求4所述的一种基于邻域结构洞重要性贡献矩阵的类集成测试序列生成方法,其特征在于,4)构造重要性贡献矩阵,计算类重要性的具体方法:将对象关系图中类的自身的结构洞重要性按照比例分配...

【专利技术属性】
技术研发人员:张艳梅鲁东宇袁冠姜淑娟
申请(专利权)人:中国矿业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1