Document
拖动滑块完成拼图
首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于点染色模型的测试用例生成方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:南京信息工程大学

摘要:本发明公开了一种基于点染色模型的测试用例生成方法,该方法包括如下步骤:(1)将软件测试用例生成问题转化为点染色问题;(2)用基于顺序染色的遗传算法来求解最小点染色问题;(3)将图的点染色方案转化为测试用例集的生成方案。相较于普通的基于贪心策略的“一次一行”方案,本发明提供的方法设计全局优化能力,而且设计更简洁、算法执行效率高。

主权项:1.一种基于点染色模型的测试用例生成方法,其特征在于,包括如下步骤:步骤1,将软件测试用例生成问题转化为图论中的点染色问题,将所有可能的软件测试用例转化为图的顶点,并判断顶点之间是否有联边,根据顶点和联边生成无向图;具体过程如下:1.1对于要生成的软件测试用例,定义有k个参数,每个参数有v种取值,要求生成t组合测试用例集CAt,k,v,求得所有的参数组合为种,所有的取值排列为vt种,任取一个参数组合和一个取值排列结合起来作为图的顶点,得到图的点集合V,点集合V的大小为1.2对于1.1得到的点集合,其中任意两个点,对这两个点均有取值的位置,若所有相同位置的取值均相同,则这两个点不联边,否则这两个点联边,得到图的边集合E;1.3将图的点集合V和图的边集合E结合起来生成无向图GV,E;步骤2,利用基于顺序染色的遗传算法求解无向图的最小点染色问题,得到无向图的点染色方案;具体过程如下:2.1对于步骤1得到的具有S个顶点的无向图,对这S个顶点随机生成一个染色顺序,并利用顺序染色算法得到该染色顺序下的染色数;2.2重复2.1N次,得到N个初始解为t1,t2,…,tN,ti=ti1,ti2,…,tiS,Mi,其中,i=1,…,N,ti1,ti2,…,tiS为S个顶点的染色顺序,Mi为染色数;2.3令迭代次数h=0,采用轮盘赌算法进行个体的选择,计算每个个体被选中遗传到下一代的概率,并据此计算出每个个体的累积概率,从而确定N个初始解中能被遗传到下一代的个体数目M,并重新生成N-M个新个体将种群数补齐;2.4对于2.3得到的N个个体,按适应度由高到低,选取前40%的个体作不交叉处理,对剩下60%的个体进行交叉,设定交叉概率为ρ,交叉共循环N次,每次循环都产生一个交叉概率ρn,若ρn≤ρ,则从60%的个体中随机选择两个个体,每个个体随机选择两个位置进行交叉,并将这两个个体进行修正;若ρn>ρ,则本轮循环不进行交叉;2.5将已经进行交叉的个体按概率q进行变异,变异共循环N次,每次循环都产生一个变异概率qn,若qn≤q,则随机选择一个个体,并从中随机选择两个位置进行变异,并修正该个体;若qn>q,则本轮循环不进行变异;2.6若当前生成的种群没有收敛于同一解,或当前迭代次数并未达到设置的迭代次数H,则令h=h+1,重复2.3-2.5,否则停止迭代,并输出点染色方案结果;步骤3,将无向图的点染色方案转化为要生成的软件测试用例集。

