专利名称:基于测试执行机能力度的测试任务自动分配方法
技术领域:
本发明涉及软件测试任务自动分配方法,尤其是指适用于分布式自 动化测试框架的,基于测试执行机能力度的测试任务自动分配的方法。
背景技术:
通过对国内外研究人员在分布式系统测试研究领域内提出的各种测 试框架的分析可知,自动化测试框架由两部分功能组成, 一部分为测试 脚本的生成,另一部分为测试脚本执行和执行管理。测试脚本执行和执 行管理部分完成测试任务的定义、任务分配、部署、调度,自动化执行、 测试结果收集和分析等测试执行管理功能。现有研究主要集中于测试脚 本的生成和重用、测试的自动执行,测试的协同工作三个方向。当前研 究集中于脚本的自动化执行和测试结果的自动化收集和分析,而对于分 布式测试任务的自动化分配、部署、调度方向还未见研究,主要采用人
工分配、部署和调度的方式。当前的测试执行框架,包括著名的Rational Test Manager等都采用人工分配测试任务的方式。测试任务人工分配方 式增加了测试人员的负担,分配策略只能采用静态任务分配策略,而且 和测试人员的经验直接相关,有可能不是最佳的分配方案,导致测试机 的资源浪费,增加测试执行时间。测试任务人工分配方式一方面存在效 率的问题,另一方面人工调度可能导致任务分配、调度对资源的利用不 合理。若能实现测试任务自动化分配将进一步提高自动化测试框架的自 动化程度。
发明内容
为了解决上述问题,进一步提高分布式自动化测试框架的自动化程 度,提高测试任务分配的效率,本发明的主要目的在于提出一种基于测
4试执行机能力度的测试任务自动分配方法。
在本发明中,测试主控机通过分析测试任务对测试执行机能力的要 求,按照测试执行能力度大小自动选择适合的测试执行机,完成测试任
务的自动分配。具体步骤如下
(1)通过GUI控制台定义测试任务时,分解复杂测试任务T,表示 为and-or-tree(T)结构,并描述相应的ECA规则集合,写入测试执行场 景文件。
(2 )测试主控4几解析测试执4亍场景文件,对and-or-tree(T)中的每 个原子测试任务,迭代执行如下步骤获取当前各测试执行机所拥有的 资源情况,计算得到各测试执行机对该原子测试任务的测试执行能力度, 然后按照基于测试执行机能力度的测试任务分配标准将该测试任务分配 给一个测试执行机,并将任务分配情况写入测试执行场景文件中。
测试任务的分配为仅对and-or-tree(T)中所有原子测试任务进行分
配,将原子测试任务分配给各测试执行机,而树上其它非原子测试任务 的执行与协调,例如同步"与"任务,选择"或"任务等,均由测试主
控机根据测试执行场景文件中ECA规则的描述来完成。
本发明的技术效果是,为分布式自动化测试框架提供了 一种自动化 测试任务分配方法,进一步提高了自动化测试框架的自动化程度。
相关定义
定义1测试任务
为实现特定测试目标所要执行的测试用例集。如完成操作系统和数 据库之间的兼容性测试所需要执行的测试用例集。测试任务分为原子测 试任务和复杂任务。
定义2原子测试任务
原子测试任务7^皮定义为在执行测试任务分配时的一个不可再分的测试用例的最小集合,它是参与分配的最小单位。任务7]可以是一个与其 它测试用例不相关的单独测试用例,也可以是一组相关联的测试用例。 定义3复杂测试任务
是由 一 系列逻辑相关的原子测试任务所构成的有序集合。 定义4复杂任务的"与-或树"(and-or-tree)描述 将复杂测试任务分解为原子测试任务,复杂测试任务分解为原子测 试任务描述为
ComplicatedTask=<DecomID, AtomTaskSet, Relation, 0THERS> 其中,DecomID表示复杂测试任务的标识,用以区分各个不同的,皮分 解复杂测试任务;AtomTaskSet 表示原子测试任务集; Relation={And, Or, Enable, Facilitae, ...},表示原子测试任务的各种相 互依赖关系;OTHERS描述了复杂任务的其它属性特征,包括任务的难度、 重要性等属性。
原子测试任务及任务间各种相互依赖关系共同构成了被分解复杂测 试任务的结构特征。通常釆用领域无关的任务表达框架TAEMS来描述复 杂任务分解,TAEMS采用"与-或树"表示任务的分解过程和分解任务。 它将方法作为最小的任务执行单位,用概率的方式量化了方法对应的质 量、费用、时间等属性值;同时它利用累积函数表达上下层任务间的连 接,揭示这些任务间的"与-或,,关系。本发明的方法是将原子测试任务 与TAEMS中的方法相对应,并定义分解的复杂测试任务T对应的"与-或 树,,(and-or-tree )描述如下
设任一测试任务T的结构都可以描述为一棵"与-或树",记作 and-or-tree (T),树的根节点表示任务T,树的叶子节点表示可以被单个 测试执行机独立完成的原子测试任务,并且约定如果树的某个节点有 儿子任务,那么其儿子任务之间的执行逻辑要么全"与,,,要么全"或",记作0^/-尸( 1"2,...,")或0"-F仏,,2,…,0,其中F是节点标识,f,.是F的儿子 节点。
4夺and—or—tree(T)等^f介;l也用ECA(event—condition—action)MJ寸集 合表示,ECA规则通过条件的组合,例如条件的合取(a)、析取(v),描 述组合条件关系,同时也描述了执行活动的执行依赖关系。
定义5测试执行机的执行能力和执行能力度
测试执行机的执行能力度描述了测试执行机的系统资源状况,表示 测试执行机完成任务的能力大小。记测试执行机a具有执行任务t的执 行能力为屈zV ,测试执行机a对于任务t的执行能力度为《,当ct: 时, 测试执行机a具有执行任务t的能力。
测试执行机a对于任务t的执行能力度《=cv7 + w2;i,其中
(1)
"i ( 2 )
仏是完成任务t所需的最长时间,;/。是测试执行机a完成任务t所需 的时间,《是任务t对第k类资源的需求,《是测试执行机a当前所拥有 的第k类资源(当前所拥有的第k类资源为测试执行机a拥有的该类 资源的总数减去被已接受任务占用的资源数,例如测试执行机a当前所 拥有的自由内存为拥有的总内存减去已用的内存),^是相应资源的权
重,^^=1; w,和化按时间和资源在任务t中的重要性确定比例,
q + G)2 = 1 。
若屉Z7。J a JMJ且o"" 2《2 ,则称测试执行机a,的执行能力度大于测试 执行机。2的执行能力度。
定义6测试任务分配标准伊本方法采用基于测试执行能力度的任务分配标准。
给定原子测试任务"AT ( AT为原子测试任务集),任意两个测试执 行机al和a2,基于测试执行能力度的任务分配标准伊定义为
优先于
伊v4Mfllf a XMa2, a《2 cr:2 => a〃oc(f,al)-alloc(t,a2)。
图1为自动化测试执行框架的总体架构设计。 图2为任务(T)的"与-或树"表示。
图3为基于测试机能力度测试任务自动分配方法的流程图。
具体实施例方式
在 一 个分布式自动化测试执行系统中,每台参与测试任务的机器称 为测试机,测试机分为测试主控机和测试执行机。测试主控机是运行GUI 测试控制台、测试主控部件和测试结果收集与集成部件的测试^li,测试 执行4几为运行测试执行部件的测试才几。系统中有且只有一个主控才几,可 以有1到N台测试才几。构建测试执行系统时,在一台测试机上部署GUI 测试控制台、测试主控部件和测试结果收集部件形成测试主控机,负责 测试任务的定义、测试任务的分配、测试结果收集与集成等主要工作。 在1到N台测试机上部署测试执行部件,作为测试执行机,负责测试任 务的具体执行,也可在测试主控机上部署测试执行部件,这时,该机器 具有测试主控和测试执行双重功能。
系统配置文件中定义了每台参与的测试机的环境参数和系统标识 符,测试执行模式(编译、执行、清除)以及执行模式所用到的应用程 序。测试执行场景文件记载了所有的测试任务,描述了测试任务的部署 和执行流程,是测试调度和执行控制的依据。执行结果日志文件记录了 测试执行过程中产生的测试用例输出信息和测试执行日志信息。通过图形用户接口的测试控制台定义测试任务、分布式测试系统中 各测试机的配置信息,并将定义的信息写入测试执行配置和测试执行场 景文件中。在测试执行场景文件中,复杂测试任务被表示为"与-或树"
和ECA规则集合。
将复杂测试任务被表示为"与-或树"和ECA规则集合的方法 具体是将复杂测试任务分解为原子测试任务,复杂测试任务分解为
原子测试任务
ComplicatedTask=<DecomID, AtomTaskSet, Relation, 0THERS> 其中,DecomID表示复杂测试任务的标识,用以区分各个不同的净皮分 解复杂测试任务;AtomTaskSet 表示原子测试任务集; Relation-{And, 0r, Enable, Facilitae, ...},表示原子测试l壬务的各种相 互依赖关系;OTHERS描述了复杂任务的其它属性特征,包括任务的难度、 重要性等属性。
原子测试任务及任务间各种相互依赖关系共同构成了被分解复杂测 试任务的结构特征。通常采用领域无关的任务表达框架TAEMS来描述复 杂任务分解,TAEMS采用"与-或树"表示任务的分解过程和分解任务。 它将方法作为最小的任务执行单位,用概率的方式量化了方法对应的质 量、费用、时间等属性值;同时它利用累积函数表达上下层任务间的连 接,揭示这些任务间的"与-或"关系。本发明的方法是将原子测试任务 与TAEMS中的方法相对应,并定义分解的复杂测试任务T对应的"与-或 树,,(and-or-tree )描述如下
设任一测试任务T的结构都可以描述为一棵"与-或树,,,记作 and-or-tree (T),树的根节点表示任务T,树的叶子节点表示可以被单个 测试执行机独立完成的原子测试任务,并且约定如果树的某个节点有 儿子任务,那么其儿子任务之间的执行逻辑要么全"与,,,要么全"或,,,
9记作- F(q ,G,…,")或or - F" ,f2 ,…人),其中F是节点标识,^是F的儿子 节点,例如图2中的and-T(l, 2) , and-l (3, 4, 5) , or-2(6,7)等。
^1夸and—or—tree(T)等^f介;也用ECA (event—condi t ion—act ion)步见贝'J集 合表示,ECA规则通过条件的组合,例如条件的合取(a)、析取(v),描 述组合条件关系,同时也描述了执行活动的执行依赖关系。图2所示 and—or—tree(T)的部分ECA关见则表示为On done (1) AND done (2) if imion(l, 2)=TRUE then done (T) ; On done (8) OR done (9) if choice (8, 9)-TRUE then done (6)。其中,done(完成),union (同步与) 和choice (选择或)都是一阶谓词。
如图3所示,为基于测试机能力度测试任务自动分配方法的流程图。 当测试工作启动时,测试主控机读取并解析测试人员定义的测试执行配 置和测试执行场景文件,测试主控机解析当前测试执行配置文件定义的 各测试执行机的信息,并通过通信系统获取测试执行机的当前所拥有的 资源情况,对测试执行场景中的每个原子测试任务,计算各测试执行机 的执行能力度,按照基于执行能力度的任务分配标准将测试任务分配相 应的各测试执行机上进行测试,并将任务分配和部署信息写入测试执行 场景文件。
其中,关于计算各测试执行机的执行能力度的方法 测试执行机的执行能力度描述了测试执行机的系统资源状况,表示 测试执行机完成任务的能力大小。记测试执行机a具有执行任务t的执 行能力为乂&V ,测试执行机a对于任务t的执行能力度为《,当o": si时, 测试执行机a具有执行任务t的能力。
测试执行机a对于任务t的执行能力度《=ov7 + fy2;i,其中
〃 =77, a ( 1 )<formula>formula see original document page 11</formula>
仏是完成任务t所需的最长时间,;/。是测试执行机a完成任务t所需 的时间,《是任务t对第k类资源的需求,《是测试执行机a当前所拥有 的第k类资源(当前所拥有的第k类资源为测试执行机a拥有的该类 资源的总数减去被已接受任务占用的资源数,例如测试执行机a当前所 拥有的自由内存为拥有的总内存减去已用的内存),^是相应资源的权
重,|^t=l; w,和^按时间和资源在任务t中的重要性确定比例,
+ 2 = 1 。
若爿M。/ a ^6//。2 且2《2,则称测试执行机a,的执行能力度大于测试 执行机"2的执行能力度。
其中,关于基于执行能力度的任务分配标准 本方法采用基于测试执行能力度的任务分配标准。 给定原子测试任务"AT ( AT为原子测试任务集),任意两个测试执
行机al和a2,基于测试执行能力度的任务分配标准伊定义为<formula>formula see original document page 11</formula>在测试执行过程中,主控端监控各测试执行机的执行。各测试执行 机接收到测试任务后按照一定顺序进行测试,测试过程中,测试执行机 将测试执行信息和测试结果反馈给主控机。如果需要与其它的测试机进 行同步,则需要发送同步请求给主控机,由主控机来控制测试执行机之 间的同步,并完成测试执行场景中所定义的各个非原子测试任务的执行。
测试控制台是针对测试执行任务进行定义、管理和报告的图形用户 接口。通过控制台完成测试执行任务的创建和管理,进行测试执行配置, 并把测试任务和测试配置信息发送给测试执行服务器,完成测试执行服务器返回的测试结果日志分析工作,提供测试执行报告信息,并对整个 测试的流程和通信进行统一管理。
测试执行服务器接收控制台传送过来的测试任务、测试执行配置和 测试执行场景信息,依据测试任务和测试执行配置信息,测试执行服务 器进行测试任务的分配、测试脚本的部署、测试任务的调度和执行,并 收集测试结果信息,测试结束后把最终测试结果日志回送到控制台。
测试控制台与测试执行服务器之间,以及测试执行服务器中测试主 控与测试执行器间信息交互通过通信子系统完成。通信子系统是分布式 测试执行的基础,为测试脚本部署、测试调度、测试结果收集等各项活 动提供了支持。
权利要求
1.一种基于测试执行机能力度的测试任务自动分配方法,用于分布式自动化测试框架,其特征在于包含以下步骤(1)首先,通过测试控制台定义测试任务,对复杂测试任务(T)进行分解,将该复杂测试任务(T)表示为and-or-tree(T)结构,并描述为相应的ECA规则集合,写入测试执行场景文件中;(2)测试主控机解析该测试执行场景文件,对and-or-tree(T)结构中的每个原子测试任务,迭代执行如下步骤获取当前各测试执行机所拥有的资源情况,计算得到各测试执行机对该原子测试任务的测试执行能力度,然后按照基于测试执行机能力度的测试任务分配标准将该测试任务分配给一个测试执行机,并将任务分配情况写入测试执行场景文件中;其中,and-or-tree(T)结构为树的根节点表示复杂测试任务(T),树的叶子节点表示可以被单个测试执行机独立完成的原子测试任务,并且,如果树的某个节点有儿子任务,那么其儿子任务之间的执行逻辑为全“与”或全“或”关系;其中,测试执行机(a)对于任务(t)的执行能力度为<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><msubsup> <mi>σ</mi> <mi>a</mi> <mi>t</mi></msubsup><mo>=</mo><msub> <mi>ω</mi> <mn>1</mn></msub><mi>η</mi><mo>+</mo><msub> <mi>ω</mi> <mn>2</mn></msub><mi>λ</mi><mo>,</mo> </mrow>]]></math> id="icf0001" file="A2009101699770002C1.tif" wi="29" he="5" top= "175" left = "154" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>测试执行机的执行能力度描述了测试执行机的系统资源状况,表示测试执行机完成任务的能力大小;其中η=ηt/ηa<maths id="math0002" num="0002" ><math><![CDATA[ <mrow><mi>λ</mi><mo>=</mo><munderover> <mi>Σ</mi> <mrow><mi>k</mi><mo>=</mo><mn>1</mn> </mrow> <mrow><mi>q</mi><mo>-</mo><mn>1</mn> </mrow></munderover><msub> <mi>μ</mi> <mi>k</mi></msub><mrow> <mo>(</mo> <msubsup><mi>λ</mi><mi>a</mi><mi>k</mi> </msubsup> <mo>/</mo> <msubsup><mi>λ</mi><mi>t</mi><mi>k</mi> </msubsup> <mo>)</mo></mrow> </mrow>]]></math></maths>ηt是完成任务t所需的最长时间,ηa是测试执行机a完成任务t所需的时间,λtk是任务t对第k类资源的需求,λak是测试执行机a当前所拥有的第k类资源,即当前所拥有的第k类资源为测试执行机a拥有的该类资源的总数减去被已接受任务占用的资源数,μk是相应资源的权重,<maths id="math0003" num="0003" ><math><![CDATA[ <mrow><munderover> <mi>Σ</mi> <mrow><mi>k</mi><mo>=</mo><mn>1</mn> </mrow> <mrow><mi>q</mi><mo>-</mo><mn>1</mn> </mrow></munderover><msub> <mi>μ</mi> <mi>k</mi></msub><mo>=</mo><mn>1</mn><mo>;</mo> </mrow>]]></math> id="icf0003" file="A2009101699770003C1.tif" wi="17" he="10" top= "30" left = "22" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>ω1和ω2按时间和资源在任务t中的重要性确定比例,ω1+ω2=1;其中,测试任务分配标准为测试执行机a具有执行任务t的执行能力为Abilat,测试执行机a对于任务t的执行能力度为σat,当<maths id="math0004" num="0004" ><math><![CDATA[ <mrow><msubsup> <mi>σ</mi> <mi>a</mi> <mi>t</mi></msubsup><mo>≥</mo><mn>1</mn> </mrow>]]></math> id="icf0004" file="A2009101699770003C2.tif" wi="10" he="4" top= "56" left = "164" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>时,测试执行机a具有执行任务t的能力;给定原子测试任务t∈AT,AT为原子测试任务集,任意两个测试执行机a1和a2,基于测试执行能力度的任务分配标准 id="icf0005" file="A2009101699770003C3.tif" wi="2" he="3" top= "85" left = "48" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>为
2.依权利要求1所述的基于测试执行机能力度的测试任务自动分配 方法,其特征在于,步骤(2 )所述的对测试任务的分配为仅对 and-or-tree(T)中所有原子测试任务进行分配,将原子测试任务分配给 各测试执行机,而树上其它非原子测试任务的执行与协调均由测试主控 机根据测试执行场景文件中EC A规则的描述来完成。
全文摘要
本发明公开了一种基于测试执行机能力度的测试任务自动分配方法,其面向分布式自动化测试框架,用于提高分布式自动化测试框架的自动化程度。该方法包含以下步骤(1)首先,通过测试控制台定义测试任务,分解复杂测试任务T,表示为and-or-tree(T)结构,并描述为相应的ECA规则,写入测试执行场景文件中。(2)测试主控机解析测试执行场景文件,对and-or-tree(T)中的每个原子测试任务,迭代执行如下步骤获取当前各测试执行机所拥有的资源情况,计算得到各测试执行机对该原子测试任务的测试执行能力度,然后按照基于测试执行机能力度的测试任务分配标准将该测试任务分配给一个测试执行机,并将任务分配情况写入测试执行场景文件中。
文档编号G06F11/36GK101645036SQ20091016997
公开日2010年2月10日 申请日期2009年9月11日 优先权日2009年9月11日
发明者兰雨晴, 静 高 申请人:兰雨晴