[发明专利]一种基于贪婪算法和搜索算法的混合算法的组合测试用例生成算法在审
申请号: | 202010906633.4 | 申请日: | 2020-09-01 |
公开(公告)号: | CN111984542A | 公开(公告)日: | 2020-11-24 |
发明(设计)人: | 勾善义 | 申请(专利权)人: | 勾善义 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210023 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 贪婪 算法 搜索 混合 组合 测试 生成 | ||
本发明公开了一种基于混合的组合测试用例生成算法,包括以下步骤:1)生成满足要求的覆盖数组,后续的操作以覆盖这个数组为判别标准。2)在覆盖率较低的情况下,根据贪婪算法特性,使用贪婪算法来生成测试用例。3)在覆盖率达到比例K后,贪婪算法遇到瓶颈,选择搜索算法替代,以期达到更优的效果。本发明的基于混合算法的组合测试用例生成算法,即保证了贪婪算法生成测试用例前期的高效,又能避免后期陷入局部最优的情况,为从业人员在做测试用例生成方向的工作时,提供一个可以思考的角度。
技术领域
本发明提出了一种基于混合算法的组合测试用例生成算法,属于软件测试中组合测试的领域。利用混合技术,根据覆盖率指标对生成技术及时切换,以更高效地生成测试用例。本发明有效地弥补了单一生成算法的缺陷,在高维的情况下更能体现其优势。
背景技术
软件测试是软件开发生命周期中不可或缺的一个重要环节。如果要保证一个软件系统的质量,需要对它进行详尽的测试。然而,在现实生活中,一个软件系统的参数可能有很多,这会导致完全测试的测试用例数量达到成千上万个,因此组合测试用例生成算法应运而生。
贪婪算法试图在每次迭代中找到当前的最佳选择,以达到满意的解决方法。在确定给定测试集的优先集时,确定一个测试用例作为源测试用例,然后迭代选择后续的测试用例。但是贪婪算法很容易陷入局部最优解。
搜索算法:许多搜索技术已经开发并成功应用于许多领域,包括基于搜索的软件工程(SBSE)领域。作为组合测试的关键问题,覆盖数组的生成已经得到了广泛的研究,并且已经应用了许多搜索技术,这些技术可以称为基于搜索的组合测试(SBCT)。SBCT是SBSE中基于搜索的软件测试(SBST)的一个分支。
本文提出基于贪婪算法和搜索算法的混合算法,用来生成组合测试用例,并给出测试用例生成工具。
发明内容
发明目的:为了解决传统的贪婪算法在生成测试用例时会陷入局部最优的情况,本文提出了一种基于贪婪算法和搜索算法的测试用例生成算法,通过设置覆盖率要求,在未达到设置的覆盖率之前采用贪婪算法,当达到覆盖率要求后,采用搜索算法生成测试用例。
技术方案:为了实现上述目的,本发明采用的技术方案为:
基于贪婪算法和搜索算法的测试用例生成算法,包括以下步骤:
步骤1)、生成满足要求的覆盖数组。
步骤2)、首先选择贪婪算法,如图2,根据贪婪算法特性逐步覆盖数组。
步骤3)、当覆盖标准达到K后,贪婪算法遇到瓶颈,选择搜索算法代替,如图3,以期达到更优的效果。
进一步的,所述步骤1)的具体步骤如下:
步骤1.0)、首先是构建数组,构建覆盖数组的总体目标是创建一个二维数组,其中所有与指定输入关联的t元组都会被覆盖。
步骤1.1)、组合测试使用覆盖表CA作为测试用例集,CA是一个大小为M×k维的矩阵。本发明中,测试用例条数,即覆盖表的大小标记为N;覆盖强度标记为t;待测系统参数个数为其中,取值个数为vi的参数有ki(1≤i≤m,m≤k)个,vi(1≤i≤k)表示第i个参数取值集合,|vi|表示第i个参数取值个数。则CA表有如下表示:
进一步的,所述步骤2)的具体步骤如下:
步骤2.1)、通过使用贪婪算法,将每个因子与某个级别的值绑定在一起,可以为该集合一次建立一行。一旦所有t元组都被覆盖,覆盖数组就完成了。本发明可以动态设置参数K,当覆盖率达到K时,将贪婪算法转换为搜索算法,避免陷入局部最优。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于勾善义,未经勾善义许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010906633.4/2.html,转载请声明来源钻瓜专利网。