首页> 中国专利> 组合服务精简测试用例的自动生成方法及装置

组合服务精简测试用例的自动生成方法及装置

摘要

本发明提供一种组合服务精简测试用例的自动生成方法及装置。该方法包括:对组合服务的执行流进行路径搜索处理,获取所述执行流的全部路径;对所述全部路径上的节点进行语义分析处理,获取所述全部路径的条件约束链;根据所述条件约束链,获取所述组合服务的输入参数的候选值;对所述输入参数的候选值进行精简组合,获取精简测试用例集合。该装置包括:路径搜索模块、语义分析模块、候选值获取模块和精简组合模块。本发明在测试用例生成的过程中,对输入参数进行获取和分析,根据各输入参数的条件约束,自动生成适用于组合服务的精简测试用例,能够提高测试用例数据生成的有效性,实现了测试用例生成数量的优化。

著录项

  • 公开/公告号CN101788907A

    专利类型发明专利

  • 公开/公告日2010-07-28

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201010033679.6

  • 发明设计人 孙海龙;刘旭东;金若凡;

    申请日2010-01-04

  • 分类号G06F9/44;G06F11/36;

  • 代理机构北京同立钧成知识产权代理有限公司;

  • 代理人刘芳

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-12-18 00:01:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-27

    未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20130522 终止日期:20170104 申请日:20100104

    专利权的终止

  • 2013-05-22

    授权

    授权

  • 2010-09-22

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20100104

    实质审查的生效

  • 2010-07-28

    公开

    公开

说明书

技术领域

本发明涉及通信技术领域,尤其涉及一种组合服务精简测试用例的自动生成方法及装置。

背景技术

随着互联网(Internet)的广泛应用和网络技术的迅速发展,面向服务的体系结构(Service Oriented Architecture;以下简称:SOA)作为一种新型的网络化软件应用模式,已经被工业界和学术界广为接受。SOA的一个重要理念是将“单独、独立、封装”的网络(Web)服务组合成为更大型的服务,实现软件重用、发挥服务的潜力,为Internet上的分布式计算提供支持已购平台和多语言的构件时程序结构。有效地组合分布式的服务,实现服务之间的无缝集成,形成功能丰富的服务流程以满足用户的需求,已经越来越成为软件生产领域中的一个重要需求。

为了保证组合服务的正确性和可靠性,测试成为组合服务开发过程中的一个重要阶段,也是保障软件质量的最有效的手段。测试用例是为测试某个服务而生成的一组输入参数,为了测试某个服务的性能,需要生成多组不同的测试用例,以较全面地进行测试。

由于组合服务具有多参数多取值的特征,参数的取值组合数量巨大,随着待测服务复杂度的提高,现有的测试用例自动生成方法仅适用于单个服务的测试,无法应用于组合服务。

发明内容

本发明实施例提供一种组合服务精简测试用例的自动生成方法及装置,用以提高测试用例数据生成的有效性,实现测试用例生成数量的优化。

本发明实施例提供一种组合服务精简测试用例的自动生成方法,包括:

对组合服务的执行流进行路径搜索处理,获取所述执行流的全部路径;

对所述全部路径上的节点进行语义分析处理,获取所述全部路径的条件约束链;

根据所述条件约束链,获取所述组合服务的输入参数的候选值;

对所述输入参数的候选值进行精简组合,获取精简测试用例集合。

其中,所述对组合服务的执行流进行路径搜索处理,获取所述执行流的全部路径包括:

采用着色路径搜索算法,对组合服务的执行流进行遍历操作,获取所述执行流的执行树;

根据所述执行树,获取所述执行流的全部路径。

所述对所述全部路径上的节点进行语义分析处理,获取所述全部路径的条件约束链包括:

对所述全部路径上的节点进行语义分析处理,获取各节点的条件约束信息;

采用条件约束链分析算法,对各节点的所述条件约束信息进行综合处理,获取所述全部路径的条件约束链。

所述根据所述条件约束链,获取所述组合服务的输入参数的候选值包括:

根据所述条件约束链,计算所述输入参数的约束区间;

将所述输入参数在各约束区间内取值,组成所述组合服务的输入参数的候选值。

所述对所述输入参数的候选值进行精简组合,获取精简测试用例集合包括:

S1、生成一包含所有参数值对的参数值对集合,所述参数值对由任意两个输入参数各任取一候选值所组成;

S2、在所述参数值对集合中,选取出现频率最高的输入参数及其候选值作为当前用例的第一输入参数与第一参数值;

S3、在所述参数值对集合中,根据与所述第一参数值同属一参数值对的其它候选值的出现频率,选取其它输入参数及其候选值作为当前用例的其它输入参数与参数值;

