一种软件测试用例优化方法及系统的制作方法

文档序号:6539521阅读:260来源:国知局
一种软件测试用例优化方法及系统的制作方法
【专利摘要】本发明公布了一种新的软件测试用例优化方法及系统,结合了层次分析法在确定权重值上的优势以及蚁群算法、遗传算法确定最简、最优先排序用例子集上的技术先进性。利用层次分析法的层次单排序、总排序及一致性检验定量化确定被测系统各功能需求的权重值;再利用蚁群算法结合已得的权重值通过必不可少策略、冗余策略及贪心策略确定出完全覆盖各功能需求、运行代价最小的测试用例子集;在得到最简用例集基础上,利用遗传算法结合已得的权重值确定了新的评估公式,并通过选择算子、交叉算子、变异算子确定出错误检测速率最高的测试用例序列。
【专利说明】一种软件测试用例优化方法及系统
【技术领域】
[0001]本发明涉及一种对软件测试用例进行优化的方法以及系统。
【背景技术】
[0002]在软件测试过程中,测试用例设计是极为重要的环节,用例设计的好坏直接影响到软件测试的质量以及对被测产品质量的评估,并且随着被测系统软件规模的扩大,软件的需求越来越多,相应的测试用例的数量也就越来越多,其中不乏大量的冗余测试用例。因此穷尽测试是不可能的。另外执行每个测试用例都需要花费一定的时间、人力等,这些成本代价是不容忽视的,因此需要对测试用例集进行优化。最终达到,以最少的测试用例最有效的优先级排序对软件进行测试,从而实现降低测试成本、提高测试效率的目的。

【发明内容】

