基于搜索的类集成测试序列问题中初始种群的生成方法技术

技术编号:20221591 阅读:19 留言:0更新日期:2019-01-28 20:09
基于搜索的类集成测试序列问题中初始种群的生成方法。首先引入了一个约束条件,即测试某序列的类时,不允许打破类间的强依赖关系。随后提出一种在此约束条件下类测试序列的生成方法,包括分析系统得到强依赖矩阵、将矩阵转置并遍历以构建多叉树或多叉树森林、把可以合并的树合并、补全没有遍历到的类进而得到完整的森林、按随机顺序层次遍历森林中的每一棵树以得到类测试序列;本发明专利技术一定程度上解决了利用人工智能算法(如遗传算法和粒子群算法)求解类集成测试序列时,由于初始种群个体适应度值较低、整体质量较差而影响算法收敛速度及寻优结果的问题。将通过该方法生成的类测试序列作为初始种群,不失随机性,同时整体质量有所提高,加强了简单遗传算法和简单粒子群算法的寻优能力。

【技术实现步骤摘要】
基于搜索的类集成测试序列问题中初始种群的生成方法
本专利技术属于软件测试
,特别是在基于搜索的类集成测试序列生成技术中,一种在某约束条件下初始种群(类测试序列)的生成方法。
技术介绍
类集成测试序列的确定是面向对象软件集成测试中的关键难点之一。面向对象软件具有封装性、继承性和多态性等特点,所以其测试技术与传统的面向过程软件有很大区别。类的测试顺序关系到软件缺陷发现的时间和设计测试桩造成的测试成本,因此,确定类的集成测试序列成为集成测试中的一个重要研究问题。在面向对象软件测试过程中,测试桩的开发成本往往是很高的,所以确定类集成测试序列的首要任务就是降低测试桩的开发成本。基于图论的方法由于自身的局限性,无法适用于大型程序。而在确定类测试序列的时候,需要考虑影响测试桩的各种因素,因此,求解类测试序列的问题可以转化为优化问题。目前已有的方法包括遗传算法(GeneticAlgorithm,GA)和粒子群优化算法(ParticleSwarmOptimization,PSO)等,它们都属于人工智能算法。这类方法为了表示构造测试桩的代价,往往以序列的总体复杂度作为适应度函数,通过随机生成一定数量的个体组成初始种群,一个类测试序列作为一个个体。之后对种群进行一系列的进化操作,在进化一定的代数之后,最终获得适应度函数下的最优解。目前,简单的遗传算法和粒子群算法都是通过随机方法生成初始种群,初始种群个体的适应度较低,一定程度上制约算法的收敛速度,导致在规定的进化代数内无法得到更优的解。因此,简单的进化算法逐渐不能满足实际需要。
技术实现思路
为了解决现有的方法初始种群个体适应度较低,导致寻优效果不佳的问题,本专利技术提供了一种约束条件下的类测试序列(种群个体)的生成方法。即,引入一种约束条件对初始种群进行预处理,约束条件为:打破类间依赖关系生成类测试序列时,不允许打破类间的强依赖关系。首先,确定类间的依赖关系类型;然后,提出多叉树的构建算法,把存在强依赖关系的目标类和源类分别作为多叉树的根节点和叶子节点;最后,对多叉树进行层次遍历,生成带有随机性且满足约束条件的个体。方法执行一次生成一个个体,所以,执行次数要与种群规模相同。其中,种群规模一般为类个数的两倍到三倍。由此方法生成的个体所组成的初始种群,不失随机性,同时整体质量有所提高,可以加强简单遗传算法和简单粒子群算法的寻优能力。方法包括以下步骤:(1)为了方便表示,把待测系统的所有类从1开始编号。(2)通过静态分析得到类间的强依赖矩阵M,M[i,j]=1表示类i强依赖类j,若M[i,j]=0则表示两个类不存在强依赖关系。(3)将矩阵M转置并遍历。首先得到转置矩阵M’,转置的目的是把强依赖关系转换成类测试序列中的前后位置关系,如M[i,j]=1表示类i强依赖类j,为了满足约束,在序列中类j需在类i前面,转置后的矩阵M’可以更加直观地表示这种前后关系。M[i,j]=1变成M’[j,i]=1,表示类j在类i之前。然后遍历转置矩阵,当M’[j,i]=1,则把类j作为根节点,类i作为叶子节点,构建一棵多叉树。(4)把可以合并的树合并,在一棵树中某个类是根节点,而在另一棵树中该类作为叶子节点,此时认为两棵树是可以合并的。如果不存在这样的类,则保持原状。(5)把每一个没有遍历到的类单独作为一棵树,至此得到包含所有类若干棵树的森林。(6)按随机顺序依次层次遍历森林中的每棵树,当某个节点有多个孩子节点时,按随机顺序遍历。如此得到的类测试序列在满足约束条件的同时,保证了极大的随机性。把这样的类测试序列作为初始种群个体,降低了个体的总体复杂度,提高了种群的整体质量。附图说明图1是本专利技术的流程图。图2是强依赖矩阵。图3是转置矩阵。图4是多叉树。图5是合并后的多叉树。图6是森林。附图说明下面结合附图和实施例对本专利技术详细说明。在图1中,本专利技术在约束条件下类测试序列的生成方法包括分析系统得到强依赖矩阵、将矩阵转置并遍历以构建多叉树、合并多叉树、补全没有遍历到的类得到完整森林、按随机顺序层次遍历森林中的每一棵树,遍历结果即为类测试序列,其步骤如下:(1)分析系统得到强依赖矩阵:现有一个系统,共含有10个类,编号为1-10。图2是分析后得到的强依赖矩阵M,M[i,j]=1表示类i强依赖类j,值为0表示两个类不存在强依赖关系。图2中,M[1,3]=M[2,3]=M[4,9]=M[5,3]=M[6,5]=M[8,5]=1,说明类1,2,5强依赖类3,类4强依赖类9,类6,8强依赖类5。(2)图3是转置后的矩阵M’,M’[i,j]=1表示在序列中类i需要排在类j之前。在约束条件下,序列中类3要排在类1,2,5之前,类5要排在类6,8之前,类9要排在类4之前,除此之外的类间相对位置任意,这样就不需要打破强依赖关系。然后,遍历转置矩阵M’,若M’[i,j]=1,则把i作为根节点,j作为叶子节点,构建多叉树。图4是遍历矩阵后构建的多叉树。(3)在图4中,类5既在一棵树上作为根节点,又在另一棵树上作为叶子节点,所以类5是可以合并的节点,将两棵树合并,消除重复节点。图5表示的是合并后的多叉树。(4)合并完多叉树之后,如果还存在没有遍历到的类,则每一个类单独作为一棵树,这样便构成了包含10个类4棵名为树3、树9、树7、树10(以根节点命名)的树的森林。(5)最后,按照随机顺序层次遍历4棵树,如果某个节点有多个孩子节点,也按随机顺序遍历。如此,可得到随机序列,如:9-4-3-2-5-8-6-1-7-10或10-3-1-5-6-8-2-7-9-4等。经验证,测试得到的类测试序列没有打破类间的强依赖关系。本文档来自技高网...

