专利名称:基础软件平台应用程序接口集成测试覆盖分析方法
技术领域:
本发明涉及软件测试覆盖分析方法,尤其是指适用于基础软件平台 的,基于接口方法调用序列图的 一种基础软件平台应用程序接口集成测 i式覆盖分纟斤方法。
技术背景基础软件平台应用程序接口集成测试的一个目的为在集成环境中 验证组成平台的基础软件的应用程序接口方法、接口方法间顺序约束, 以及接口与其它基础软件接口方法间的交互约束的正确性。在进行基础 软件平台应用程序接口的集成测试过程中,无论是基础软件厂商、第三 方测试机构、或者应用系统开发商面对的共同问题是如何评估根据典 型应用场景设计的集成测试用例集对基础软件平台应用程序接口和接口 间交互约束的覆盖情况等。将基础软件看作为构件,则由基础软件组合形成的基础软件平台可 看作是一个构件软件。虽然目前针对结构化和面向对象软件的覆盖分析方法比较成熟,提 出了许多针对程序内部结构的测试覆盖准则,并且有成熟的基于源代码 的覆盖分析工具支持基于这些覆盖准则的覆盖分析,如Ratioanal Purify、北航软4牛所开发的SafePro C+十和SafePro Java等。但是针对构件软件的覆盖准则和覆盖分析方法方面研究刚刚起步, 由于商业构件的源代码信息不可得,无法应用基于源代码的覆盖分析方 法,而且面向单个模块或构件,针对程序内部结构的测试覆盖准则不适用 于构件软件,需要针对构件间交互的测试覆盖准则和覆盖分析方法。当 前针对构件和构件软件的覆盖分析方法只有Jerry Gao等提出的构件验 证测试覆盖分析方法,但其只对单个构件的接口方法间顺序约束的测试覆盖进行了分析,未对构件在集成环境中与其它构件的接口方法间的交互约束进行覆盖分析。发明内容本发明针对基础软件平台应用程序接口集成测试覆盖评估的需求, 提出一种基于接口方法调用序列图的覆盖分析方法,方法采用静态接口 方法调用序列图表示所有可能的基础软件应用程序接口、接口间,以及 与其它构件接口间的交互信息,采用动态接口方法调用序列图表示集成 测试用例集执行过程中基础软件应用程序接口 、接口间,以及与其它构 件接口间的交互,然后根据覆盖率评估测试集对基础软件应用程序接口和接口间交互的覆盖。方法包含以下步骤(1) 釆用已有静态分析技术,对基础软件平台集成应用系统进行分 析,获取基础软件平台集成应用系统的结构信息,构建静态接口方法调 用序列图S-IMAD;(2) 在集成测试用例集的执行过程中,通过动态分析技术获得集成 测试用例集运行时基础软件应用程序接口、接口间,以及与其它构件接 口间的交互信息,并构建动态接口方法调用序列图D-IMAD;(3) 基于S-IMAD和D-IMAD,根据覆盖率评估测试集对接口和接口 交互的覆盖情况。本发明的技术效果是,提供了 一种评估集成测试用例集覆盖基础软 件应用程序接口和接口间交互的程度的度量方法。
图1为构件Cl的接口 II的静态接口方法调用序列图。 图2为执行Tl和T2用例后接口 II的D-IMAD动态接口方法调用序列图。 图3为基础软件平台应用程序接口集成测试覆盖分析方法流程图。
具体实施方式
将基础软件看作为构件,则由基础软件组合形成的基础软件平台可看作 是一个构件软件,为叙述简单,本专利将基础软件和构件统称为构件。(1) 图l为一种S-IMAD静态接口方法调用序列图,对于构件C的每一 个应用程序接口/t,有一个静态接口方法调用序列图S-IMAD。 S-IMAD为一 个有向图,S-IMAD表示为一个二元组G =(F, E),其中F是结点的集合,结 点代表构件C的接口[的公有可访问方法以及在应用系统上下文环境中与[ 具有交互关系的构件接口的公有可访问方法,任意结点巧的描述包含如下内 容方法所属构件的名称,方法所属构件接口的名称以及方法的名称。E是 边的集合,边£,.=(巧,^)表示访问巧之后访问^,代表方法调用序列巧—Fy。有两种类型的边,条件边和无条件边。条件边有一个谓词条件,表示对方法 访问序列《—巧的约束。S-IMAD描述了构件接口的方法间调用,构件接口间的方法调用,以及构 件与系统中其它构件间交互产生的构件间接口方法调用。图1为构件Cl的 接口 II的静态接口方法调用序列图,描述了构件C1的接口 II的可能的交 互。从图中可以看出Cl的接口 II与Cl的接口 12和C2的接口 12间具有交 互关系。(2) 图2为D-IMAD动态接口方法调用序列图,对于构件C的每个应用 程序接口/4,可以建立若干动态接口方法调用序列图D-IMAD,每个D-IMAD 表示执行一个给定的集成测试用例集T后,构件C的接口 ^的方法调用序列 集。D-IMAD为一个有向图,D-IMAD表示为一个二元组G =(F, E),其中F 是结点的集合,结点代表构件C的接口 ^的公有可访问方法以及在应用系统 上下文环境中与构件C接口;具有交互关系的构件接口的公有可访问方法, 任意结点巧的描述包含如下内容方法所属构件的名称,方法所属构件接口 的名称以及方法的名称。E是边的集合,边《=(《,《,7;)表示执行测试集T中的测试用例f。后,方法的调用顺序为访问《之后访问巧,代表方法调用序
列《—巧。图2为执行T1和T2用例后接口 II的D-IMAD动态接口方法调用 序列图。
本方明的基于接口方法调用序列图的覆盖分析方法,采用静态接口方法 调用序列图表示所有可能的基础软件应用程序接口、接口间,以及与其它构 件接口间的交互信息,采用动态接口方法调用序列图表示集成测试用例集执 行过程中基础软件应用程序接口、接口间,以及与其它构件接口间的交互, 然后根据覆盖率评估测试集对基础软件应用程序接口和接口间交互的覆盖。
请参见图3所示,该方法的具体实施过程如下 (l)采用静态分析技术,对基础软件平台集成应用系统进行分析,获 取基础软件平台集成应用系统的结构信息,构建静态接口方法调用序列图 S-IMAD。这一活动的目标是获取应用系统的结构信息,并对被评估构件与应 用系统的所有可能方法调用建模。
1) 获取J^出软件平台集成应用系统的结构信息;
应用系统结构信息是指那些组成基础软件平台集成应用系统体系结构 的构件、接口、类、类中方法信息,类间、接口间关系信息,以及类间、接 口间被调用的方法等信息。该任务的输入为基础软件、应用系统开发商所能 提供的所有可用的文档信息,如构件图、类间关系图等,输出为基础软件平 台集成应用系统的结构信息。通常1^出软件厂商和应用系统开发商提供的信 息非常有限,可采用软件逆向工程工具提取结构信息。当前针对采用Java 和0++写的软件的逆向工程工具较成熟,逆向工具可以提取字节码软件的结 构信息。
2) 提取接口方法调用序列,构建静态接口方法调用序列图S-IMAD; 该任务的输入为应用系统结构信息,输出为构件和构件间接口方法调用
序列,以及根据方法调用序列构建的静态接口方法调用序列图S-IMAD。因为具体的接口方法调用序列与用户的使用场景相关,S-IMAD中有些接口方法调 用序列可能在测试场景运行时不会被调用到。
(2 )采用动态分析技术来获得测试集运行时构件接口和接口交互信息, 并构建动态接口方法调用序列图D-IMAD。
这一活动的目标是在测试用例集的执行过程中,提取接口的方法调用 序列。输入为应用系统测试集,输出为接口方法调用序列,以及才艮据接口的 方法调用序列构建的动态接口方法调用序列图D-IMAD。
1) 提取接口方法调用序列;
在测试集的执行过程中,提取构件的接口方法调用序列,忽略那些非接 口方法,如Java API方法、私有方法或那些接口中未定义的/>有方法。该 任务输入为测试集,输出为接口方法调用序列。根据实际情况,通过对构件 的接口进行字节码插桩、产生包装器、利用中间件的功能以及面向方面等技 术,也可以采用一些工具,如调试器、性能调优工具等来收集运行时构件间 交互信息。可创建构件交互记录器,通过交互记录器记录浮皮监控构件与系统 中其它构件间的运行时交互信息,如方法调用序列,方法输入输出值等。
2) 构建动态接口方法调用序列图D-IMAD;
该任务将接口方法调用序列建模为动态接口方法调用序列图D-IMAD。输 入为构件接口的方法调用序列,输出为构件接口的D-IMAD。 (3 )根据覆盖率评估测试用例集的接口交互覆盖情况。
这一活动的目标是计算并分析接口交互覆盖,以评估测试集的接口交互 覆盖能力。输入为构件的S-IMAD和执行测试集后获得的D-IMAD,输出为覆 盖率。根据如下定义的覆盖率完成测试覆盖分析
定义l:覆盖率
假设构件应用程序接口的集成测试用例集为T, T包含N个测试用例。 D-IMAD显示执行测试用例集T后,在S-IMAD中的结点、转移边和路径覆盖
9情况。
定义2:结点覆盖率
IMS表示接口交互所调用的所有方法集。ITMS表示在测试集的执行过程中被测试的接口交互方法集。 一个接口 I,满足结点覆盖,当且仅当在测试集运行后,IMS中所有方法至少执行过一次。结点覆盖率的计算式为
INode-Coverage-i^^i (1)
I孺I
其中IMS为接口 I的S-IMAD的结点的并集,ITMS为执行测试用例集后所获得的接口 I的D-IMAD的结点的并集。定义2:转移边覆盖率
ILinkS表示接口 I的S-IMAD中结点间的所有转移边集合。ITLinkS表示在测试集的执行过程中被执行的转移边集合,其值为接口 I的D-IMAD中结点间的所有转移边集合。 一个接口 I,满足转移边覆盖,当且仅当在测试集运行后,ILinkS中所有转移边被至少执行过一次。转移边覆盖率的计算式为
ILink-C0Verage=i^^^l ( 2 )
I 7L處I
定义3:路径覆盖率
一个接口 i,满足路径覆盖,当且仅当所有有效路径都被至少执行过一次。有效路径为从接口 I的公共可调用方法开始,深度优先遍历接口 I的S-IMAD所获得的各结点形成的所有路径的集合;祐覆盖的有效路径为从接口I的公共可调用方法开始,深度优先遍历接口 I的D-IMAD所获得的各结点形成的所有路径的集合。路径覆盖率的计算式为
IPath-C隨age = 1。W隨圳 (3) 。
权利要求
1.一种基础软件平台应用程序接口集成测试覆盖分析方法,用于评估基础软件平台集成测试用例集对基础软件平台应用程序接口和接口间交互的覆盖情况,其特征在于该方法包含以下步骤(1)采用已有静态分析技术,对基础软件平台集成应用系统进行分析,构建静态接口方法调用序列图S-IMAD;静态接口方法调用序列图S-IMAD表示基础软件应用程序接口可能的基于API的方法调用序列,且方法调用序列细化为基础软件应用程序接口的方法间调用序列,以及在应用系统上下文中,基础软件应用程序接口方法与应用系统中其它构件接口方法间的调用序列两部分;(2)在集成测试用例集的执行过程中,通过动态分析技术获得基础软件应用程序接口方法间,以及基础软件应用程序接口方法与应用系统中其它构件接口方法间的调用序列,并构建动态接口方法调用序列图D-IMAD;动态接口方法调用序列图D-IMAD为S-IMAD的实例,描述了在集成测试用例集执行过程中,基础软件应用程序接口的方法调用序列,以及测试用例与方法调用序列间的关系;(3)基于S-IMAD和D-IMAD,根据结点、转移边和路径覆盖率评估测试集对基础软件应用程序接口和接口间交互的覆盖情况;其中所述的静态接口方法调用序列图S-IMAD表示为对于构件C的每一个应用程序接口Ik,有一个静态接口方法调用序列图S-IMAD;S-IMAD为一个有向图,S-IMAD表示为一个二元组G=(F,E),其中F是结点的集合,结点代表构件C的接口Ik的公有可访问方法以及在应用系统上下文环境中与Ik具有交互关系的构件接口的公有可访问方法,任意结点Fi的描述包含如下内容方法所属构件的名称,方法所属构件接口的名称以及方法的名称;E是边的集合,边Ei=(Fi,Fj)表示访问Fi之后访问Fj,代表方法调用序列Fi→Fj;有两种类型的边,条件边和无条件边;条件边有一个谓词条件,表示对方法访问序列Fi→Fj的约束;所述动态接口方法调用序列图D-IMAD表示为对于构件C的每个应用程序接口Ik,建立若干动态接口方法调用序列图D-IMAD,每个D-IMAD表示执行一个给定的集成测试用例集T后,构件C的接口Ik的方法调用序列集,以及测试用例与方法调用序列间的关系;D-IMAD为一个有向图,D-IMAD表示为一个二元组G=(F,E),其中F是结点的集合,结点代表构件C的接口Ik的公有可访问方法以及在应用系统上下文环境中与构件C接口Ik具有交互关系的构件接口的公有可访问方法,任意结点Fi的描述包含如下内容方法所属构件的名称,方法所属构件接口的名称以及方法的名称;E是边的集合,边<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><msub> <mi>E</mi> <mi>i</mi></msub><mo>=</mo><mrow> <mo>(</mo> <msub><mi>F</mi><mi>i</mi> </msub> <mo>,</mo> <msub><mi>F</mi><mi>j</mi> </msub> <mo>,</mo> <msub><mi>T</mi><msub> <mi>t</mi> <mi>n</mi></msub> </msub> <mo>)</mo></mrow> </mrow>]]></math> id="icf0001" file="A2009101699790003C1.tif" wi="27" he="4" top= "133" left = "126" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>表示执行测试集T中的测试用例tn后,方法的调用顺序为访问Fi之后访问Fj,代表方法调用序列Fi→Fj。
2.如权利要求1所述的基础软件平台应用程序接口集成测试覆盖分 析方法,其特征在于,步骤(3)中根据结点、转移边和路径覆盖率的评 估所采用的结点覆盖率、转移边覆盖率和路径覆盖率的计算方法为 (1)结点覆盖率IMS表示接口交互所调用的所有方法集,ITMS表示在测试集的执行 过程中被测试的接口交互方法集; 一个接口 I,满足结点覆盖,当且仅当 在测试集运行后,IMS中所有方法至少执行过一次;结点覆盖率的计算式 为:INode-C。verage」皿^愿l;I爾I其中IMS为接口 I的S-IMAD的结点的并集,ITMS为执行测试用例集 后所获得的接口 I的D-IMAD的结点的并集;(2) 转移边覆盖率ILinkS表示接口 I的S-IMAD中结点间的所有转移边集合;ITLinkS表示在测试集的执行过程中被执行的转移边集合,其值为接口 I的D-IMAD中结点间的所有转移边集合; 一个接口 I,满足转移边覆盖,当且仅当在测试集运行后,ILinkS中所有转移边被至少执行过一次;转移边覆盖率的计算式为<formula>formula see original document page 4</formula>(3) 路径覆盖率一个接口 I,满足路径覆盖,当且仅当所有有效路径都被至少执行过 一次;有效路径为从接口 I的公共可调用方法开始,深度优先遍历接口 I 的S-IMAD所获得的各结点形成的所有路径的集合;被覆盖的有效路径为 从接口 I的公共可调用方法开始,深度优先遍历接口 I的D-IMAD所获得 的各结点形成的所有路径的集合;路径覆盖率的计算式为IPath-Coverage-i^^^^i 。
全文摘要
本发明提供了一种基础软件平台应用程序接口集成测试覆盖分析方法,用来评估基础软件平台集成测试用例集对基础软件应用程序接口、接口间交互的覆盖程度。方法结合采用静态分析和动态分析技术,首先采用静态分析技术获得基础软件平台集成应用系统的结构信息,并表示为静态接口方法调用序列图S-IMAD,然后在集成测试用例集执行过程中,通过动态分析技术获得基础软件平台应用程序接口、接口间,以及与其它构件接口间的交互信息,并表示为动态接口方法调用序列图D-IMAD,最后基于S-IMAD和D-IMAD,根据覆盖率分析评估集成测试集对基础软件平台应用程序接口和接口交互的覆盖情况。
文档编号G06F11/36GK101645037SQ200910169979
公开日2010年2月10日 申请日期2009年9月11日 优先权日2009年9月11日
发明者兰雨晴, 静 高 申请人:兰雨晴