基于构件测试用例集组合的构件组装测试方法

文档序号:6591593阅读:149来源:国知局
专利名称:基于构件测试用例集组合的构件组装测试方法
技术领域
本发明涉及一种基于构件测试用例集组合的构件组装测试方法,属于软件测试的技术领域。
背景技术
构件组装是基于构件软件开发(Component-basedSoftware Development, CBSD)的核心技术,目前构件组装测试一般是借助模型组合,从得到的系统整体模型中生成交互测试用例。这样带来的问题一是在模型组合时容易产生状态空间的爆炸,二是一些在单元测试时完成的工作要重复进行。在CBSD的过程中,除了构件可以复用外,构件的测试用例集也存在可复用性的性质。
一个构件的测试用例集包含了对该构件所提供功能的测试过程和测试结果。一般来说,除了针对某些特殊的用户需求,构件在接口和功能上都不太可能发生很大的变化。因此在CBSD过程中可以复用已有的构件来组装软件系统,也可以复用相应的测试用例用来进行构件组装测试。发明内容
本发明提出一种基于测试用例组合的构件组装测试方法,利用单个构件测试用例集,组合出新的测试用例,用于构件组装测试,从而达到复用已有工作,节省开发成本的效果。
本发明的技术方案:一种基于构件测试用例集组合的构件组装测试方法,设已通过单个构件测试的构件M1与M2组装成系统P,测试准则为C,Tmi和Tm2分别是构件M1与M2满足C-adequate-for-P的 测试用例集,0是输出接口,I是输入接口,Omi是M1的输出接口集合,Imi是M1的输入接口集合;
定义:若构件M的测试用例集Tm包含5 Dc (P-relevant (Dm))每个子域中至少一个测试数据,则称Tm满足C-adequate-for-P,其中,Dm为构件M的输入子域,P-relevant (Dm)表示系统P调用构件M时所使用的Dm中的子集,SDc(Dm)表示由测试准则C导出的构件M全部输入子域的多重集;
具体测试步骤如下:
步骤1:定义构件 M1 和 M2,当 IPm n/4 = 0,IRmi DiKw2 = 0,且 IPm (MRu2 矣 0 或IPM2ri/i^p0时称它们是可组装的,其中IPmi表示M1提供服务的接口集合,IRmi表示…请求服务的接口集合,IPm2表示M2提供服务的接口集合,IRm2表示M2请求服务的接口集合,若M1和M2不能组装则结束操作;
步骤2:求出构件M2需要M1提供的服务,SP IPmi n IRm2,求出构件M1需要M2提供的服务,即IP12 n IRmi,得出M1和M2需要对方提供的服务的并集,即Shared(M11M2) =(IPM1 n IRm2) U (IPm2 n IRmi);
步骤3:从Tmi与Tm2中找出与集成相关的测试用例集,针对测试用例集Tmi中的每一个测试用例ti,判断构件M1的每一个输出接口 Oi是否存在于测试用例\中,如果Oi存在于\中,并且(^属于IPmi n IRm2,那么说明测试用例ti属于Tm中与IPmi n IRm2相关的部分,用(IPm门IR12).relevant (Tmi) [k]记录下h,其中i表示M1中测试用例的个数;
针对构件M1的每一个输入接口 Ip判断L是否存在于测试用例\中,如果L存在于ti中,并且L属于IPm2 n IRmi,那么说明测试用例ti属于Tmi中与IPm2 n IRmi相关的部分,用(IPM2 H IR11).relevant (Tmi) [I]记录下Ij,其中,j表示M1中输入接口的个数;
再针对测试用例集Tm2中的每一个测试用例tk,判断构件仏的每一个输出接口 Ok是否存在于测试用例tk中,如果Ok存在于tk中,并且Ok属于IPm2 n IRmi,那么说明测试用例tk属于Tm2中与IPm2 n IRmi相关的部分,用
(IPm2 n IR11).relevant (Tm2) [k]记录下tk,其中,k表示M2中测试用例个数;
针对构件M2的每一个输入接口 I1,判断I1是否存在于测试用例tk中,如果I1存在于tk中,并且I1属于IPmi n IRm2,那么说明测试用例tk属于Tm2中与IPmi n IRm2相关的部分,用(IPm门IR12).relevant (Tm2) [I]记录下I1,其中,I表示M2中输入接口的个数;
步骤4:根据匹配的接口,进行测试用例的约减,对Shared (M1, M2)中的每一个接口a, TmiJm2中每个与IPmi n IRm2和IPm2 n IRmi相关的测试用例tp,按a的类型,将tp 设定为一固定值,去掉相同的测试用例,其中,P表示相关测试用例个数;
步骤5:确定步骤4中所得测试用例之间的组合关系,计算组合结果:
针对Tmi中每一个与IPmi H IRm2相关的测试用例\和Tm2中每一个与IPmi H IRm2相关的测试用例tk进行如下处理,
(501):判断\中的任一接口 Xi是否属于IPmi H IRm2,如果Xi属于IPmi n IRm2,同时,存在tk且Xi属于tk,则继续判断Xi在ti中出现的次数与Xi在tk中出现的次数是否相等,若Xi在ti中出现的次数与Xi在tk中出现的次数相等,进入步骤(502);
(502):判断tk中的任一接口 71是否属于IPmi H IRm2,如果yi属于IPmi H IRm2,同时,存在\且Ji属于tp则继续判断Ji在\中出现的次数与Ji在tk中出现的次数是否相等,若在h中出现的次数与Ji在tk中出现的次数相等,进入步骤(503);
(503):经过步骤(501)、(502)处理的\与tk组合属于札与仏的组装测试用例,用IntTestW1 M2) [k]记录,否则不记录;
再针对Tm2中每一个与IPm2 H IRmi相关的测试用例tk和Tmi中每一个与IPm2 H IRmi相关的测试用例\进行如下处理,
(504):判断tk中的任一接口 Xk是否属于IPm2 n IRmi,如果Xk属于IPm2 n IRmi,同时,存在\且1,属于tp则继续判断Xk在tk中出现的次数与1,在\中出现的次数是否相等,若Xk在tk中出现的次数与Xk在ti中出现的次数相等,进入步骤(505);
(505):判断\中的任一接口 yk是否属于IPm2 n IRmi,如果yk属于IPm2 n IRmi,同时,存在tk且yk属于tk,则继续判断yk在tk中出现的次数与yk在\中出现的次数是否相等,若yk在tk中出现的次数与yk在h中出现的次数相等,进入步骤(506);
(506):经过步骤(504)、(505)处理的\与tk组合属于札与仏的组装测试用例,用IntTestW1 M2) [k]记录,否则不记录;
经过上述步骤I至步骤5得到的所有测试用例的并集就是M1与M2组装测试的用例集。
进一步的,在步骤5中,测试用例的可组合性通过如下的方法判断:
构件P和Q的测试用例集分别为Tp和Tq,测试用例
权利要求
1.一种基于构件测试用例集组合的构件组装测试方法,其特征在于:设已通过单个构件测试的构件M1与M2组装成系统P,测试准则为C,Tmi和Tm2分别是构件M1与M2满足C-adequate-for-P的测试用例集,0是输出接口,I是输入接口,Omi是M1的输出接口集合,Imi是M1的输入接口集合; 定义:若构件M的测试用例集Tm包含5 De(P-relevant (Dm))每个子域中至少一个测试数据,则称Tm满足C-adequate-for-P,其中,Dm为构件M的输入子域,P-relevant (Dm)表示系统P调用构件M时所使用的Dm中的子集,SDc(Dm)表示由测试准则C导出的构件M全部输入子域的多重集; 具体测试步骤如下: 步骤 1:定义构件 M1 和 M2,当 IPMl(MPM2=0,IRM1(VRM2 = 0,且 /i^n/^00 或IPm2HIImi #0时称它们是可组装的,其中IPmi表示M1提供服务的接口集合,IRmi表示…请求服务的接口集合,IPm2表示M2提供服务的接口集合,IRm2表示M2请求服务的接口集合,若M1和M2不能组装则结束操作; 步骤2:求出构件仏需要M1提供的服务,即IPmi n IRm2,求出构件M1需要M2提供的服务,即IPm2 n IRmi,得出M1和M2需要对方提供的服务的并集,即Shared(M11M2)= (IPM1 n IRm2)U ( IPm2 H IRmi); 步骤3:从Tmi与Tm2中找出与集成相关的测试用例集,针对测试用例集Tmi中的每一个测试用例判断构件M1的每一个输出接口 Oi是否存在于测试用例\中,如果Oi存在于\中,并且Oi属于IPmi n IRm2,那么说明测试用例\属于Tmi中与IPmi n IRm2相关的部分,用(IPM1 n IRm2)_relevant (Tmi) [k]记录下h,其中i表示M1中测试用例的个数; 针对构件M1的每一个输入接口 Ip判断L是否存在于测试用例\中,如果L存在于\中,并且L属于IPm2 n IRmi,那么说明测试用例\属于Tmi中与IPm2 n IRmi相关的部分,用(IPm2 n IR11).relevant (Tmi) [I]记录下I」,其中,j表示M1中输入接口的个数; 再针对测试用例集T m2中的每一个测试用例tk,判断构件仏的每一个输出接口 Ok是否存在于测试用例tk中,如果Ok存在于tk中,并且Ok属于IPm2 n IRM1,那么说明测试用例tk属于Tk中与IPk n IRmi相关的部分,用(IPM2 n IR11).relevant (Tm2) [k]记录下tk,其中,k表示M2中测试用例个数; 针对构件M2的每一个输入接口 I1,判断I1是否存在于测试用例tk中,如果I1存在于tk中,并且I1属于IPmi n IRm2,那么说明测试用例tk属于Tm2中与IPmi n IRm2相关的部分,用(IPM1 n IRm2)_relevant (Tm2) [I]记录下I1,其中,I表示M2中输入接口的个数; 步骤4:根据匹配的接口,进行测试用例的约减,对Shared (M1, M2)中的每一个接口 a,TM1、Tm2中每个与IPmi n IRm2和IPm2 n IRmi相关的测试用例tp,按a的类型,将tp设定为一固定值,去掉相同的测试用例,其中,P表示相关测试用例个数; 步骤5:确定步骤4中所得测试用例之间的组合关系,计算组合结果: 针对Tmi中每一个与IPmi n IRm2相关的测试用例\和Tm2中每一个与IPmi n IRm2相关的测试用例tk进行如下处理, (501):判断\中的任一接口 Xi是否属于IPmi n IRm2,如果Xi属于IPmi n IRm2,同时,存在tk且Xi属于tk,则继续判断Xi在\中出现的次数与Xi在tk中出现的次数是否相等,若Xi在ti中出现的次数与Xi在tk中出现的次数相等,进入步骤(502); (502):判断tk中的任一接口Yi是否属于IPmi H IRm2,如果Yi属于IPmi n IRm2,同时,存在\且Ji属于tp则继续判断Ji在\中出现的次数与Ji在tk中出现的次数是否相等,若在h中出现的次数与Ji在tk中出现的次数相等,进入步骤(503); (503):经过步骤(501)、(502)处理的\与tk组合属于M1与M2的组装测试用例,用IntTest (M1 M2) [k]记录,否则不记录; 再针对Tm2中每一个与IPm2 n IRmi相关的测试用例tk和Tmi中每一个与IPm2 n IRmi相关的测试用例\进行如下处理, (504):判断tk中的任一接口Xk是否属于IPm2 n IRmi,如果Xk属于IPm2 n IRmi,同时,存在\且Xk属于tp则继续判断Xk在tk中出现的次数与Xk在\中出现的次数是否相等,若Xk在tk中出现的次数与Xk在&中出现的次数相等,进入步骤(505); (505):判断\中的任一接口yk是否属于IPm2 n IRmi,如果yk属于IPm2 n IRmi,同时,存在tk且yk属于tk,则继续判断yk在tk中出现的次数与yk在\中出现的次数是否相等,若yk在tk中出现的次数与yk在h中出现的次数相等,进入步骤(506); (506):经过步骤(504)、(505)处理的\与tk组合属于札与仏的组装测试用例,用IntTest (M1 M2) [k]记录,否则不记录; 经过上述步骤I至步骤5得到的所有测试用例的并集就是M1与M2组装测试的用例集。
2.如权利要求1所述的构件组装测试方法,其特征在于,在步骤5中,测试用例的可组合性通过如下的方法判断: 构件P和Q的测试用例集分别为Tp和Tq,测试用例艺1、V]_,1]_,〇1,]_2,〇2, ,I111J Onj Vn^Ip,艺2\^1,工1,〇1,工2,〇2, ,Im,〇n,Vn)e Tq,若满足:(1)Shared(P,g)关0.(2)Vx e (O1,Or } R SharediP^ Q),e {/ j,m,} f] Shared (P,Q),Vxe Jr11,…麵八O,Bx e (O1,,..,}f|Shared(PyQ)其中,Onum为x在h中出现的次数,Inum为x在t2中出现的次数,并且 Onum = Inum ;则称测试用例h和t2可以组合,其中,V1为h执行前系统的状态,ip im表示输入操作,Op OfOn表示输出操作,Vn为ti执行后系统的状态W1 ’为t2执行前系统的状态,表不输入操作,O1'、02’…on’表不输出操作,vn’为t2执行后系统的状态,m和n为自然数。
3.如权利要求1所述的一种基于构件测试用例集组合的构件组装测试方法,其特征在于:当多个构件组装时, 通过构件的两两组装,使其变化成如权利要求1所述的两个构件组装的形式。
全文摘要
本发明公开了一种基于构件测试用例集组合的构件组装测试方法,属于软件测试领域。该方法利用单个构件测试用例集,组合出新的测试用例,用于构件组装测试,从而达到复用已有工作,节省开发成本的效果。该方法通过对构件交互活动的分析,在不进行模型组装的情况下生成组装测试用例,从而避免了模型组合时的一系列问题。
文档编号G06F11/36GK103226512SQ20131011379
公开日2013年7月31日 申请日期2013年4月2日 优先权日2013年4月2日
发明者吴晓丹, 许峰, 张雪洁, 李良明, 张伟建 申请人:河海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1