一种关于财务云平台的成对组合测试用例生成方法与流程

文档序号:11323141阅读:306来源:国知局
一种关于财务云平台的成对组合测试用例生成方法与流程

本发明涉及软件测试领域,特别涉及一种关于财务云平台的成对组合测试用例生成方法。



背景技术:

软件测试不仅成为软件开发的一个有机组成部分,而且在软件开发的系统工程中占据着相当大的比重。一般来讲软件是一个复杂的逻辑系统,其正常运行受到多因素的影响,可简称为软件系统的输入。对于一个具有n个查询条件,每个查询条件分别有a、b、c…个可选参数时,其组合数为a*b*c*…个,数量巨大,导致测试效率低下、成本高。而d.kuhn等人的研究表明,在某些系统中,大多数的导致软件的失效是由少数参数取特定组合时引起的(发现超过70%的错误是由某两个参数的相互作用触发的,超过90%的错误是由3个以内的参数互相作用而引发的),这种错误称作组合错误。因而人们提出了基于组合覆盖的软件测试方法,比较出名的便是测试用例生成工具aetg和pict,但当参数较多时他们均无法保证生成的组合测试用例集最小化,随着软件测试技术的发展,组合测试用例集的生成便成为组合测试的关键性问题,在不断被改进。为了财务云平台系统中多参数输入查询测试的高效率实施,减小生成的组合测试用例集规模,提高测试用例的可重用性,提出了本发明,将各输入参数根据重要程度给各参数的可能取值赋予权值,然后进行组合测试用例生成得到带优先级排序的组合测试用例集。

此外在实际运用组合测试用例集进行组合测试时,财务云平台系统的测试需求或系统本身发生变更,参数取值则进行相应的变更。例如:增加、删除或变更:参数、参数值,继而要重新生成组合测试用例集,来达到新系统下的覆盖要求。用新参数取值生成的新组合测试用例集和原来的组合测试用例集差异较大,重新测试的代价相对较高。而事实上,旧系统下的测试用例集,往往有很大一部分可以在新系统下进行重用,从而降低重新测试的代价。大多数已有的成对组合测试用例生成的流程都是在系统给定的情况下进行,并没有考虑系统变更后,如何进行回归组合测试的问题。



技术实现要素:

本发明要解决的技术问题是:提供一种关于财务云平台的成对组合测试用例生成方法,在参数化系统发生变更后,在满足新系统覆盖要求的前提下,尽可能重用原系统下已有的测试用例,以减小新增的测试开销。

为解决上述问题,本发明采用的技术方案是:一种关于财务云平台的成对组合测试用例生成方法,由优先级定义、测试用例生成算法及回归测试过程中提高测试用例重用率三部分组成。其中:优先级的定义包括优先权值的计算与优先组合模型,优先权值指的是根据优先级要素通过本发明提出的公式计算出某个参数的某个取值的优先权值;优先组合模型指的是有序覆盖矩阵,即本发明所要求的测试用例集的数学模型。测试用例生成算法按照待测参数各取值的优先权值生成有序测试用例集,最后在满足新系统覆盖要求的前提下,尽可能重用原系统下已有的测试用,生成新的测试用例集。

优先权值计算影响因素有很多,主要有:

1)成本:修改代码需要的代价,记为a

2)涉及代码域:对系统代码范围的影响程度,记为b

3)距最近一次修改后时间间隔:新修改的参数急需重新测试,记为c

4)修改频次:修改频次大,出错概率大,记为d

5)用户使用频次:用户使用频次大,也是测试的关注点,记为e

将以上因素统一换作价值以统一单位,然后用δ1至δ5分别表示每个因素在总的优先权值中的比例,均为0至1间的小数,且δ1+δ2+δ3+δ4+δ5=1;

w表示某个参数取值的优先权值,权值越高优先级越高

w=aδ1+bδ2+cδ3+dδ4+eδ5

给每个参数的每个取值赋予权值后,任意二元组的权值为二元组中两取值的权值之和。利用有序覆盖矩阵得到按照优先级排列的成对组合测试用例。

具体注意事项:

1)测试用例的顺序按优先权值降序排列;

2)对这个测试集的任意前n个,它们的权值总和要尽可能的最大,即找不到另一个覆盖数组,它的前n个测试用例的权值总和更大。

