一种基于软件网络的软件测试数据生成方法技术

技术编号:32246733 阅读:15 留言:0更新日期:2022-02-09 17:50
本发明专利技术公开了一种基于软件网络的软件测试数据生成方法,包括如下步骤:步骤1,收集待测软件源代码;步骤2,基于源码建立软件网络;步骤3,计算软件网络的重要节点;步骤4,设计基于重要节点的适应度函数;步骤5,基于多目标智能算法生成测试数据;步骤6,测试数据生成过程停止后,输出测试数据集。本发明专利技术可以完成对基于软件网络的软件测试数据生成方法的构建,可以帮助软件测试人员设计满足要求的测试数据,在降低成本和缩短时间的同时,设计出具有更高的软件缺陷检测能力的测试数据,具有较高的实际应用价值。际应用价值。际应用价值。

【技术实现步骤摘要】
一种基于软件网络的软件测试数据生成方法


[0001]本专利技术涉及软件可信性、软件测试
,尤其涉及一种基于软件网络的软件测试数据生成方法。

技术介绍

[0002]随着计算机技术的突飞猛进,软件规模日益扩大,软件功能也日趋复杂,软件故障就变得不可避免。软件测试是一种系统方法,用于识别软件中存在的错误,从而通过修复错误以提升软件的质量。在软件测试中,测试数据是为某个特殊目标而编制的一组测试输入,以便测试某个程序路径或核实是否满足某个特定需求。测试数据的质量决定了测试的质量,好的测试数据不仅能减少软件测试的工作量,降低测试成本,而且能在成本和时间的约束下,发现更多的软件错误。由于人工编制测试数据在成本以及效率等方面的限制,因而软件测试数据的自动生成一直是该领域的追求目标。
[0003]基于搜索的测试数据生成是当前最为流行的自动化测试方法之一,该类方法旨在使用如遗传算法一类的元启发式优化搜索技术来自动化或部分自动化测试任务。换言之,测试数据的生成被视为一个搜索问题,即在搜索空间中查找测试数据或测试用例的问题。在基于搜索的测试数据生成问题中,除了搜索算法本身外,另一个需要重点关注的问题就是设计合适的适应度函数。适应度函数用于评价生成的测试数据的质量并指导算法在测试输入空间内寻找满足测试目标的那些输入。构建良好的适应度函数不仅可以提高找到解决方案的可能性,而且还可以实现更好的整体代码覆盖率,并且消耗更少的系统资源。当前已有面向目标(Goal

oriented)、面向链(Chaining

oriented)、面向覆盖(Coverage

oriented)以及面向距离的适应度函数(Distance

oriented)等四大类适应度函数被提出并用于软件测试数据的生成。面向覆盖的适应度函数最为常见,比如语句覆盖、分支覆盖以及路径覆盖等等,但覆盖率本身并不意味着故障检测能力的有效性。事实上,满足一个“严格”的覆盖标准也不能很好地表明测试数据的有效性,即使覆盖导向测试产生了卓越的性能,测试仍然可能会遗漏大量潜在的严重故障。低故障检测率的原因不仅是覆盖率不高,更可能是覆盖率这一测试标准本身的不足,这需要更好的适应度函数来生成可以发现真正故障的测试,即寻求与故障检测概率增加相关的标准和相应的适应度函数。针对这一状况,我们提出一种基于软件网络的测试数据生成方法。
[0004]现有的如基于遗传算法、蚁群算法、粒子群算法与人工蜂群算法等基于搜索的测试数据生成方法,相比于随机输入测试等,已经具有较好的效果。但这些算法使用的适应度函数,却存在着适应度函数本身的值达到很高但故障检测能力却不足的缺陷。

技术实现思路