全文数据:一种基于点染色模型的测试用例生成方法技术领域本发明涉及一种基于点染色模型的测试用例生成方法,属于软件测试技术领域。背景技术随着计算机的普及,大量系统软件层出不穷,软件已成为我们日常生活重要的一部分。为了让软件更好地服务于我们的工作,软件开发的流程被不断完善,软件开发的过程被不断细化,如今软件开发的整个过程被划分为多个重要课题,如:需求分析、软件测试、软件开发、软件维护等。其中软件测试决定了软件能否发布以及软件维护的方向及成本,如何对一个拥有庞大参数以及结构复杂的软件进行充分全面的测试,已成为目前计算机领域的一个重要课题。例如,通过启发式测试策略模型可以发现软件的代码问题、运行环境问题、数据库使用问题等,从而可以确定软件维护的方向,缩小维护成本。对于软件测试的方法多种多样,测试用例的生成就是其中一个重要的方法。一个系统软件的错误往往是由内部多个参数的组合引起的,如一个web网页的乱码可能是由该网页的数据库以及浏览器共同造成的。因此可以通过检测系统内部的参数组合情况来进行软件测试。但对于拥有庞大参数的软件系统,生成一个小规模并且能够尽可能多得覆盖住所有组合的测试用例集就显得尤其重要。而如今已有的测试用例集生成方法,主要依靠贪心策略做局部搜索,其全局搜索能力比较有限,解的质量有较大的提升空间,有鉴于此,相比于普通的基于贪心策略的“一次一行”方案,需要从全局优化的角度设计具有更好的执行效率,求解质量也更好的算法。发明内容本发明所要解决的技术问题是:提供一种基于点染色模型的测试用例生成方法,将组合测试的用例生成问题转化为图论中的点染色问题,具有较强的全局搜索能力和更好的执行效率,求解质量也较好。本发明为解决上述技术问题采用以下技术方案:一种基于点染色模型的测试用例生成方法,包括如下步骤:步骤1,将软件测试用例生成问题转化为图论中的点染色问题,将所有可能的软件测试用例转化为图的顶点,并判断顶点之间是否有联边,根据顶点和联边生成无向图;步骤2,利用基于顺序染色的遗传算法求解无向图的最小点染色问题,得到无向图的点染色方案;步骤3,将无向图的点染色方案转化为要生成的软件测试用例集。作为本发明的一种优选方案,所述步骤1的具体过程如下:1.1对于要生成的软件测试用例,定义有k个参数,每个参数有v种取值,要求生成t组合测试用例集CAt,k,v,求得所有的参数组合为种,所有的取值排列为vt种,任取一个参数组合和一个取值排列结合起来作为图的顶点,得到图的点集合V,点集合V的大小为1.2对于1.1得到的点集合,其中任意两个点,对这两个点均有取值的位置,若所有相同位置的取值均相同,则这两个点不联边,否则这两个点联边,得到图的边集合E;1.3将图的点集合V和图的边集合E结合起来生成无向图GV,E。作为本发明的一种优选方案,所述步骤2的具体过程如下:2.1对于步骤1得到的具有S个顶点的无向图,对这S个顶点随机生成一个染色顺序,并利用顺序染色算法得到该染色顺序下的染色数;2.2重复2.1N次,得到N个初始解为t1,t2,…,tN,ti=ti1,ti2,…,tiS,Mi,其中,i=1,…,N,ti1,ti2,…,tiS为S个顶点的染色顺序,Mi为染色数;2.3令迭代次数h=0,采用轮盘赌算法进行个体的选择,计算每个个体被选中遗传到下一代的概率,并据此计算出每个个体的累积概率,从而确定N个初始解中能被遗传到下一代的个体数目M,并重新生成N-M个新个体将种群数补齐;2.4对于2.3得到的N个个体,按适应度由高到低,选取前40%的个体作不交叉处理,对剩下60%的个体进行交叉,设定交叉概率为ρ,交叉共循环N次,每次循环都产生一个交叉概率ρn,若ρn≤ρ,则从60%的个体中随机选择两个个体,每个个体随机选择两个位置进行交叉,并将这两个个体进行修正;若ρnρ,则本轮循环不进行交叉;2.5将已经进行交叉的个体按概率q进行变异,变异共循环N次,每次循环都产生一个变异概率qn,若qn≤q,则随机选择一个个体,并从中随机选择两个位置进行变异,并修正该个体;若qnq,则本轮循环不进行变异;2.6若当前生成的种群没有收敛于同一解,或并未达到设置的迭代次数H,则令h=h+1,重复2.3-2.5,否则停止迭代,并输出点染色方案结果。作为本发明的一种优选方案,所述每个个体被选中遗传到下一代的概率,计算公式为:其中,Pti表示个体ti被选中遗传到下一代的概率,mi=1Mi,mi、mj表示个体ti、tj的适应度。作为本发明的一种优选方案,所述每个个体的累积概率,计算公式为:其中,fi表示个体ti的累积概率,Ptj表示个体tj被选中遗传到下一代的概率。本发明采用以上技术方案与现有技术相比,具有以下技术效果:1、相较于现有算法大多是对解的局部优化,本发明考虑从全局优化的角度对解进行处理,使解的求解过程更加高效。2、本发明结构简单,操作简便,运行速度快。附图说明图1是本发明一种基于点染色模型的测试用例生成方法的原理图。图2是本发明的遗传算法进行一轮遗传变异的流程图。具体实施方式下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。如图1所示,为本发明一种基于点染色问题的测试用例生成算法的原理图,包括如下三个步骤:1将软件测试中的测试用例集看做图的顶点集,对于两个点均有取值的位置所取值均相同,则对应的两点之间不联边,其余顶点之间联边,从而得到一个图,进而将测试用例集的生成问题转化为图的点染色问题;2用基于顺序染色的遗传算法来求解最小染色数染色方案;3将图的染色方案转化为软件测试的测试用例集生成方案。其中,将软件测试用例生成问题转化为点染色问题的方法如下:a对于一个测试用例,定义有k个参数,每个参数有v种取值,要求生成t组合测试用例集,可以表示为CAt,k,v,并且可求出其所有参数组合共种,所有的取值排列共vt种。任取一个参数组合和一种取值排列可以结合为一种情况,定义这样一种结合为一个顶点。按照所得的参数组合顺序以及取值排列顺序,两者一一对应,以每种组合的每个排列建立点序列,从而获得点集合V,点集合大小为b对于两个点均有取值的位置,若全部相同位置的取值均相同,则两个点不联边,如v11,v21,v31,…,vt1,,…,与v11,v21,v31,…,,,…,vt1不可以联边。进而产生了边的集合E;c结合a,b的操作,就生成了无向图GV,E。其中,用基于顺序染色的遗传算法来求解最小染色数染色方案的方法如图2所示:a由步骤1可得到具有S个点的图,对这S个顶点随机生成一个染色顺序,并用染色算法给出这个染色顺序下的染色数;b重复步骤a所述的生成方法N次,进而得到N个初始解,称为初代种群;c令h=0,记N个初始解为t1,t2,…,tN,ti=ti1,ti2,…,tiS,Mi。其中ti1,ti2,…,tiS为一个S个点的染色顺序,这些数均为正整数,Mi为染色数,令mi=1Mi为该个体的适应度;d运用轮盘赌算法进行个体的选择。由公式:计算出每个个体被选中遗传到下一代的概率,并用如下公式:计算出每个个体的累积概率。从而确定N个初始解中能被遗传到下一代的个体数目M,并重新生成N-M个新个体将种群数补齐;e对于处理过的N个个体,按适应度由高到低,选取前40%个体作不交叉处理,而剩下的60%个体进行交叉。设定交叉概率为ρ,交叉共进行N次循环,每次都生产一个交叉概率ρn,若ρn≤ρ,则从60%个体中随机选择两个个体,随机选择两个基因位置进行交叉处理,并将这两个个体的基因进行修正;若ρnρ,则表示本轮循环不进行交叉;f将已经进行交叉的个体按概率q进行变异。共进行N次循环,每次循环产生一个变异概率qn,若qn≤q,则随机选择一个个体,并随机选择两个基因位进行变异,并修正该个体的基因;若qnq,则不进行变异处理;g令h=h+1,若当前生成的种群没有收敛于同一解,或并未达到设置的迭代次数H,则重复d,e,f过程。否则停止迭代,并输出结果。下面以有4个参数、每个参数有两个取值的2组合测试为例进行详细说明:表1一个4参数的系统SystemDataBaseClientWebServerWindowsMySQLChromeIISLINUXSQLServerIEAPACHE1点转换该系统有4个参数,每个参数有2个取值,因此有k=4,v=2,讨论2组合测试用例,故t=2,则有CA2,4,2,该图有个顶点,有66条边,根据每种组合的每个排列建立点序列,顶点如下:表2CA2,4,2点集合序号结合情况序号结合情况1Windows,MySQL,__,__13__,MySQL,Chrome,__2Windows,SQLServer,__,__14__,MySQL,IE,__3LINUX,MySQL,__,__15__,SQLServer,Chrome,__4LINUX,SQLServer,__,__16__,SQLServer,IE,__5Windows,__,Chrome,__17__,MySQL,__,IIS6Windows,__,IE,__18__,MySQL,__,APACHE7LINUX,__,Chrome,__19__,SQLServer,__,IIS8LINUX,__,IE,__20__,SQLServer,__,APACHE9Windows,__,__,IIS21__,__,Chrome,IIS10Windows,__,__,APACHE22__,__,Chrome,APACHE11LINUX,__,__,IIS23__,__,IE,IIS12LINUX,__,__,APACHE24__,__,IE,APACHE联边情况如下:表3CA2,4,2边集合点序号相邻点序号点序号相邻点序号12,3,4,7,8,11,12,15,16,19,201314,15,16,19,20,23,2423,4,7,8,11,12,13,14,17,181415,16,19,20,21,2234,5,6,9,10,15,16,19,201516,17,18,23,2445,6,9,10,13,14,17,181617,18,21,2256,7,8,11,12,14,16,23,241718,19,20,22,2467,8,11,12,13,15,21,221819,20,21,2378,9,10,14,16,23,241920,22,2489,10,13,15,21,222021,23910,11,12,18,20,22,242122,23,241011,12,17,19,21,232223,241112,18,20,22,2423241217,19,21,2324由以上操作建立无向图GV,E。并取定种群个数N=10,交叉概率ρ=0.8,变异概率q=0.1。2生成初始种群。随机生成一组染色顺序并计算其染色数,初始种群如下:表4初始种群编号染色顺序染色数123,14,13,3,11,2,7,8,10,24,9,6,19,4,20,18,1,22,21,17,15,12,5,16521,18,7,8,17,14,19,13,10,2,11,21,4,6,24,12,15,9,16,3,5,23,20,225324,8,19,7,9,22,10,13,23,16,21,6,17,2,3,1,14,15,20,18,11,4,5,126417,1,3,2,7,6,24,19,22,5,12,23,13,15,21,11,14,9,16,8,4,18,20,10652,3,9,24,18,21,8,16,20,5,14,13,22,15,17,1,12,23,4,6,19,10,11,77615,14,21,9,2,3,12,19,18,8,16,1,24,7,17,6,22,10,5,11,20,4,13,236716,13,9,23,7,4,21,19,5,20,3,18,24,2,1,11,12,8,10,15,14,22,6,175812,11,21,16,6,2,14,4,19,18,20,3,10,24,5,22,8,9,1,17,15,13,23,76915,12,23,1,10,18,5,8,7,16,13,4,2,9,3,11,17,20,24,22,6,19,14,216101,23,11,6,15,17,10,13,24,12,8,9,4,19,18,7,22,5,3,21,20,14,16,263遗传变异:进行轮盘赌选择需要遗传的个体,为{1,2,6,7,8}。将经过选择的个体进行补全,并以交叉概率ρ=0.8进行10次交叉处理,得到每次交叉概率为:P1=0.2018190.8489330.5719780.9598070.6153140.0323190.8327280.2067320.6504720.560228将经过交叉处理后的种群以变异概率q=0.1进行10次变异处理,得到每次变异概率为:P2=0.0098270.7236850.3620410.3843500.5682240.4647360.2595900.9052400.7558520.290506将以上遗传变异的步骤进行迭代H=2000次,最终获得染色情况如下:表5最终染色情况将点染色方案转化为测试用例生成方案,最终获得该测试系统的测试用例为:表6测试用例集SystemDataBaseClientWebServerWindowsMySQLIEIISWindowsSQLServerChromeAPACHELINUXMySQLIEAPACHELINUXSQLServerIEIISLINUXMySQLChromeIIS以下数据是CAt,k,2在交叉率为0.8,变异率为0.1,迭代次数为2000下的结果显示。其中t为不同的强度情况,k为不同的参数数目,best为迭代2000次后最优的测试用例集规模,worst为最差情况,mean表示2000次迭代的平均测试用例集规模:表7CAt,k,2的多组数据显示与NISTCoveringArrayTables相比,可发现该算法在小参数时可以生成最小测试用例集,在参数变大时结果与历史最优解相近。并且该算法结构简单运行速度快,具有实用性。以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