[0003]本发明公开了一种软件测试用例优化方法,由以下步骤组成:
[0004]步骤I):利用层次分析法确定被测系统各功能需求的权重值;
[0005]步骤2):利用改进蚁群算法获得完全覆盖各功能需求、运行代价最小的测试用例子集;
[0006]步骤3):针对步骤2)所得的最简测试用例子集,采用改进遗传算法进行优先级排序,获得错误检测速率最高的测试用例序列。
[0007]进一步,上述步骤I)包括以下步骡:
[0008]al):基于系统中各元素之间的相互关系以及隶属关系建立结构模型;
[0009]bl):利用I?9标度以及成对比较法建立判断矩阵;
[0010]Cl):进行层次单排序;
[0011]dl):进行层次总排序得各功能需求的最终权重值;
[0012]el):测试用例运行代价评估。
[0013]进一步,上述步骡2)包括以下步骤:
[0014]a2):针对系统中测试用例集与功能需求集的关系,生成二维矩阵,用T-R表示,矩阵的行表示测试用例,矩阵的列表示功能需求;
[0015]b2):针对二维关系矩阵T-R,使用必不可少策略、冗余策略进行测试用例集精简得用例子集T,;
[0016]c2):结合步骤I)的el)所得的各测试用例运行代价值,对用例子集T'使用贪心算法,生成一个路径确定、代价较小的先验测试用例子集;
[0017]d2):采用初始路径信息素增强规则,增强c2)中所求得的先验子集中的所有测试用例节点的初始信息素值;
[0018]e2):设置蚂蚁数目、各蚂蚁的解集、禁忌表;
[0019]f2):将测试用例集T'中的所有测试用例节点随机分布在这些蚂蚁上,同时将这个初始节点放在所在蚂蚁的解集中;[0020]g2):每只蚂蚁计算并选择下一步将要选择的测试用例节点,当所有蚂蚁均选择出一个满足要求的测试用例子集时,蚂蚁停止本轮搜索;
[0021]h2):比较所有蚂蚁所寻找出的测试用例子集,找出本轮循环中完全覆盖各功能需求、运行代价最小的测试用例子集;
[0022]?2):在增强所有经蚂蚁爬过的节点信息素的基础上,额外动态地增强本次迭代最优测试用例子集所包含的测试用例节点上的信息素值;本次迭代结束;
[0023]J2):重复e2)~i2),直至得到最简测试用例子集。
[0024]进一步,上述步骤3)包括以下步骤:
[0025]a3):确定测试用例覆盖率;
[0026]b3):确定测试用例的编码策略;
[0027]c3):结合步骤I)的dl)所得的权重值确定适应度函数;
[0028]d3):确定选择算子、交叉算子及变异算子生成新一代种群;
[0029]e3):重复c3)~d3),直至得到错误检测速率最高的测试用例序列。
[0030]本发明还公开了一种软件测试用例优化系统,由以下模块组成:
[0031]第一模块,其利用层次分析法确定被测系统各功能需求的权重值;
[0032]第二模块,其利用改进蚁群算法获得完全覆盖各功能需求、运行代价最小的测试用例子集;
[0033]第三模块,针对第二模块计算所得的最简测试用例子集,采用改进遗传算法进行优先级排序,获得错误检测速率最高的测试用例序列。
[0034]进一步,上述第一模块执行以下操作:
[0035]al):基于系统中各元素之间的相互关系以及隶属关系建立结构模型;
[0036]bl):利用I~9标度以及成对比较法建立判断矩阵;
[0037]Cl):进行层次单排序;
[0038]dl):进行层次总排序得各功能需求的最终权重值;
[0039]el):测试用例运行代价评估。
[0040]进一步,上述第二模块执行以下操作:
[0041]a2):针对系统中测试用例集与功能需求集的关系,生成二维矩阵,用T-R表示,矩阵的行表示测试用例,矩阵的列表示功能需求;
[0042]b2):针对二维关系矩阵T-R,使用必不可少策略、冗余策略进行测试用例集精简得用例子集T,;
[0043]c2):结合第一模块执行的运算步骤el)所得的各测试用例运行代价值,对用例子集T'使用贪心算法,生成一个路径确定、代价较小的先验测试用例子集;
[0044]d2):采用初始路径信息素增强规则,增强c2)中所求得的先验子集中的所有测试用例节点的初始信息素值;
[0045]e2):设置蚂蚁数目、各蚂蚁的解集、禁忌表;
[0046]f2):将测试用例集T'中的所有测试用例节点随机分布在这些蚂蚁上,同时将这个初始节点放在所在蚂蚁的解集中;
[0047]g2):每只蚂蚁计算并选择下一步将要选择的测试用例节点,当所有蚂蚁均选择出一个满足要求的测试用例子集时,蚂蚁停止本轮搜索;[0048]h2):比较所有蚂蚁所寻找出的测试用例子集,找出本轮循环中完全覆盖各功能需求、运行代价最小的测试用例子集;
[0049]?2):在增强所有经蚂蚁爬过的节点信息素的基础上,额外动态地增强本次迭代最优测试用例子集所包含的测试用例节点上的信息素值;本次迭代结束;
[0050]J2):重复e2)~i2),直至得到最简测试用例子集。
[0051]进一步,上述第三模块执行以下操作:
[0052]a3):确定测试用例覆盖率;
[0053]b3):确定测试用例的编码策略;
[0054]c3):结合第一模块执行的运算步骤dl)所得的权重值确定适应度函数;
[0055]d3):确定选择算子、交叉算子及变异算子生成新一代种群;
[0056]e3):重复c3)~d3),直至得到错误检测速率最高的测试用例序列。
[0057]根据本发明的优化方法和系统可以减少软件测试过程中人的参与,避免由于人员经验和能力的不足导致的测试效果受影响的情况出现,提高测试的准确程度和效率。
【专利附图】

