【技术实现步骤摘要】
一种基于控制流启发式搜索策略的软件测试方法及系统
本专利技术涉及软件测试的
,尤其涉及一种基于控制流启发式搜索策略的软件测试方法及系统。
技术介绍
随着科学技术的不断发展,人类进入第四次工业革命即″互联网+″时代,计算机技术在社会的各个领域都得到了广泛的应用和普及,并取得了较大的成绩,市面上也随之产生了多种计算机软件,因此如何对计算机软件进行高效测试将成为当前研究的热门话题。现有软件测试技术主要是使用符号执行进行软件测试,其中符号执行是一种经典程序分析技术,它将程序中的变量符号化来模拟程序的运行,收集程序路径,使用约束求解器对路径约束条件求解后得到测试案例。在实际应用中中,符号执行的应用受到路径爆炸和约束求解等问题的制约,被测程序中的循环结构是重要的影响因素,可能会导致程序路径规模成倍增长,为测试案例的生成增加困难,降低测试案例生成效率。鉴于此,如何求解最优的测试案例测试路径,从而高效进行软件测试,成为本领域技术人员亟待解决的问题。
技术实现思路
本专利技术提供一种基于控制流启发式搜索策略的软件测试方法,通过利用软件节点检测算法检测到控制流图中的所有节点,并分别计算控制流中各节点的属性关联度和行为关联度,对节点进行权重赋值,同时针对节点的循环结构,利用启发式搜索算法生成多个测试案例,通过求解启发式算法得到最优的测试案例测试路径。为实现上述目的,本专利技术提供的一种基于控制流启发式搜索策略的软件测试方法,包括:利用基于关键节点的循环检测算法获取控制流图中的所有程 ...
【技术保护点】
1.一种基于控制流启发式搜索策略的软件测试方法,其特征在于,所述方法包括:/n利用基于关键节点的循环检测算法获取控制流图中的所有程序节点,并将检测到的程序节点加入循环模块中;/n计算循环模块中各程序节点的属性关联度;/n计算循环模块中各程序节点的行为关联度;/n根据各程序节点的属性关联度和行为关联度对程序节点进行权重的赋权;/n根据不同程序节点的权重,建立基于节点权重与距离的启发式搜索目标函数;/n利用基于路径搜索的启发式搜索策略对目标函数进行求解,针对循环模块中不同的循环结构采取不同的搜索策略,并根据求解结果执行对应的软件测试。/n
【技术特征摘要】
1.一种基于控制流启发式搜索策略的软件测试方法,其特征在于,所述方法包括:
利用基于关键节点的循环检测算法获取控制流图中的所有程序节点,并将检测到的程序节点加入循环模块中;
计算循环模块中各程序节点的属性关联度;
计算循环模块中各程序节点的行为关联度;
根据各程序节点的属性关联度和行为关联度对程序节点进行权重的赋权;
根据不同程序节点的权重,建立基于节点权重与距离的启发式搜索目标函数;
利用基于路径搜索的启发式搜索策略对目标函数进行求解,针对循环模块中不同的循环结构采取不同的搜索策略,并根据求解结果执行对应的软件测试。
2.如权利要求1所述的一种基于控制流启发式搜索策略的软件测试方法,其特征在于,所述利用基于关键节点的循环检测算法获取控制流图中的所有程序节点,包括:
1)首先初始化关键关系dom,对于程序的入口节点映射到其本身,其它节点映射到整个节点集合;
2)分析图中节点关系得到关键关系,具体步骤为遍历节点集合中除了入口节点以外的其它节点,当前节点为n,当图中存在有向边<np,n>,那么表示以n为关键节点的所有有向边起始节点np的关键节点的交集,如果其不在关键关系中,则更新关键关系,重复这个过程,直到关系不再发生变化;
3)根据节点间的关键关系构建循环模块Ls,控制流图中的一条路径由一组连续的节点和有向边组成,当存在路径上的节点为:n1,...,ni,并且满足ni∈dom(nj),则将可以由节点ni及所有能够不经过ni到达nj的节点组成循环模块,将其加入Ls中。
3.如权利要求2所述的一种基于控制流启发式搜索策略的软件测试方法,其特征在于,所述循环模块中各程序节点的属性关联度的计算过程为:
对于程序节点i和邻居节点j的特征向量分别为Vi=(a1i,a2i,...,ani),Vj=(b1i,b2i,...,bni),使用两向量间的距离来表示两个节点i和j的属性关联度SimA(Vi,Vj):
其中:
|Δv|为两节点特征向量之间的欧式距离。
4.如权利要求3所述的一种基于控制流启发式搜索策略的软件测试方法,其特征在于,所述各程序节点的行为关联度计算过程为:
1)计算程序节点i与邻居节点j的历史通信次数所占节点i与邻居节点通信总次数比例,所述计算公式为:
其中:
m(i,j)为程序节点i与邻居节点j的历史通信次数;
X(i,j)为程序节点i与邻居节点j的历史通信频率;
x为随机较小的正数,本发明将其取为0.0001;
2)计算程序节点i的邻居节点j的测试时间占节点i所有邻居节点测试时间的比例,所述计算公式为:
其中:
o(i,j)为程序节点i的邻居节点j的测试时间;
x为随机较小的正数,本发明将其取为0.0001;
Z(i,j)为程序节点i与邻居节点j的测试时间比例;
3)计算程序节点i与邻居节点之间的关联度SimC(Vi,Vj):
SimC(Vi,Vj)=X(i,j)+Z(i,j)
其中:
X(i,j)为程序节点i与邻居节点j的历史通信频率;
Z(i,j)为程序节点i与邻居节点j的测试时间比例。
5.如权利要求4所述的一种基于控制流启发式搜索策略的软件测试方法,其特征在于,所述根据各程序节点的属性关联度和行为关联度进行赋权,包括:
根据各程序节点与邻居节点的属性关联度和行为关联度,为每个程序节点赋权,所述赋权公式为:
其中:
SimA(Vi,Vj)为程序节点i与邻居节点j之间的属性关联...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。