权利要求:1.一种基于点染色模型的测试用例生成方法,其特征在于,包括如下步骤:步骤1,将软件测试用例生成问题转化为图论中的点染色问题,将所有可能的软件测试用例转化为图的顶点,并判断顶点之间是否有联边,根据顶点和联边生成无向图;步骤2,利用基于顺序染色的遗传算法求解无向图的最小点染色问题,得到无向图的点染色方案;步骤3,将无向图的点染色方案转化为要生成的软件测试用例集。2.根据权利要求1所述基于点染色模型的测试用例生成方法,其特征在于,所述步骤1的具体过程如下:1.1对于要生成的软件测试用例,定义有k个参数,每个参数有v种取值,要求生成t组合测试用例集CAt,k,v,求得所有的参数组合为种,所有的取值排列为vt种,任取一个参数组合和一个取值排列结合起来作为图的顶点,得到图的点集合V,点集合V的大小为1.2对于1.1得到的点集合,其中任意两个点,对这两个点均有取值的位置,若所有相同位置的取值均相同,则这两个点不联边,否则这两个点联边,得到图的边集合E;1.3将图的点集合V和图的边集合E结合起来生成无向图GV,E。3.根据权利要求1所述基于点染色模型的测试用例生成方法,其特征在于,所述步骤2的具体过程如下:2.1对于步骤1得到的具有S个顶点的无向图,对这S个顶点随机生成一个染色顺序,并利用顺序染色算法得到该染色顺序下的染色数;2.2重复2.1N次,得到N个初始解为t1,t2,…,tN,ti=ti1,ti2,…,tiS,Mi,其中,i=1,…,N,ti1,ti2,…,tiS为S个顶点的染色顺序,Mi为染色数;2.3令迭代次数h=0,采用轮盘赌算法进行个体的选择,计算每个个体被选中遗传到下一代的概率,并据此计算出每个个体的累积概率,从而确定N个初始解中能被遗传到下一代的个体数目M,并重新生成N-M个新个体将种群数补齐;2.4对于2.3得到的N个个体,按适应度由高到低,选取前40%的个体作不交叉处理,对剩下60%的个体进行交叉,设定交叉概率为ρ,交叉共循环N次,每次循环都产生一个交叉概率ρn,若ρn≤ρ,则从60%的个体中随机选择两个个体,每个个体随机选择两个位置进行交叉,并将这两个个体进行修正;若ρnρ,则本轮循环不进行交叉;2.5将已经进行交叉的个体按概率q进行变异,变异共循环N次,每次循环都产生一个变异概率qn,若qn≤q,则随机选择一个个体,并从中随机选择两个位置进行变异,并修正该个体;若qnq,则本轮循环不进行变异;2.6若当前生成的种群没有收敛于同一解,或并未达到设置的迭代次数H,则令h=h+1,重复2.3-2.5,否则停止迭代,并输出点染色方案结果。4.根据权利要求3所述基于点染色模型的测试用例生成方法,其特征在于,所述每个个体被选中遗传到下一代的概率,计算公式为:其中,Pti表示个体ti被选中遗传到下一代的概率,mi=1Mi,mi、mj表示个体ti、tj的适应度。5.根据权利要求3所述基于点染色模型的测试用例生成方法,其特征在于,所述每个个体的累积概率,计算公式为:其中,fi表示个体ti的累积概率,Ptj表示个体tj被选中遗传到下一代的概率。

百度查询: 南京信息工程大学 一种基于点染色模型的测试用例生成方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。