3)对应本发明贪心算法的定义为:选取一个参数的取值,使得它与已经固定的参数所组成的所有未被覆盖的二元组的复合权值最大。

4)适应度函数用于计算二元组的复合权值。

为了实现本发明的目的,采用的技术方案概述包括以下步骤:

(1)根据优先级计算公式,计算出每个参数的优先权值,求出由所有参数的取值组成的二元组及其复合权值,并将它们放入未被覆盖的二元组集合,形成未覆盖集;

(2)利用贪心算法,根据参数取值的优先权值情况在未覆盖集中挑选前n个作为候选测试用例,其中n为用户自行设定值;

(3)利用遗传算法,将步骤(2)所得候选测试用例编码并进行进化操作;在遗传算法停止后,将最优个体挑出并加到测试用例集中,同时将未覆盖集中被覆盖的二元组删去;若未覆盖集未空且测试资源仍然允许测试更多的测试用例,则转向步骤(2),否则转向步骤(4);

(4)判断是否在测试过程中有参数的变化,有则转步骤(5),没有则转步骤(8);

(5)判断已有测试用例可否重用,不可重用则抛弃,可重用则转步骤(6);

(6)将可重用的测试用例转换为新系统下的新测试用例集;

(7)若未覆盖集非空,则将新的未覆盖集作为候选测试用例,则转向步骤(3),否则转向步骤(8);

(8)判断测试资源是否能满足更多测试用例,如果能,则转步骤(2),否则结束流程。

进一步的,步骤(2)的具体实施步骤如下:

(21)从未覆盖集中将权值前n大的二元组挑选出来,如果未覆盖集中二元组个数不足n个,则全部选出;

(22)根据二元组确定候选测试用例的两个参数的取值;

(23)对n个测试用例剩下的未固定的参数,依次按照贪心策略确定取值,最后得到候选测试用例。

进一步的,步骤(3)的具体实施步骤如下:

(31)将在步骤(2)中得到的n个测试用例进行编码;

(32)利用适应度函数求出这些测试用例的适应度;若进化次数足够,则转向步骤(36),否则转向步骤(33);

(33)选取适应度较高的个体和选择适应度较低的个体参加下一代的进化过程;

(34)将步骤(33)选取的个体进行单点交叉;

(35)对步骤(34)所得的个体随机对序列中的某位做二进制取反操作,转向步骤(32);

(36)选取适应度最优的个体加入测试用例集中,并从未覆盖集中删去被覆盖的二元组。

本发明的有益效果是:本发明提供的综合优先级的成对组合测试方法和回归测试用例生成法,采用优先级的定义,通过贪心算法加遗传算法,可以加速测试用例的生成,使得所得测试用例可以在有限资源情况下有效地测试系统关键参数,降低测试用例生成成本,再加上在回归测试过程中将原有测试用例集进行判断去掉多余用例增加新的用例覆盖未被覆盖的用例组合,可提高原有测试用例的重用性,进一步降低测试用例生成成本。

附图说明

图1是本发明方法在实施例中的实现的总体流程图;

图2是本发明方法在实施例中贪心算法的流程图;

图3是本发明方法在实施例中遗传算法的流程图。

具体实施方式

本发明在生成带有优先级的成对组合测试用例生成的同时考虑到参数在使用该测试用例过程中的变化导致测试用例的变化,尽量重用已有测试用例和按照原有方式生成新测试用例的方法来生成新的用例,其中已有的测试用例是在带有优先级的成对组合测试用例生成技术中针对原系统生成的。该方法的使用位于待测系统变更后进行回归测试的阶段,可重用的测试用例加上新生成的测试用例构成最终测试的测试用例集。

如图1所示,本实施例提出的基于优先级的成对组合测试方法分为以下步骤:

(1)对系统每个参数的每个取值进行优先影响因素的评估(为统一单位,评估价值);然后根据发明内容中的优先权值计算公式求出每个参数取值的优先权值;接着将各参数取值的组合列出并计算这些二元组的复合权值。

下面给出优先模型设置具体操作:

设一个系统有m、k、q三个参数,其中,参数m有4个取值(m1、m2、m3、m4),参数k有2个取值(k1、k2),参数q有3个取值(q1、q2、q3)。给各参数赋予影响因素价值。

根据本发明所提出的公式可以计算出每个参数取值的优先权值,公式如下

w=aδ1+bδ2+cδ3+dδ4+eδ5