【技术保护点】
1.基于搜索的类集成测试序列问题中初始种群的生成方法其特征在于,首先引入了一种约束条件:测试某一序列的类时,不允许打破类间的强依赖关系。然后,提出多叉树的构建算法。最后遍历多叉树得到类序列。该方法主要包括下列步骤包括:1)分析系统得到强依赖矩阵;2)将矩阵转置并遍历以构建多叉树;3)合并多叉树;4)把没有遍历到的每个类作为一棵树与多叉树组成森林;5)按随机顺序层次遍历森林中的每一棵树得到类测试序列。

【技术特征摘要】
1.基于搜索的类集成测试序列问题中初始种群的生成方法其特征在于,首先引入了一种约束条件:测试某一序列的类时,不允许打破类间的强依赖关系。然后,提出多叉树的构建算法。最后遍历多叉树得到类序列。该方法主要包括下列步骤包括:1)分析系统得到强依赖矩阵;2)将矩阵转置并遍历以构建多叉树;3)合并多叉树;4)把没有遍历到的每个类作为一棵树与多叉树组成森林;5)按随机顺序层次遍历森林中的每一棵树得到类测试序列。2.根据权利要求1所述的基于搜索的类集成测试序列问题中初始种群的生成方法,其特征在于,在步骤1)中,分析系统得到强依赖矩阵,设矩阵为M,M[i,j]=1表示类i强依赖类j,值为0表示两个类不存在强依赖关系。3.根据权利要求1所述的基于搜索的类集成测试序列问题中初始种群的生成方法,其特征在于,在步骤2)中,将矩阵转置并遍历以构建多叉树,设转置后的矩阵为M’,M’[i,j]=1表示...

【专利技术属性】
技术研发人员:姜淑娟张悦宁张艳梅
申请(专利权)人:中国矿业大学
类型:发明
国别省市:江苏,32

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

1