S4、当当前用例选取结束后,删除所述参数值对集合中的由已选取参数值所组成的参数值对,并查询所述参数值对集合是否为空集合,若是,则将选取的所有用例组成精简测试用例集合,否则,执行S2。

本发明实施例提供一种组合服务精简测试用例的自动生成装置,包括:

路径搜索模块,用于对组合服务的执行流进行路径搜索处理,获取所述执行流的全部路径;

语义分析模块,用于对所述路径搜索模块获取的所述全部路径上的节点进行语义分析处理,获取所述全部路径的条件约束链;

候选值获取模块,用于根据所述语义分析模块获取的所述条件约束链,获取所述组合服务的输入参数的候选值;

精简组合模块,用于对所述候选值获取模块获取的所述输入参数的候选值进行精简组合,获取精简测试用例集合。

其中,所述路径搜索模块包括:

遍历操作单元,用于采用着色路径搜索算法,对组合服务的执行流进行遍历操作,获取所述执行流的执行树;

路径获取单元,用于根据所述遍历操作单元获取的所述执行树,获取所述执行流的全部路径。

所述语义分析模块包括:

分析单元,用于对所述全部路径上的节点进行语义分析处理,获取各节点的条件约束信息;

条件约束链获取单元,用于采用条件约束链分析算法,对所述分析单元获取的所述各节点的条件约束信息进行综合处理,获取所述全部路径的条件约束链。

所述候选值获取模块包括:

约束区间计算单元,用于根据所述条件约束链,计算所述输入参数的约束区间;

候选值获取单元,用于将输入参数在各约束区间内取值,组成所述组合服务的输入参数的候选值。

所述精简组合模块包括:

集合生成单元,用于生成一包含所有参数值对的参数值对集合,所述参数值对由任意两个输入参数各任取一候选值所组成;

参数值选取单元,用于当所述集合生成单元生成的所述参数值对集合不是空集合时,在所述参数值对集合中,选取出现频率最高的输入参数及其候选值作为当前用例的第一输入参数与第一参数值,并根据与所述第一参数值同属一参数值对的其它候选值的出现频率,选取其它输入参数及其候选值作为当前用例的其它输入参数与参数值;

处理单元,用于当当前用例选取结束后,删除所述参数值对集合中的由已选取参数值所组成的参数值对,并查询所述参数值对集合是否为空集合,当所述参数值对集合为空集合时,将选取的所有用例组成精简测试用例集合。

本发明实施例的组合服务精简测试用例的自动生成方法及装置,在测试用例生成的过程中,对输入参数进行获取和分析,根据各输入参数的条件约束,自动生成适用于组合服务的精简测试用例,能够提高测试用例数据生成的有效性,实现了测试用例生成数量的优化。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明组合服务精简测试用例的自动生成方法一实施例的流程图;

图2为本发明组合服务精简测试用例的自动生成方法又一实施例的流程图;

图3为本发明组合服务精简测试用例的自动生成装置一实施例的结构示意图;

图4为本发明组合服务精简测试用例的自动生成装置又一实施例的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明组合服务精简测试用例的自动生成方法一实施例的流程图。如图1所示,本实施例提供了一种组合服务精简测试用例的自动生成方法,包括:

步骤101、对组合服务的执行流进行路径搜索处理,获取该执行流的全部路径;

步骤102、对全部路径上的节点进行语义分析处理,获取全部路径的条件约束链;

步骤103、根据该条件约束链,获取组合服务的输入参数的候选值;

步骤104、对输入参数的候选值进行精简组合,获取精简测试用例集合。

本实施例可以基于业务流程建模标注(Business Process ModelingNotation;以下简称:BPMN)模型而实施。BPMN模型规定了一套表示业务流程元素的统一图元,便于业务流程中不同角色之间的交流,也有利于不同业务实体之间的交流。BPMN流程是一种概念模型,与业务流程执行语言(Business Process Execution Language;以下简称:BPEL)相比较,BPMN模型具有执行流任意流动的特点,因此,为了提高BPMN模型测试用例的生成效率,需要对业务流程的执行流进行分析。为了分析流程执行流,首先需要将BPMN流程转化为有向图,通过分析有向图,获得流程全部可能执行的路径。然后通过对全部路径上节点执行语义的分析,取得节点条件约束信息,最终获得路径条件约束链,并根据该条件约束链,获取组合服务的输入参数的候选值,最后对输入参数的候选值进行精简组合,获取精简测试用例集合。

