一种类集成测试序列生成方法技术

技术编号:18668102 阅读:19 留言:0更新日期:2018-08-14 20:36
本发明专利技术提供一种类集成测试序列生成方法,包括下列步骤:1)从面向对象系统的源代码获取所有类及类间关系;2)从面向对象系统的UML设计文档中的类图获得类优先级表;3)通过遗传算法自动生成类集成测试序列。重复该过程,最后得到一组最优(构建测试桩所花费的测试代价最小)的类测试序列结果。本发明专利技术在一定程度上解决了类集成测试序列问题中初始种群没有任何约束条件,初始种群整体质量较差,进而影响收敛速度及寻优结果的问题以及个体评价标准的片面性和不合理性所导致的寻优效果不够准确的问题。不仅提高了种群整体质量,加快了收敛速度,而且加强了遗传算法的寻优能力,提高了寻优的准确性,进而提高了测试效率和精度,更能满足实际需要。

A kind of integrated test sequence generation method

The invention provides a method for generating class integration test sequences, which comprises the following steps: 1) obtaining all classes and their relationships from the source code of an object-oriented system; 2) obtaining class priority tables from class diagrams in UML design documents of an object-oriented system; 3) automatically generating class integration test sequences through genetic algorithms. Repeat the process, and finally get a set of optimal test sequence results (the least test cost for building test piles). To some extent, the invention solves the problem that the initial population does not have any constraint conditions, the overall quality of the initial population is poor, and then the convergence speed and the optimization results are affected, as well as the inaccuracy of the optimization results caused by the one-sidedness and irrationality of the individual evaluation criteria. It not only improves the overall quality of the population, speeds up the convergence rate, but also strengthens the optimization ability of genetic algorithm, improves the accuracy of optimization, and then improves the test efficiency and accuracy, and can better meet the actual needs.

