一种两两覆盖组合软件测试用例集生成方法技术

技术编号:6089067 阅读:1079 留言:0更新日期:2012-04-11 18:40
针对组合软件测试中两两覆盖组合测试用例集的生成问题,本发明专利技术公开了一种两两覆盖组合软件测试用例集生成方法,该方法受启发于离散粒子群算法,采用一个粒子代表一个测试用例集,不同粒子代表不同的测试用例集生成方案,对测试用例集从整体上评价其对各个因素组合的覆盖情况,粒子位置更新利用各个测试用例中各因素离散值出现的次数为依据随机产生下一代个体位置,最后得到满足约束且覆盖所有因素组合的测试用例集。与已有的方法相比,本发明专利技术提供一种与初始值无关、收敛速度快、计算量小、稳定性好且生成的测试用例集整体规模小的两两覆盖组合软件测试用例集生成方法,提高软件测试效率,减低测试成本。

Method for generating test case set of 22 coverage composite software

The combination of software testing in 22 generation covering combinatorial test suite, the invention discloses a 22 cover combination software test suite generation method, this method is inspired by the discrete particle swarm algorithm, using a particle represents a test case set, different particle generation schemes of different test cases set set the evaluation covers the situation of each combination of the factors from the whole of the test case, the particle position update using the factors of each test case according to the number of discrete values randomly generated the next individual position, the satisfied constraints and cover all factors combined set of test cases. Compared with the existing methods, the invention provides an independent, fast convergence speed and small amount of calculation of test cases and good stability and the overall size of a small set generated 22 coverage test case generating method and software combination set the initial value, improve the efficiency of software testing, reduce test cost.

【技术实现步骤摘要】