本发明实施例的组合服务精简测试用例的自动生成方法,在测试用例生成的过程中,对输入参数进行获取和分析,根据各输入参数的条件约束,自动生成适用于组合服务的精简测试用例,能够提高测试用例数据生成的有效性,实现了测试用例生成数量的优化。

图2为本发明组合服务精简测试用例的自动生成方法又一实施例的流程图。如图2所示,在上述方法实施例的基础上,步骤101可以包括:

步骤201、采用着色路径搜索(Colored Path Searching;以下简称:CPS)算法,对组合服务的执行流进行遍历操作,获取该执行流的执行树;

步骤202、根据该执行树,获取该执行流的全部路径。

在本实施例中,为了描述BPMN流程转换为有向图的方法,下面给出BPMN执行模型的相关定义:

定义1、流对象(Flow Object;以下简称:FO),指BPMN流程中基本可执行的节点,包括各种事件(Event)、活动(Activity)和网关(Gateway)等,将其表示为四元组FO=(ID,″IngoingDegree″,″OutgoingDegree″,″Type″)。其中,身份标识(Identity;以下简称:ID)唯一地标识一个流对象,即BPMN图中的一个节点;″IngoingDegree″表示BPMN流对象的入度;″OutgoingDegree″表示流对象的出度;″Type″表示该流对象的类型。

BPMN中的FO分为若干种,每一种FO又包含若干不同的类型。例如,对于Event,有开始事件(Start Event)和结束事件(End Event)等类型,一般将Start Event作为执行的开始,将End Event作为流程终点;对于Gateway,又分为与(AND)、或(OR)、异或(XOR)等分支聚合结构,为了适应多样的流程结构,本实施例在路径分析中对各种分支进行统一处理。

定义2、顺序流(Sequence Flow;以下简称:SF),指BPMN中的流程执行控制链路,表示为四元组SF=(ID,″sourceRef″,″targetRef″,″conditionExpression″)。其中,ID唯一地标识一个顺序流,即BPMN流程图中的一条边;″sourceRef″是该SF的源FO的ID;″targetRef″是该SF指向的FO的ID;″conditionExpression″表示该SF从″sourceRef″转移到″targetRef″的条件约束。如果无条件约束,则″conditionExpression″为空。

根据以上定义,可以将一个BPMN流程转换为有向图G(V,E)。其中V为节点集合,V={FO},E为有向边,E={SF},方向由″sourceRef″指向″targetRef″,构造出有向图后,根据CPS该算法对执行流进行遍历操作,从而获取执行树,进而获取全部路径。

CPS算法:

CPS(G(V,E))

    for each vertex u∈V[G]

        do color[u]←WHITE

          u.parent←NULL

          u.children←NULL

    for each vertex u∈V[G]

        do if color[u]=WHITE

            then CPS-VISIT(u)

        else continue

CPS-VISIT(u)

    color[u]=GRAY       //节点初次被搜索

for each v∈Adj[u]            //遍历到相邻FO

    do if color[v]=WHITE

        then PUSH(u.children,v)

            v.parent ←u

            CPS-VISIT[v]

    else if color[v]=GRAY

        then continue  //存在执行环路

color[u]←BLACK            //完成该FO搜索

在上述CPS算法中,白色(WHITE)节点为未被搜索节点,灰色(GRAY)节点为初次发现节点,当以某节点为根的执行树遍历完成后,置该节点为黑色(BLACK),当子节点的邻接节点为灰色时,则该路径为环路,当某节点的邻接节点为黑色时,则存在一条直连路径。

另外,步骤102可以包括:

步骤203、对全部路径上的节点进行语义分析处理,获取各节点的条件约束信息;

步骤204、采用条件约束链分析(ConditionParse)算法,对各节点的条件约束信息进行综合处理,获取全部路径的条件约束链。

输入参数的条件约束信息对测试数据的有效选取有直接指导作用。为了确定输入参数的条件约束,上述路径上的节点进行语义,剔除与输入参数无关的条件约束,将条件约束信息综合,最终确定输入参数的定义域。

进一步地,步骤103可以包括:

步骤205、根据条件约束链,计算输入参数的约束区间;

步骤206、将输入参数在各约束区间内取值,组成组合服务的输入参数的候选值。

ConditionParse算法描述如下,其输入为路径起始FO:

ConditionParse(StartEvent)

FO←StartEvent

while type(FO)≠EndEvent

//获得路径中下一执行节点

FO←nextFO()

expressions ←SF(FO)

//剔除无关条件约束

if condition(FO)≠NULL

and inputVariable∈condition(FO)

//调用表达式分析函数,

分析条件约束间断点

v←expressionParser(expr)