【技术实现步骤摘要】
一种类集成测试序列生成方法
本专利技术属于软件测试
,特别是在集成测试中类测试序列生成问题中,一种类测试序列的生成方法。
技术介绍
面向对象程序不像面向过程程序那样有明显的层次化模块结构,对象之间的联系通过消息传递的方式,一条消息会引起连锁反应进而形成一条方法调用链,体现调用关系的静态结构是一个错综复杂的网状结构。因此,从哪里开始测试以及如何确定一个集成测试序列是需要进一步研究的问题。类的测试顺序关系到软件缺陷发现的时间和测试成本,因此,确定类的集成测试序列成为集成测试中的一个重要研究问题。现有工作主要通过测试桩成本的大小来衡量一个类集成测试序列的优劣。生成一个类测试序列需要打破一些类间依赖关系,直至没有环路。打破类间依赖关系的过程意味着需要构建测试桩,花费一定的成本。因此,当消除所有的类间依赖关系构成的环路时,满足构建测试桩所花费的成本越小越好。然而,通常无法直接测量或估计测试桩成本,需要借助一定的指标。目前主要从两个方面评价测试桩成本的指标:集成测试测试序列生成过程中构建的测试桩总体复杂度或者所构建的测试桩的个数。类集成测试序列的生成问题本质上是一个优化问题,同时也是一个NP-完全(难)问题。目前已有的解决方法包括基于图论的方法和基于搜索的方法。其中,基于图论的方法由于自身的局限性,无法适用于大型程序,只能针对小规模程序。已有的基于搜索的方法包括基于遗传算法的方法,基于模拟退火算法的方法、基于粒子群算法的方法、基于蚁群算法的方法和NSGA-II。最优的类集成测试序列的生成需要进行多次变换,并且“仅当变换数至少是解空间规模的平方次时,模拟退火算法才能任意逼近平稳分布”。对于类集成测试序列的生成问题来说,解空间规模是类个数的阶乘,因此变换次数的规模近似于类个数的指数次。如果采用任意近似逼近的方式,生成收敛于全局的最优类集成测试序列,模拟退火算法的执行时间将呈指数级增长方式。对于类个数较多的待测系统来说,运行时间难于承受,导致算法不可行。在NP问题中能在有限时间内收敛得到较理想的解。如当类的数量过大时,形成的类序列成指数关系增长,大大增加解空间的规模,对于使用粒子群优化算法进行求解时,容易陷入局部最优解。采用蚁群算法不能保证找到问题的最优解,而是只能保证找到问题的较优解或可接受解。遗传算法有较好的稳健性,在NP问题中能在有限时间内收敛得到较理想的解。适应度函数的选取直接影响遗传算法的收敛速度以及能否找到最优解。已有方案往往以测试桩的总体复杂度作为适应度函数,来评价个体(类集成测试序列)的优劣。然而,单纯以构建的测试桩总体复杂度或者测试桩的个数作为适应度函数都是片面的、不准确的,导致寻优效果不佳,一定程度上制约最优解的生成,因此,已有的以测试桩的总体复杂度作为适应度函数的类测试序列生成方法不能满足实际需要,而应该综合考虑构建的测试桩总体复杂度和测试桩的个数这两个指标,因此,需要设计合理的适应度函数,来评估类集成测试序列的优劣。
技术实现思路
针对面向对象程序类规模大、类间关系复杂等特点,对于类集成测试序列确定难度大的问题,克服现有技术寻优效果不佳的问题,本专利技术提供一种基于遗传算法的类集成测试序列生成方法,利用遗传算法中种群进化特性,逐次产生最优解,解决面向对象程序集成测试中的类测试序列生成问题。本专利技术按以下技术方案实现:一种类集成测试序列生成方法,包括:数据收集模块,用于获取类及类间关系信息,获取类优先级表;以及类集成测试序列生成模块,其实现如下:步骤A、读取所述数据管理模块中的所有类及类间关系信息;步骤B、读取所述数据管理模块中的类优先级表,步骤C、通过遗传算法自动生成类集成测试序列。优选的是,所述步骤C具体实现过程为:步骤一:对类进行编码;步骤二:在类优先级表所给的优先级信息的约束下随机生成规模为类个数的2-3倍数量的初始种群P;步骤三:构造适应度函数,用于评价个体的优劣;步骤四:计算种群P中每个个体的适应度值,以测试桩总体复杂度和测试桩的总个数的加权平均作为个体评价标准;步骤五:针对每个个体的适应度值对个体赋予不同的选择概率Ps,采用轮盘赌的方式从初始种群P中选择类个数的2-3倍数量的个体,生成新的种群P’;步骤六:根据输入的交叉概率Pc,使种群P’中的父代个体进行两两交叉,对交叉后的个体进行合法性检验,保留合法的个体,舍弃不合法的个体;步骤七:根据输入的变异概率Pm,对父代个体进行基因段重排,对生成新的个体进行合法性检验;步骤八:重复步骤四至步骤七多次,最后得到的类测试序列结果即为最优解,最优测试序列使得构建测试桩的所花费的测试代价最小。优选的是,步骤三中,构造用于评价个体优劣的适应度函数时,综合考虑构建测试桩所花费的总体复杂度和构建的测试桩的个数两个指标;其中测试桩的总体复杂度的计算需要借助所构造的所有的单个测试桩的复杂度,而在度量单个测试桩的复杂度时,采用的是客观的熵权法来确定所使用的属性复杂度和方法复杂度的权值。优选的是,步骤三中,适应度函数表示方法如下:其中,Fitness代表适应度函数,等式右边代表测试桩总体复杂度和测试桩的总个数的加权平均;OCplx和NStub分别为生成一个类集成测试序列所花费的测试桩总体复杂度和测试桩的总个数;WOCplx和WNStub分别为测试桩总体复杂度和测试桩的总数的权重,取值在[0,1]之间,且满足WOCplx+WNStub=1。优选的是,步骤五中,其中,Fi表示第i个个体的适应度值,N表示种群中个体的数量。优选的是,所述步骤六中,交叉概率Pc取0.5。优选的是,所述步骤七中,变异概率Pm取1/G;其中,G为一个个体中基因的个数,即类的个数。优选的是,所述数据收集模块获取类及类间关系信息具体实现如下:从面向对象系统的源代码获取所有类信息、描述类间关系的三元组和类间耦合信息。优选的是,所有类信息、描述类间关系的三元组和类间耦合信息是通过开放源码分析工具SOOT从待测程序的源代码中所获取;所有类信息、描述类间关系的三元组和类间耦合信息分别保存在类信息文件和类间关系的三元组信息文件中。优选的是,所述数据收集模块获取类优先级表具体实现如下:从面向对象系统的UML设计文档中的类图获得类优先级表。本专利技术有益效果:(1)类集成测试序列的生成问题是NP问题,目前的方法主要是基于图论的方法和基于搜索的方法。其中,基于图论的方法由于自身的局限性,无法适用于大型程序,只能解决小规模程序的类集成测试序列的生成问题。已有的基于搜索的方法收敛到最优解较慢,与实际应用还有较大的距离。本专利技术通过基于遗传算法的类集成测试序列生成技术,利用遗传算法中的编码、生成初始种群、适应度函数的设计、个体评价、选择、交叉、变异等对种群不断进化,逐步产生最优解,解决类集成测试序列生成问题。(2)本专利技术结合相关的参数配置,运用遗传算法,对待测系统的类进行排序,为测试人员对系统进行集成测试提供科学方案。本专利技术提供的基于遗传算法的类集成测试序列的生成技术,在生成初始种群时考虑了类的优先级信息,在类优先级的约束下生成初始种群,克服了以往的初始种群没有任何约束条件,个体适应度值较低,整体质量较差,影响收敛速度及寻优结果的问题,既不失随机性,又提高了种群整体质量,加强了遗传算法的寻优能力。(3)本专利技术综合考本文档来自技高网
...