[0005]本专利技术目的是提供了一种基于软件网络的软件测试数据生成方法,以解决上述问题。
[0006]本专利技术解决技术问题采用如下技术方案:
[0007]一种基于软件网络的软件测试数据生成方法,包括如下步骤:
[0008]步骤1,收集待测软件源代码;
[0009]步骤2,基于源码建立软件网络;
[0010]步骤3,计算软件网络的重要节点;
[0011]步骤4,设计基于重要节点的适应度函数;
[0012]步骤5,基于多目标智能算法生成测试数据;
[0013]步骤6,测试数据生成过程停止后,输出测试数据集。
[0014]进一步的,步骤1中收集待测软件源代码,其构建方法为:
[0015]获取需要进行测试的软件的源程序文件。
[0016]进一步的,步骤2中基于源码建立软件网络,其构建方法为:
[0017]从软件源码出发,基于逆向工程思想,解析软件源码获取软件模块集合V={v1,v2,

,v
n
}及其逻辑关系集合E={e1,e2,

,e
m
},以此建立软件网络G,软件模块为函数、类、方法不同层次的软件实体。
[0018]进一步的,依据选择的模块的不同,G采用函数调用网络、类依赖网络或方法调用网络不同粒度的网络。
[0019]进一步的,步骤3中计算软件网络的重要节点,其构建方法为:
[0020]借鉴复杂网络理论中的重要节点计算方法,从网络的角度采用度中心性C
D
(v
i
)、介数中心性C
B
(v
i
)、接近中心性C
C
(v
i
)和特征向量中心性C
E
(v
i
)最为常见的节点重要度指标,计算软件网络每个节点的重要度,获取重要节点,以此探索新的测试覆盖准则用于指导软件测试数据的生成。
[0021]进一步的,步骤4中设计基于重要节点的适应度函数,其构建方法为:
[0022]通过重要度计算获得节点重要度后,确定软件的重要节点序列,对应重要节点的计算方式,重要节点序列I
v
细分为四种:度中心性重要节点序列I
Dv
,介数中心性重要节点序列I
Bv
,接近中心性重要节点序列I
Cv
和特征向量中心性重要节点序列I
Ev
;在迭代生成测试数据的过程中,测试数据覆盖的节点集为Cov
v
,则适应度函数为对应重要节点序列,适应度函数也包括四类:度中心性重要节点覆盖率f
Dfit
,介数中心性重要节点覆盖率f
Bfit
,接近中心性重要节点覆盖率f
Cfit
和特征向量中心性重要节点覆盖f
Efit
;在该测试覆盖标准下,测试数据的生成朝着使适应度函数不断增大的方向前进,寻找帕累托最优解。
[0023]进一步的,步骤5中基于多目标智能算法生成测试数据,其构建方法为:
[0024](1)设定多目标适应度函数f
Dfit
,f
Bfit
,f
Cfit
和f
Efit
;各终止节点覆盖率stop
Dc
,stop
Bc
,stop
Cc
和stop
Ec
;以及终止进化代数Max
iteration

[0025](2)种群初始化,随机生成初始种群;
[0026](3)计算种群的各重要节点覆盖率;
[0027](4)判断覆盖率是否满足各终止节点覆盖率或者终止进化代数Max
iteration
,若满足,则输出所有的测试数据,程序终止,若不满足,则转到步骤5;
[0028](5)计算当前种群中个体的快速非支配排序和拥挤距离;
[0029](6)根据快速非支配排序和拥挤距离计算的结果,将当前种群的所有非劣解个体保存至外部集中,并进行个体选择、变异操作等操作产生新种群;
[0030]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于软件网络的软件测试数据生成方法,其特征在于,包括如下步骤:步骤1,收集待测软件源代码;步骤2,基于源码建立软件网络;步骤3,计算软件网络的重要节点;步骤4,设计基于重要节点的适应度函数;步骤5,基于多目标智能算法生成测试数据;步骤6,测试数据生成过程停止后,输出测试数据集。2.根据权利要求1所述的一种基于软件网络的软件测试数据生成方法,其特征在于,步骤1中收集待测软件源代码,其构建方法为:获取需要进行测试的软件的源程序文件。3.根据权利要求2所述的一种基于软件网络的软件测试数据生成方法,其特征在于,步骤2中基于源码建立软件网络,其构建方法为:从软件源码出发,基于逆向工程思想,解析软件源码获取软件模块集合V={v1,v2,

,v
n
}及其逻辑关系集合E={e1,e2,

,e
m
},以此建立软件网络G,软件模块为函数、类、方法不同层次的软件实体。4.根据权利要求3所述的一种基于软件网络的软件测试数据生成方法,其特征在于,依据选择的模块的不同,G采用函数调用网络、类依赖网络或方法调用网络不同粒度的网络。5.根据权利要求1所述的一种基于软件网络的软件测试数据生成方法,其特征在于,步骤3中计算软件网络的重要节点,其构建方法为:借鉴复杂网络理论中的重要节点计算方法,从网络的角度采用度中心性C
D
(v
i
)、介数中心性C
B
(v
i
)、接近中心性C
C
(v
i
)和特征向量中心性C
E
(v
i
)最为常见的节点重要度指标,计算软件网络每个节点的重要度,获取重要节点,以此探索新的测试覆盖准则用于指导软件测试数据的生成。6.根据权利要求5所述的一种基于软件网络的软件测试数据生成方法,其特征在于,步骤4中设计基于重要节点的适应度函数,其构建方法为:通过重要度计算获得节点重要度后,确定软件的重要节点序列,对应重要节点的计算方式,重要节点序列I
v
细分为四种:度中心性重要节点序列I
...

【专利技术属性】
技术研发人员:杨顺昆苟晓冬姚琪段峙宇
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

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

1