push(oddPoint,v)

//对根据间断点对等价区间给出候选值

generateInputData(oddPoint)

在上述ConditionParse算法中,对于每条路径,依据ConditionParse算法,以类型为start event的流对象作为路径起始点,以类型为end event的流对象作为终点,依次遍历路径上所有边,可以得到该路径的条件约束链。″expressionParser″分析涉及输入参数条件约束的间断点,根据间断点划分输入区间,为每个等价区间设置候选值,该候选值可按照预定规则给出。

更进一步地,步骤104可以包括:

步骤207、生成一包含所有参数值对的参数值对集合,该参数值对由任意两个输入参数各任取一候选值所组成;

步骤208、在该参数值对集合中,选取出现频率最高的输入参数及其候选值作为当前用例的第一输入参数与第一参数值,此时,若出现最高频率相同的多个输入参数,则随机选择一个输入参数及其候选值作为当前用例的第一输入参数与第一参数值;

步骤209、在该参数值对集合中,根据与第一参数值同属一参数值对的其它候选值的出现频率,选取其它输入参数及其候选值作为当前用例的其它输入参数与参数值;

步骤210、当当前用例选取结束后,删除该参数值对集合中的由已选取参数值所组成的参数值对;

步骤211、查询该参数值对集合是否为空集合,若是,则执行步骤212,否则,执行步骤208;

步骤212、将选取的所有用例组成精简测试用例集合。

为了生成覆盖候选值两两组合(pair-wise)的精简测试用例集合,采用一种基于贪婪思想的精简组合算法,描述如下:

若设待测组合服务有n个输入参数,定义为P={P1,…pn},每个输入参数存在k种候选值,将其定义为I={I1,…Ik},并假定当前已选取了m个测试用例,则通过如下步骤选取第m+1个测试用例:

(1)选择一个在所有尚未被之前m个测试用例覆盖的参数值对(Pair)中出现次数最多的输入参数p及其取值i;

(2)令P1=p,并将剩余参数随机排列,将得到所有n个输入参数的一个序列:P1,…,Pn

(3)假设对于步骤(2)中的序列,当前已选择了j(j<n)个输入参数的取值P1,…,Pj,且对任意1≤i≤j,输入参数Pi的取值为Vi,则通过如下步骤为输入参数Pj+1选择Vj+1

(a)对fj+1每个可能的取值v,生成pair集{fj+1=v,fi=vi,1≤i≤j},并与未覆盖集合取交集,将该集合中出现最多的取值作为vj+1

(b)重复步骤(a),直到所有输入参数都被取值;

(4)如尚有Pair未被覆盖,返回步骤(1),否则记录下生成的测试用例总数,将选取的所有用例组成精简测试用例集合。

在生成每个测试用例的过程中,每个输入参数只被处理一次,且当为fj+1选择取值时,可能的取值仅与j个已经选择的参数值进行比较,因此该算法能够收敛。但由于该算法的随机性特征,无法保证单次运行即可生产最优结果,故需要重复运行上述步骤M次,之后从M次生成的结果中选择生成的测试用例总数最少的一次,作为最优的精简测试用例集合。

举例来说明上述步骤的处理过程:令组合服务的三个输入参数为a,b,c,其对应取值分别为{a1},{b1,b2},{c1,c2,c3},则初始参数值对(pair)集合为{a1,b1},{a1,b2},{a1,c1},{a1,c2},{a1,c3},{b1,c1},{b1,c2},{b1,c3},{b2,c1},{b2,c2},{b2,c3}。选择出现次数最多的a1,取参数的一个随机排列a,c,b。为参数c选择取值,对其所有可能取值c1,c2,c3,与a1进行组合,得到{a1,c1},{a1,c2},{a1,c3},选择c1。重复该步骤,选择参数b的值b1,此时各参数均已取值,可得到一个测试用例为a1,b1,c1。

经过第一轮选择,未覆盖的参数值对为:{a1,b2},{a1,c2},{a1,c3},{b1,c2},{b1,c3},{b2,c1},{b2,c2},{b2,c3},此时选择出现次数最多的b2,取参数的一个随机排列b,a,c,得到参数值对{a1,b2},选择a1,得到参数值对{a 1,c2},{a1,c3},{b2,c1},{b2,c2},{b2,c3},可得到一个测试用例为a1,b2,c2。

此时未覆盖的参数值对为:{a1,c3},{b1,c2},{b1,c3},{b2,c1},{b2,c3},此时选择出现次数最多的c3,取参数的随机排列为c,a,b,得到参数值对{a1,c3},选择a1,得到参数值对{b1,c3},{b2,c3},可得到一个测试用例为a1,b1,c3。