分别得到m1、m2、m3、m4、k1、k2、q1、q2、q3的优先权值。

获得每个参数取值的优先权值后,将参数取值的组合和组合的权值求出,组合后的权值为两个取值优先权值的乘积;

对未覆盖集合初始化,将所有二元组合放入其中。

(2)按照贪心算法,从未覆盖集中根据参数取值的优先权值情况求得n个候选测试用例,其算法流程如图2所示,具体步骤如下,设n取9:

(21)从未覆盖集中挑选权值前n大的二元组ti(若未覆盖集中二元组个数不足n个,则全部选出);

对未覆盖集进行降序排列,从未覆盖集中挑选前n-1个权值最大的二元组

(22)根据二元组ti确定候选测试用例testi的中两个参数的取值,即这n-1个二元组中的取值被固定,它们作为8(n-1=8)个候选测试用例中确定的部分;

(23)对n个测试用例剩下的未固定的参数,按顺序依次按照贪心策略确定取值,最后得到testi。

本发明的贪心策略是选取一个参数的取值,使得它与已经固定的参数所组成的所有未被覆盖的二元组的复合权值最大。例如,对于m4q1,缺少参数k的取值,故它可以和k1或k2组合。

若和k1组合,则它的复合权值为:

m4k1的权值+m4q1的权值+k1q1的权值=l1

若和k2组合,则它的复合权值为:

k4k2的权值+m4q1的权值+k2q1的权值=l2(l2>l1)

可以看出,若和k2组合,则复合权值更大,故选择k2与其组合,产生一个候选测试用例m4k2q1。对每一个二元组都执行这样的操作即可获得全部候选测试用例。

(3)按照遗传算法,将步骤(2)所得候选测试用例编码并进行进化操作,当遗传算法停止时,挑出最优个体加入测试用例集中,并从未覆盖集中删去被覆盖的二元组,遗传算法流程如图3,具体步骤如下;

(31)对步骤(2)得到的9个测试用例进行编码;

编码需要根据参数取值个数来确定二进制的位数。如参数m有4个取值、参数k有2个取值、参数q有3个取值,则参数m用位表示、参数k用1位表示、参数q用2位表示:假如参数q只有3个取值,编码可以表示4个,故最后一个编码默认表示了优先权值最大的那个取值。

(32)这里我们将一个测试用例的复合权值作为适应度;若个体进化次数足够,则转向步骤(36);否则转向步骤(33);

步骤(33)选择前60%比例的适应度较高的个体,同时选取后20%比例的适应度较低的个体参加下一代的进化过程;

步骤(34)将步骤(33)选取的个体进行单点交叉;

步骤(35)对步骤(34)所得的个体按概率p随机对序列中的某位做二进制取反操作。p为一个经验量,根据实际情况调整;转向步骤32);

步骤(36)选取适应度最优的个体加入测试用例集中,并从未覆盖集中删去被覆盖的二元组。

例如我们通过第一轮遗传算法得到的最优个体是m4k2q1,则需要把它所包含的所有二元组从未覆盖集中删除,应该删除的二元组为m4k2、m4q1、k2q1。

(4)判断是否有参数变化,有则转步骤(5),否则转步骤(8)

(5)判断已有测试用例可否重用,不可重用则抛弃,可重用则转步骤(6)

(51)假设参数的变化为:减少参数值m4,则删掉带m4的参数组合(即删掉不可重用的组合)

(52)假设参数的变化为:增加参数m5,则必产生含m5的二元组合为未覆盖组合,将其编码后算出其复合权值,将复合权值与原测试用例集中最小复合权值比较,若大于最小复合权值,则将该未被覆盖的组合加入候选测试用例集。

其余参数变化情况,以此类推。

(6)将可重用的测试用例转换为新系统下的新测试用例集;

(7)若未覆盖集非空(比如新增参数,则未覆盖集会有相应的新增组合)则将新的未覆盖集作为候选测试用例,则转向步骤(3);否则转向步骤(8);

(8)判断测试资源是否能满足更多测试用例,如果能,则转步骤(2),否则结束流程。

根据本发明得到的测试用例集,对系统中的参数逐一测试。由于在测试用例集中越靠前的测试用例其复合权值越大,故按照此测试用例顺序测试可以确保系统关键参数被测试,通过缺陷检测率。

以上描述了本发明的基本原理和主要的特征,说明书的描述只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1