【附图说明】
[0058]图1是层次分析法流程图;
[0059]图2是层次结构模型图;
[0060]图3是改进蚁群算法流程图;
[0061]图4是交叉配对流程图;
[0062]图5是变异流程图;
[0063]图6是软件测试用例优化方法流程图;
[0064]图7是功能需求隶属图;
[0065]图8是综合权重分配图;
【具体实施方式】
[0066]测试用例优化方法是一种基于风险的测试策略,它的目的是采用最有效率的测试用例组合发现被测软件中最多的潜在缺陷,一方面可以节省资源以及时间,另一方面可以体现测试的充分性。目前国内外关于测试用例优化方法的研究主要分为测试用例集精简方法和测试用例优先排序方法。
[0067]一、测试用例精简方法
[0068]所谓测试用例精简方法是指对依据功能需求采用传统的测试用例设计方法,例如等价类划分、边界值法、因果图法等设计出的初始用例集,依据一定的规则目标进行精简后所得的最小用例子集。设初始测试用例集合为T,针对T寻找最小用例子集能够用来充分覆盖功能需求集R,即满足T’GT,且ReqCT' ) =R。如果对于任意其他用例子集都满足T'的基数(用例个数)是最少的,则称T'是最小测试用例子集。
[0069]1、测试用例集精简的基本原则是:
[0070]①有效性:有效性是指约简后的测试用例子集T'的覆盖率与原始测试用例集T的覆盖率完全相同。对原始测试用例集T优化的主要目的是为了从中选择尽可能少的测试用例,使其能完全覆盖所有的功能需求,从而降低人力、物力、时间等成本代价;[0071]②效率:在约简测试用例集时,必须考虑采取的约简算法的运行开销,该算法生成最优测试用例子集时所付出的运行代价必须要小于删除的用例所拥有的代价;
[0072]③适用性:要根据软件类型和测试对象,选择适用的约简算法。
[0073]上述几个约简规则中,规则①即有效性是必须要保证的,在保证有效性的条件下,选择合适的约简算法,尽可能提高效率。无论哪种描述,都必须满足一个前提,即选出的最小测试用例子集不会降低测试效果和程序的可靠性。
[0074]目前有关测试用例集精简方法的研究是测试方面研究的一个热点。相关学者都进行了大量的研究与实验。
[0075]2、各算法的异同点如下:
[0076]I)适用条件
[0077]贪心算法、划分算法、动态规划算法理论简单、操作简便、时间效率较高,但所得结果容易陷入局部最优解,因此上述三种算法适用于对解的全局性要求不高、测试资源有限的条件下进行。蚁群算法所得结果精确性高、全局性强,但该算法时间复杂度较高,占用测试资源较多,适用于对解的全局最优性要求较高、测试资源较充足的条件下进行;
[0078]2)最小用例集规模
[0079]各算法的最小用例集规模均与初始用例集的规模有关,根据冗余测试用例残留情况,贪心算法所得最小用例集中的冗余用例较多,其次是划分法和动态规划算法,两者所得结果中的冗余用例相近,蚁群算法所得结果含有冗余用例最少;
[0080]3)覆盖率
[0081]各算法所得最小用例子集均与初始测试用例集的功能需求覆盖率相同。
[0082]3、改进蚁群算法:
[0083]针对实际的测试情况,确定了利用蚁群算法进行测试用例精简,但该算法也存在很多问题:
[0084](I)针对一个完整的系统,需求量非常大,常常是数百以致上千,与功能需求相关联的测试用例数量巨大,如果直接采用基本蚁群算法对原始测试用例集进行约简,会导致蚂蚁搜索较慢,耗费过长时间,成本较高;
[0085](2)初始路径选择问题,在基本蚁群算法中,由于在初始时刻,所有节点的信息素值完全相同,蚂蚁完全是随机搜索,算法随机性过大;
[0086](3)迭代次数的设置。若迭代次数设置过大,花费大量的时间只是为了取得非常小的改进,是得不偿失的;若迭代次数设置过小,容易造成过早停止迭代,并未找到最优解。基本蚁群算法存在的这些问题都在一定程度上限制了其在实际中的应用;
[0087](4)测试用例运行代价的评估主要是依据经验法判断,不能通过较为客观的评估方法来区分针对不同重要性功能需求的测试用例运行代价。
[0088]I)改进蚁群算法介绍
[0089]首先利用层次分析法对被测系统的功能需求进行重要性评定,得到各需求的权重值,并利用权重值来确定覆盖各需求的相应测试用例运行代价,然后对原始测试用例集进行约简并运行基于初始路径信息素增强的蚁群算法。该方法充分考虑了测试用例的特征,针对初始测试用例一功能需求关系矩阵,将其中的必不可少测试用例和冗余测试用例挑选出来,从而降低原始测试用例集的规模,大幅度减少蚁群算法的执行时间,接着对约简后的测试用例集使用贪心算法并利用各需求的权重值,寻得一个先验子集,并增强该子集中所有节点的初始信息素值,从而使得蚁群算法在一个更好的基础上即较低总代价的基础上进行收敛;同时降低蚁群算法的随机性,加快收敛速度,用较少时间更快达到最优解,本方法能大幅度降低测试用例的运行代价,减少测试用例集的数量,从而节约成本。
[0090]2)层次分析法介绍
[0091]层次分析法AHP (Analytic Hierarchy Process)是美国运筹学家 T.L.Saaty 提出的一种系统分析方法,现已广泛应用于决策、预测、评估等方面,是系统工程中常有的方法。这种方法通常是根据问题的性质和要达到的总目标,将复杂问题的各元素按照各自的支配及相互关系区分成组,形成有序递阶的层次结构模型,人们通过对每个层次元素成对比较来确定各元素的相对重要程度,再通过综合分析最终确定各元素相对于总目标的相对重要程度的排序。因此利用层次分析法能够较好的对系统各元素相对重要性进行评估,层次分析法基本流程如图1所示。
[0092]层次分析法主要内容包括:
[0093](1)建立层次结构模型
[0094]基于系统中各元素之间的相互关系以及隶属关系建立结构模型,该模型主要分为:目标层、准则层、方案层以及后续的方案子层等。如图2所示。
[0095](2)利用1~9标度以及成对比较法建立判断矩阵
[0096]利用系统中各层次元素之间的相对重要程度之比建立判断矩阵,为使元素之间相对重要程度之比便于量化,采用T.L.Saaty等人根据心理学提出的1~9标度法,如表1所示:
[0097]表11~9标度值
[0098]
【权利要求】
1.一种软件测试用例优化方法,其特征是:由以下步骤组成: 步骤I):利用层次分析法确定被测系统各功能需求的权重值; 步骤2):利用改进蚁群算法获得完全覆盖各功能需求、运行代价最小的测试用例子集; 步骤3):针对步骤2)所得的最简测试用例子集,采用改进遗传算法进行优先级排序,获得错误检测速率最高的测试用例序列。
2.根据权利要求1所述的方法,其中,上述步骤I)包括以下步骤: al):基于系统中各元素之间的相互关系以及隶属关系建立结构模型; bl):利用I~9标度以及成对比较法建立判断矩阵; Cl):进行层次单排序; dl):进行层次总排序得各功能需求的最终权重值; el):测试用例运行代价评估。
3.根据权利要求1或2所述的方法,其中,上述步骤2)包括以下步骤: a2):针对系统中测试用例集与功能需求集的关系,生成二维矩阵,用T-R表示,矩阵的行表示测试用例,矩阵的列表示功能需求; b2):针对二维关系矩阵T-R,使用必不可少策略、冗余策略进行测试用例集精简得用例子集T'; c2):结合步骤1)的el)所得的各测试用例运行代价值,对用例子集T'使用贪心算法,生成一个路径确定、代价较小的先验测试用例子集; d2):采用初始路径信息素增强规则,增强c2)中所求得的先验子集中的所有测试用例节点的初始信息素值; e2):设置蚂蚁数目、各蚂蚁的解集、禁忌表; f2):将测试用例集T'中的所有测试用例节点随机分布在这些蚂蚁上,同时将这个初始节点放在所在蚂蚁的解集中; g2):每只蚂蚁计算并选择下一步将要选择的测试用例节点,当所有蚂蚁均选择出一个满足要求的测试用例子集时,蚂蚁停止本轮搜索; h2):比较所有蚂蚁所寻找出的测试用例子集,找出本轮循环中完全覆盖各功能需求、运行代价最小的测试用例子集; ?2):在增强所有经蚂蚁爬过的节点信息素的基础上,额外动态地增强本次迭代最优测试用例子集所包含的测试用例节点上的信息素值;本次迭代结束; J2):重复e2)~i2),直至得到最简测试用例子集。
4.根据权利要求1-3中任一项所述的方法,其中,上述步骤3)包括以下步骤: a3):确定测试用例覆盖率; b3):确定测试用例的编码策略; c3):结合步骤1)的dl)所得的权重值确定适应度函数; d3):确定选择算子、交叉算子及变异算子生成新一代种群; e3):重复c3)~d3),直至得到错误检测速率最高的测试用例序列。
5.一种软件测试用例优化系统,其特征是:由以下模块组成: 第一模块,其利用层次分析法确定被测系统各功能需求的权重值;第二模块,其利用改进蚁群算法获得完全覆盖各功能需求、运行代价最小的测试用例子集; 第三模块,针对第二模块计算所得的最简测试用例子集,采用改进遗传算法进行优先级排序,获得错误检测速率最高的测试用例序列。
6.根据权利要求5所述的系统,其中,上述第一模块执行以下操作: al):基于系统中各元素之间的相互关系以及隶属关系建立结构模型; bl):利用I~9标度以及成对比较法建立判断矩阵; Cl):进行层次单排序; dl):进行层次总排序得各功能需求的最终权重值; el):测试用例运行代价评估。
7.根据权利要求5或6所述的系统,其中,上述第二模块执行以下操作: a2):针对系统中测试用例集与功能需求集的关系,生成二维矩阵,用T-R表示,矩阵的行表示测试用例,矩阵的列表示功能需求; b2):针对二维关系矩阵T-R,使用必不可少策略、冗余策略进行测试用例集精简得用例子集T'; c2):结合第一模块执行的运算步骤el)所得的各测试用例运行代价值,对用例子集T'使用贪心算法,生成一个路径确定、代价较小的先验测试用例子集; d2):采用初始路径信息素增强规则,增强c2)中所求得的先验子集中的所有测试用例节点的初始信息素值; e2):设置蚂蚁数目、各蚂蚁的解集、禁忌表; f2):将测试用例集T'中的所有测试用例节点随机分布在这些蚂蚁上,同时将这个初始节点放在所在蚂蚁的解集中; g2):每只蚂蚁计算并选择下一步将要选择的测试用例节点,当所有蚂蚁均选择出一个满足要求的测试用例子集时,蚂蚁停止本轮搜索; h2):比较所有蚂蚁所寻找出的测试用例子集,找出本轮循环中完全覆盖各功能需求、运行代价最小的测试用例子集; ?2):在增强所有经蚂蚁爬过的节点信息素的基础上,额外动态地增强本次迭代最优测试用例子集所包含的测试用例节点上的信息素值;本次迭代结束; J2):重复e2)~i2),直至得到最简测试用例子集。
8.根据权利要求5-7中任一项所述的系统,其中,上述第三模块执行以下操作: a3):确定测试用例覆盖率; b3):确定测试用例的编码策略; c3):结合第一模块执行的运算步骤dl)所得的权重值确定适应度函数; d3):确定选择算子、交叉算子及变异算子生成新一代种群; e3):重复c3)~d3),直至得到错误检测速率最高的测试用例序列。
【文档编号】G06F11/36GK103810104SQ201410077655
【公开日】2014年5月21日 申请日期:2014年3月4日 优先权日:2014年3月4日
【发明者】史睿冰, 金俊坤, 史圣兵, 阚虎, 张鹏, 吕冬雪, 田鸿源, 高靖哲, 李青巍, 杜巍 申请人:中国人民解放军63863部队
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1