【技术保护点】
1.一种类集成测试序列生成方法,其特征在于,包括:数据收集模块,用于获取类及类间关系信息,获取类优先级表;以及类集成测试序列生成模块,其实现如下:步骤A、读取所述数据管理模块中的所有类及类间关系信息;步骤B、读取所述数据管理模块中的类优先级表;步骤C、通过遗传算法自动生成类集成测试序列。

【技术特征摘要】
1.一种类集成测试序列生成方法,其特征在于,包括:数据收集模块,用于获取类及类间关系信息,获取类优先级表;以及类集成测试序列生成模块,其实现如下:步骤A、读取所述数据管理模块中的所有类及类间关系信息;步骤B、读取所述数据管理模块中的类优先级表;步骤C、通过遗传算法自动生成类集成测试序列。2.根据权利要求1所述的一种类集成测试序列生成方法,其特征在于,所述步骤C具体实现过程为:步骤一:对类进行编码;步骤二:在类优先级表所给的优先级信息的约束下随机生成规模为类个数的2-3倍数量的初始种群P;步骤三:构造适应度函数,用于评价个体的优劣;步骤四:计算种群P中每个个体的适应度值,以测试桩总体复杂度和测试桩的总个数的加权平均作为个体评价标准;步骤五:针对每个个体的适应度值对个体赋予不同的选择概率Ps,采用轮盘赌的方式从初始种群P中选择类个数的2-3倍数量的个体,生成新的种群P’;步骤六:根据输入的交叉概率Pc,使种群P’中的父代个体进行两两交叉,对交叉后的个体进行合法性检验,保留合法的个体,舍弃不合法的个体;步骤七:根据输入的变异概率Pm,对父代个体进行基因段重排,对生成新的个体进行合法性检验;步骤八:重复步骤四至步骤七多次,最后得到的类测试序列结果即为最优解,最优测试序列使得构建测试桩的所花费的测试代价最小。3.根据权利要求2所述的一种类集成测试序列生成方法,其特征在于,步骤三中,构造用于评价个体优劣的适应度函数时,综合考虑构建测试桩所花费的总体复杂度和构建的测试桩的个数两个指标;其中测试桩的总体复杂度的计算需要借助所构造的所有的单个测试桩的复杂度,而在度量单个测试桩的复杂度时,采用的是客观的熵权法来确定所使用的属性...

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

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

1