重复上述步骤可得到精简的测试用例集合,如表1所示,可以看到该集合覆盖了参数间的所有两两组合。

本发明实施例的组合服务精简测试用例的自动生成方法,在测试用例生成的过程中,对输入参数进行获取和分析,根据各输入参数的条件约束,自动生成适用于组合服务的精简测试用例,能够提高测试用例数据生成的有效性,使得测试用例能够针对组合服务的结构特点,对循环、分析、选择等节点进行有效的检测,实现了测试用例生成数量的优化。

图3为本发明组合服务精简测试用例的自动生成装置一实施例的结构示意图。如图3所示,本实施例提供了一种组合服务精简测试用例的自动生成装置,包括:路径搜索模块31、语义分析模块32、候选值获取模块33和精简组合模块34。其中,路径搜索模块31用于对组合服务的执行流进行路径搜索处理,获取该执行流的全部路径;语义分析模块32用于对路径搜索模块31获取的全部路径上的节点进行语义分析处理,获取全部路径的条件约束链;候选值获取模块33用于根据语义分析模块32获取的条件约束链,获取组合服务的输入参数的候选值;精简组合模块34用于对候选值获取模块33获取的输入参数的候选值进行精简组合,获取精简测试用例集合。

本实施例可以基于BPMN模型而实施。为了提高BPMN模型测试用例的生成效率,需要对业务流程的执行流进行分析。为了分析流程执行流,首先路径搜索模块31将BPMN流程转化为有向图,通过分析有向图,获得流程全部可能执行的路径。然后语义分析模块32对全部路径上节点执行语义的分析,取得节点条件约束信息,最终获得路径条件约束链,候选值获取模块33根据该条件约束链,获取组合服务的输入参数的候选值,最后精简组合模块34对输入参数的候选值进行精简组合,获取精简测试用例集合。

本发明实施例的组合服务精简测试用例的自动生成装置,在测试用例生成的过程中,对输入参数进行获取和分析,根据各输入参数的条件约束,自动生成适用于组合服务的精简测试用例,能够提高测试用例数据生成的有效性,实现了测试用例生成数量的优化。

图4为本发明组合服务精简测试用例的自动生成装置又一实施例的结构示意图。如图4所示,在上述装置实施例的基础上,路径搜索模块31可以包括:遍历操作单元41和路径获取单元42。其中,遍历操作单元41用于采用CPS算法,对组合服务的执行流进行遍历操作,获取该执行流的执行树;路径获取单元42用于根据遍历操作单元41获取的执行树,获取该执行流的全部路径。

另外,语义分析模块32可以包括:分析单元43和条件约束链获取单元44。其中,分析单元43用于对全部路径上的节点进行语义分析处理,获取各节点的条件约束信息;条件约束链获取单元44用于采用条件约束链分析算法,对分析单元43获取的各节点的条件约束信息进行综合处理,获取全部路径的条件约束链。

进一步地,候选值获取模块33包括:约束区间计算单元45和候选值获取单元46。其中,约束区间计算单元45用于根据条件约束链,计算输入参数的约束区间;候选值获取单元46用于将输入参数在各约束区间内取值,组成组合服务的输入参数的候选值。

更进一步地,精简组合模块34包括:集合生成单元47、参数值选取单元48和处理单元49。其中,集合生成单元47用于生成一包含所有参数值对的参数值对集合,该参数值对由任意两个输入参数各任取一候选值所组成;参数值选取单元48用于当集合生成单元47生成的参数值对集合不是空集合时,在该参数值对集合中,选取出现频率最高的输入参数及其候选值作为当前用例的第一输入参数与第一参数值,此时,若出现最高频率相同的多个输入参数,则随机选择一个输入参数及其候选值作为当前用例的第一输入参数与第一参数值,并根据与该第一参数值同属一参数值对的其它候选值的出现频率,选取其它输入参数及其候选值作为当前用例的其它输入参数与参数值;处理单元49用于当当前用例选取结束后,删除该参数值对集合中的由已选取参数值所组成的参数值对,并查询该参数值对集合是否为空集合,当该参数值对集合为空集合时,将选取的所有用例组成精简测试用例集合。

本发明实施例的组合服务精简测试用例的自动生成装置,在测试用例生成的过程中,对输入参数进行获取和分析,根据各输入参数的条件约束,自动生成适用于组合服务的精简测试用例,能够提高测试用例数据生成的有效性,使得测试用例能够针对组合服务的结构特点,对循环、分析、选择等节点进行有效的检测,实现了测试用例生成数量的优化。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号