本专利技术属于软件测试
,具体涉及到组合软件测试中测试用例集的生成问 题,提供,主要解决在软件测试中如何根据实 际需要,用尽可能少的测试用例来尽可能多地覆盖软件系统中的各因素及相应两两覆盖组 合,系统地检测它们之间的相互作用对系统所产生的影响,从而在保证测试用例集错误检 测能力的基础上尽可能地减少测试用例数量,提高软件测试效率,减低测试成本。
技术介绍
软件测试作为保证软件质量和可靠性的重要手段,贯穿于软件生命周期的整个过 程,在整个软件生命周期中占有重要的地位,大约占整个开发成本的60 %以上。特别对于 航空航天,军事国防等性命攸关的系统,其测试费用甚至高达其工程开发阶段费用总和的3 到5倍。针对一个具体的待测软件系统,我们一方面要考虑采用什么样的测试方法对其进 行系统科学的测试,另一方面要考虑如何产生数量少而质量高的测试用例集,既达到对系 统的充分测试,又能够提高测试的效率,降低测试的成本。软件作为一个复杂的逻辑系统,它的正常运行可能受到多因素的影响,这些因素 可能是系统的配置、内部事件、外部输入等。除单个因素之外,上述因素之间的相互作用也 可能会对软件的正常运行产生影响。因此,在测试时不仅要考虑所有对软件产生影响的可 能因素,而且对存在于这些因素之间的相互作用,即因素之间的组合也要进行充分的测试。 研究发现,大约70%的软件故障是由一个或两个参数的相互作用而引发,为了使用尽可能 少的测试用例来有效检测这些因素之间的相互作用对系统产生的影响,人们提出了组合软 件测试方法,组合软件测试方法是一种设计测试用例集的方法,它依据一定的组合覆盖准 则产生测试用例。根据覆盖程度的不同,可以分为单因素覆盖、两两组合覆盖等。这种方法 力求用尽可能少的测试用例,覆盖尽可能多的影响因素,有效的检测软件系统中各个因素 以及它们之间的相互作用对系统产生的影响。当前组合测试研究的核心问题是组合测试用 例集生成问题,即如何针对具体待测软件,在满足给定组合覆盖要求的前提下,生成规模尽 可能小的测试用例集,以便在保证错误检测能力的前提下尽可能的降低测试成本。大量实践表明,组合软件测试在软件测试实践中具有很好的效果,因此,很有必要 对软件进行组合软件测试,寻找高效地自动组合测试用例集的生成方法,对实现软件测试 过程自动化、高效化和智能化,有着十分重要的现实意义。在软件测试中,测试人员根据待测软件系统SUT的需求规格说明书,确定相应的 测试需求说明书,在软件测试需求说明书中可以准确的获得影响待测软件系统的各种因素 和因素之间的约束限制,这些因素可以用集合F表示为F= {fi; f2,…,fi;…,fn},η为 影响待测系统的因素的个数,i为1到η中的任意一个值,其中因素&假设经过等价类划分后包含?1个离散的值,则因素fi可能的取值可以用集合\表示K = PfpVi2^ViyJ,其中Vil表示因素&的第一个离散值,vi2表示因素&的第二个离散值,1V.表示因素&的第Pi个离散值。该待测系统SUT因素的所有离散值共有P个P = ΣPi,约束限制集合可以用C1=1表示C = {Cl,C2,…,CfflI,m为约束限制的个数待测软件系统SUT的一个测试用例test可 以用η元组表示为test = (V1, V2,…,Vn),其中V1 e V1, v2 e V2, vn e Vn且满足约束限制 C,待测软件系统SUT的一个测试用例集TS假设是有m个测试用例构成的,通过对测试用例 集TS中的各个测试用例在待测软件系统SUT中的运行来实现对待测软件系统SUT的测试。 对待测软件系统SUT因素的所有离散值按照因素从左到右的顺序进行编号,第一个因素 的第一个离散值V11编号为1,第二个离散值V12的编号为2,……,依次类推,第i个因素& 的第一个离散值Vil编号为因素到f^的离散值个数之和再加1,……,最后一个因素fn 的最后一个离散值的编号为P,这样后面我们就用编号来代表系统所有的可能离散取值。考虑到待测软件系统SUT中任意两个因素间的相互作用,都可能对系统产生重要 影响,测试用例集TS需要保证覆盖任意两个因素间所有的取值组合且满足约束限制,待测 软件系统SUT中任意两个因素对可以用二元关系矩阵T= (ti,Ppxp表示,其中,P表示待测 系统的因素的全部离散值个数,i,j为离散值的编号,t^.表示第i个离散值和第j个离散 值覆盖对是否要覆盖,t^. = 1表明第i个离散值和第j个离散值对需要覆盖,^,J = 0表 明第i个离散值和第j个离散值对不需要覆盖,不需要覆盖的原因可以是同一因素内部的 离散值对,也可以是违背了约束限制C的不同因素之间的离散值对。由上述描述可知,两两覆盖的组合测试用例集生成问题就是根据待测软件系统 SUT所有因素的离散值和约束限制情况找到覆盖二元关系矩T = (tu)PXP中所有两两组合 对的规模最小的测试用例集。组合测试方法始于20世纪80年代Mandl提出的两两组合覆盖的软件测试,并成 功应用于Ada编译器的测试,并利用正交拉丁方来产生测试用例集;20世纪90年代末,贝 尔实验室提出一种基于贪心策略的组合测试用例生成方法,并开发了 AETG系统用于产生 组合测试用例集。2001年khroeder提出了利用软件附加信息对组合测试的测试用例集 进行约简和优化的方法;Lei和Tai提出了一种基于参数顺序扩充的两两组合测试数据生 成策略,并开发了 I^airTest系统用于产生两两组合的测试用例。2002年Kuhn和Reilly 研究了组合测试的可用性,发现大约70%的故障是由两个以下参数的相互作用引起的。同 年,Kobayashi和Tsuchiya提出了一种生成两两组合测试数据的代数方法。2003年Cohen Μ. B.等人将模拟退火算法应用于多重维数组合测试用例的生成,该方法综合考虑了运算 效率和运算结果之间的关系,可以根据时间和效率上不同的要求来生成尽可能优的结果。 2004年,Shiba和Tsuchiya等人研究了遗传算法和蚁群算法在组合测试数据自动生成中 的应用。Colbourn和Cohen Μ. B等人提出一种两两组合测试数据生成的确定性密度方法。 Schroeder等人通过实验比较了 N维组合测试与相同规模随机测试的错误检测能力。2005 年,Colbourn和Sierwood等人研究了两种组合覆盖表的生成方法,分别应用于具有不同参 数取值的两两组合覆盖表和高维组合覆盖表的生成。2006年Microsoft的Czerwonka发布 了组合测试用例生成工具PICT,该工具使用基于one-test-at-a-time策略的方法生成测 试用例集;徐宝文,聂长海,史亮等人提出了两种类似的二水平二维组合测试用例集生成方 法;严俊、张健等人提出了在组合测试用例生成中完备搜索算法的应用。2007年,徐宝文等 人提出了一种基于in-parameter-order策略的广义变力度组合测试用例集生成方法,命5名为ParaOrder,完整的解决了相邻因素组合测试用例的生成问题。2010年12月查日军等 人提出组合测试数据生成的交叉熵与粒子群方法,该方法简单的使用了传统粒子群算本文档来自技高网...

【技术保护点】
1.一种两两覆盖组合软件测试用例集生成方法,其特征在于主要包括以下步骤:(1)在软件测试中,测试人员根据待测软件系统SUT的需求规格说明书,确定相应的测试需求说明书,在软件测试需求说明书中可以获得影响待测软件系统SUT的各种因素和因素之间的约束限制,这些因素可以用集合F表示为F={f1,f2,…,fi,…,fn},n为影响待测软件系统的因素的个数,i为1到n中的任意一个值,其中因素fi假设经过等价类划分后包含pi个离散的值,则因素fi可能的取值可以用集合Vi表示其中vi1表示因素fi的第一个离散值,vi2表示因素fi的第二个离散值,表示因素fi的第pi个离散值,则该待测软件系统SUT因素的所有离散值共有P个约束限制集合可以用C表示C={c1,c2,…,cm},m为约束限制的个数,待测软件系统SUT的一个测试用例test可以用n元组表示为test=(v1,v2,…,vn),其中v1∈V1,v2∈V2,vn∈Vn且满足约束限制C;(2)对待测软件系统SUT因素的所有离散值按照因素从左到右的顺序进行编号,第一个因素f1的第一个离散值v11编号为1,第二个离散值v12的编号为2,第pi个离散值编号为pi,依次类推,第i个因素fi的第一个离散值vi1编号为因素f1到fi-1的离散值个数之和加1,最后一个因素fn的最后一个离散值的编号为P,因此第i个因素fi的离散值的编号集合可以用集合Hi表示为这样我们就可以用编号来代表该待测软件系统所有的可能离散取值;(3)考虑到待测软件系统SUT中任意两个因素间的相互作用,都可能对系统产生重要影响,测试用例集TS需要保证覆盖任意两个因素间所有的取值组合且满足约束限制,待测软件系统SUT中任意两个因素覆盖对可以用二元关系矩阵T=(ti,j)P×P表示,其中P表示待测软件系统的因素的全部离散值个数,i,j为离散值的编号,ti,j表示第i个离散值和第j个离散值覆盖对是否要覆盖,ti,j=1表明第i个离散值和第j个离散值对需要覆盖,ti,j=0表明第i个离散值和第j个离散值对不需要覆盖,不需要覆盖的原因可以是同一因素内部的离散值对,也可以是违背了约束限制C的不同因素之间的离散值对;(3)对上述待测软件系统SUT,在粒子群中每个粒子代表一个生成的测试用例集,则粒子群中第i个粒子li的编码为:li=((li11,li12,…,li1n),(li21,li22,…,li2n),…,(liq1,liq2,…,liqn)),其中lijk∈{Vk中离散值的编号},q是要生成的测试用例集中的测试用例的数量,该编码的长度为q×n,(li11,li12,…,li1n)代表该测试用例集中的第1个测试用例,(li21,li22,…,li2n)代表该测试用例集中的第2个测试用例,(liq1,liq2,…,liqn)代表该测试用例集中的第q个测试用例;(4)设定基于离散粒子群算法的参数,所述的参数包括粒子群中粒子的数量N,生成的测试用例集中测试用例的个数q,随机选取各因素可取离散值初始化每个粒子的位置,令迭代次数t=1,开始两两覆盖组合软件测试用例集生成;(5)若粒子li其编码为:li=((li11,li12,…,li1n),(li21,li22,…,li2n),…,(liq1,liq2,…,liqn)),其对应的二元覆盖关系矩阵T=(ti,j)P×P,从li的编码中可以准确地获得该粒子所代表的测试用例集所覆盖的两两覆盖对以及其出现的次数,若覆盖对(i,j)出现w次,则将关系矩阵T中的ti,j的值减去w,计算关系矩阵T中值为1的元素的个数若ti,j=1就是该粒子代表的测试用例集没有覆盖的对数,则每个粒子所代表的生成的测试用例集的适应值f(li)=UnCount(li);(6)对每个粒子,将当前适应值和该粒子局部最优位置的适应值liBest进行比较,若其值小于liBest,则将粒子的当前位置其作为该粒子当前的局部最优位置LocBesti=li,且该粒子的当前适应值作为该粒子的局部最优适应值liBest=f(li)=UnCount(li);(7)对每个粒子,将其局部最优适应值liBest和全局经历过的最优位置的适应值LGBest进行比较,若第i个粒子li的局部最优值liBest小于LGBest,则将其局部最优位置作为当前粒子群的全局最优位置GBest=li,该粒子的局部最优适应值作为粒子群的全局最优适应值LGBest=liBest;(8)根据下面的方法更新每个粒子的各维的位置,粒子li当前位置为li=((li11,li12,…,li1n),(li21,li22,…,li2n),…,(liq1,liq2,…,liqn)),更新之后的位置为li′=((li11′,li12′,…,li1n′),(li21′,li22′,…,li2n′),…,(...

【技术特征摘要】

【专利技术属性】
技术研发人员:孙家泽王曙燕张荣宋辉王小银孟伟军
申请(专利权)人:西安邮电学院
类型:发明
国别省市:87

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

1