【技术实现步骤摘要】
一种基于软件网络的软件测试数据生成方法
[0001]本专利技术涉及软件可信性、软件测试
,尤其涉及一种基于软件网络的软件测试数据生成方法。
技术介绍
[0002]随着计算机技术的突飞猛进,软件规模日益扩大,软件功能也日趋复杂,软件故障就变得不可避免。软件测试是一种系统方法,用于识别软件中存在的错误,从而通过修复错误以提升软件的质量。在软件测试中,测试数据是为某个特殊目标而编制的一组测试输入,以便测试某个程序路径或核实是否满足某个特定需求。测试数据的质量决定了测试的质量,好的测试数据不仅能减少软件测试的工作量,降低测试成本,而且能在成本和时间的约束下,发现更多的软件错误。由于人工编制测试数据在成本以及效率等方面的限制,因而软件测试数据的自动生成一直是该领域的追求目标。
[0003]基于搜索的测试数据生成是当前最为流行的自动化测试方法之一,该类方法旨在使用如遗传算法一类的元启发式优化搜索技术来自动化或部分自动化测试任务。换言之,测试数据的生成被视为一个搜索问题,即在搜索空间中查找测试数据或测试用例的问题。在基于搜索的测试数据生成问题中,除了搜索算法本身外,另一个需要重点关注的问题就是设计合适的适应度函数。适应度函数用于评价生成的测试数据的质量并指导算法在测试输入空间内寻找满足测试目标的那些输入。构建良好的适应度函数不仅可以提高找到解决方案的可能性,而且还可以实现更好的整体代码覆盖率,并且消耗更少的系统资源。当前已有面向目标(Goal
‑
oriented)、面向链(Chaining
...
【技术保护点】
【技术特征摘要】
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
...
【专利技术属性】
技术研发人员:杨顺昆,苟晓冬,姚琪,段峙宇,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。