基于复杂系统的测试建模及测试用例的自动生成方法与流程

文档序号:19155166发布日期:2019-11-16 00:39阅读:324来源:国知局
基于复杂系统的测试建模及测试用例的自动生成方法与流程

本发明涉及一种基于复杂系统的测试建模及测试用例的自动生成方法,属于软件测试自动化技术领域。



背景技术:

依照uml活动图,活动是一段对行动的行为描述。该行动是:(1)软件函数名称,外加此函数的输入输出和相关环境因素;(2)函数内部一行程序,类似伪代码;(3)模块接口的方法,以及此方法的输入输出和相关环境因素。活动图里,节点表述活动,节点之间的带箭头的连线表述活动序列有向链接。并发、判断、和时间等待等均由特殊活动节点表示。下面例子来自unifiedmodeling(omg),version2.5.1,如图1所示。菱形代表判断,竖线代表并发起点,内含文字的形状是一般活动。

但是现有技术存在以下问题:含复杂并发、时序、循环的系统的行为的测试建模是领域难题。通常做法是基于统一建模语言(uml)的状态图或者活动图(activitydiagram)。然而,当被测模块的活动图过于复杂时,模型创立复杂,测试场景计算困难,如图2所示。

本领域技术人员希望找到一种测试用例的生成方法满足以下内容:(1)测试建模有效简单直观;(2)能够处理复杂模块(并发多层并发嵌套和交叉等);(3)建模导出测试用例正确;(4)复杂多进程多线程等测试用例表述直观易懂;(5)导出测试用例覆盖全面;(6)方便实现测试自动化脚本,对接各种测试平台;(7)时序表达方便;(8)测试数据特征定义;(9)如果数据产生建立算法,利用算法产生测试数据。



技术实现要素:

针对现有技术存在的上述缺陷,本发明提出了一种基于复杂系统的测试建模及测试用例的自动生成方法。

本发明的第一个目的是提供一种基于复杂系统的测试建模自动生成方法,包括如下步骤:

s1:构建活动图节点:活动由{条件-行动-结果}表达,条件和结果由行动的输入输出和环境影响因素描述,输入输出和环境影响利用现有specmap的对象和对象的属性模板表达,包括以下小步:

s11:行动是一段行动名称自然语言描述:行动描述里面不包含条件,否则图论算法不能像路径算法帮助百度地图生成路径一样,帮助生成高覆盖的测试用例集合;

s12:条件由自然语言表达、行动没有条件限制的空表达,或者用属性组合的场景和测试数据表达;同样,为了使得测试用例生成算法有效,每个条件内应当不包含其它子分支;

s13:结果由自然语言表达、行动没有条件限制的空表达,或者用属性组合的场景和测试数据表达;同样,为了使得测试用例生成算法有效,每个结果内应当包含预期状态,没有行动,内部不包含条件分支;

s2:构建specmap描述方式:依照面向对象描述方法,每一个行动均属于某个对象,如果行动没有好的归属方法,建立工具对象,将行动放到此工具对象里面,包括以下种类:

情况一:对于一般对象、属性、测试数据和行动依照现有specmap方式描述;

情况二:对于时间轴对象具有特殊对象种类标志,在产生测试用例算法里,时间轴里的时间节点将会被用来对car排序;

情况三:对于一般行动依照现有specmap描述方式;

情况四:对于循环对象,起始car和结束car配成一对,归属同一对象,便于算法找到循环起点和终点;循环的开始,结束,以及继续的条件,在循环行动的条件里面表达;

情况五:对于并发对象,起始car和结束car配成一对,归属同一对象,便于算法找到并发起点和终点;并发开始和结束用两个行动描述或者利用同一行动的两个car表示,包含并发的对象具有特殊对象种类标志;fork-join各分支行动必须全部完成和fork-merge至少一个分支行动完成由并发对象种类标志确定;并发内部行动的时序由参与条件结果的时间轴节点描述控制;

s3:生成的car图例子:分为如下种类:并发、循环、并发加时间轴、并发嵌套并发、并发嵌套循环;

s4:生成测试用例算法,包括以下小步:

s41:遵守car和下一个car的关系是业务和技术实现逻辑关系;

s42:当没有时间轴时,进程线程依照s41的逻辑关系;

s43:当行动条件里面有同一时间轴上节点时,在遵守逻辑关系基础上,还要遵守时间顺序;

s44:当遇到并发起点car,判断是join还是merge,在同一对象下寻找并发终点car,利用泳道表述方式,将测试用例呈现出来,每一个进程或线程占领一个泳道;

s45:当遇到循环起点时,在同一对象下找到循环终点,通过标签差异表现出循环步骤;

s5:定义和产生测试数据,包括以下几种情况:

情况一:如果测试数据在输入输出和环境因素的描述对象的层面定义,则按照现有specmap测试数据定义方式;

情况二:如果测试数据需要参照测试用例全部测试步骤数据来定义,测试用例涉及的所有测试步骤里的car所涉及的条件结果里的输入输出和环境对象的状态定义,则完整定义测试数据特性;

情况三:测试数据如果形成算法表达,则通过实现算法自动生成。

优选地,所述步骤s1中,活动种类分为:一般行动、时间点和等待x时间区间点、循环起点和循环终点、并发起点和并发终点、判断点。

优选地,所述步骤s24中,循环开始和结束用两个行动描述,也利用同一行动的两个car表示,包含循环的对象具有特殊对象种类标志。

优选地,所述步骤s5之后,还包括:

s6:对specmap界面改造,提供工作界面:具备直接添加行动功能,选择行动所属对象或者自动添加行动对象;直接连接下一个car功能;增加改和删的功能;car图和实体区域同步。

本发明的第二个目的是提供一种基于复杂系统的测试用例的自动生成方法,所述如下步骤:

s7:构建脚本自动化:使用内部实现逻辑来描述被测模块行为、或者通过被测模块接口方法描述被测模块行为,specmap提供的自动化面向对象脚本原理均适应脚本自动化;

s8:对接测模块接口:所有面向对象自动化脚本都要用被测模块接口提供的方法实现,否则由于从被测模块接口无法够到内部方法,自动化脚本将无法执行;

s9:调用接口语言:需要使用被测对象的接口语言来实现脚本,除非数据驱动,不涉及直接接口方法调用。

本发明的有益效果是:

本发明的第一个目的的效果是:(1)测试建模有效简单直观;(2)能够处理包含时序,并发和循环的复杂模块(并发多层并发嵌套和交叉等);(3)建模导出测试用例正确;(4)复杂多进程多线程等测试用例表述直观易懂;(5)导出测试用例覆盖全面;

本发明的第二个目的的效果是:(1)方便实现测试自动化脚本,对接各种测试平台;(2)时序表达方便;(3)测试数据特征定义;(4)如果数据产生可以建立算法,利用算法产生测试数据。

附图说明

图1是现有技术的uml状态图。

图2是现有技术的uml活动图。

图3是本发明的一般对象的specmap图。

图4是本发明的时间轴对象的specmap图。

图5是本发明的一般行动的specmap图。

图6是本发明的循环对象的specmap图。

图7是本发明的循环对象的表达图。

图8是本发明的并发对象的specmap图。

图9是本发明的并发对象的表达图。

图10是本发明的并发对象的car图。

图11是本发明的循环对象的car图。

图12是本发明的并发加时间轴的car图。

图13是本发明的并发嵌套并发的car图。

图14是本发明的并发嵌套循环的car图。

图15是本发明包含并发测试用例的示意图。

图16是本发明描述对象的层面定义图。

图17是本发明的增强car图。

具体实施方式

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

如图3至图17所示,本发明所述的基于复杂系统的测试建模及测试用例的自动生成方法,统一建模语言活动图描述方式直观,迅速看到全局观;面向对象测试建模延续采用类似uml活动图工作界面;利用面向对象表述方式描述活动部节点;关键点在于让活动图的各节点变成百度地图里的地点一样:所有节点一致化(都是地点),外加标签控制路径,达到路径覆盖算法实现简单化。

本发明所述的基于复杂系统的测试建模自动生成方法,包括如下步骤:

s1:构建活动图节点:活动由{条件-行动-结果}表达,条件和结果由行动的输入输出和环境影响因素描述,输入输出和环境影响利用现有specmap的对象和对象的属性模板表达,包括以下小步:

s11:行动是一段行动名称自然语言描述:行动描述里面不包含条件,否则图论算法不能像路径算法帮助百度地图生成路径一样,帮助生成高覆盖的测试用例集合;

s12:条件由自然语言表达、行动没有条件限制的空表达,或者用属性组合的场景和测试数据表达;同样,为了使得测试用例生成算法有效,每个条件内应当不包含其它子分支;

s13:结果由自然语言表达、行动没有条件限制的空表达,或者用属性组合的场景和测试数据表达;同样,为了使得测试用例生成算法有效,每个结果内应当包含预期状态,没有行动,内部不包含条件分支;

s2:构建specmap描述方式:依照面向对象描述方法,每一个行动均属于某个对象,如果行动没有好的归属方法,建立工具对象,将行动放到此工具对象里面,包括以下种类:

情况一:对于一般对象、属性、测试数据和行动依照现有specmap方式描述,如图3所示;

情况二:对于时间轴对象具有特殊对象种类标志,在产生测试用例算法里,时间轴里的时间节点将会被用来对car排序,如图4所示;

情况三:对于一般行动依照现有specmap描述方式,如图5所示;

情况四:对于循环对象,起始car和结束car配成一对,归属同一对象,便于算法找到循环起点和终点,如图6所示;循环的开始,结束,以及继续的条件,在循环行动的条件里面表达,如图7所示;

情况五:对于并发对象,起始car和结束car配成一对,归属同一对象,便于算法找到并发起点和终点,如图8所示;并发开始和结束用两个行动描述或者利用同一行动的两个car表示,包含并发的对象具有特殊对象种类标志;fork-join各分支行动必须全部完成和fork-merge至少一个分支行动完成由并发对象种类标志确定;并发内部行动的时序由参与条件结果的时间轴节点描述控制,如图9所示;

s3:生成的car图例子:分为如下种类:并发、循环、并发加时间轴、并发嵌套并发、并发嵌套循环,如图10-14所示;

s4:生成测试用例算法,如图15所示,包括以下小步:

s41:遵守car和下一个car的关系是业务和技术实现逻辑关系;

s42:当没有时间轴时,进程线程依照s41的逻辑关系;

s43:当行动条件里面有同一时间轴上节点时,在遵守逻辑关系基础上,还要遵守时间顺序;

s44:当遇到并发起点car,判断是join还是merge,在同一对象下寻找并发终点car,利用泳道表述方式,将测试用例呈现出来,每一个进程或线程占领一个泳道;

s45:当遇到循环起点时,在同一对象下找到循环终点,通过标签差异表现出循环步骤;

s5:定义和产生测试数据,如图16所示,包括以下几种情况:

情况一:如果测试数据在输入输出和环境因素的描述对象的层面定义,则按照现有specmap测试数据定义方式;

情况二:如果测试数据需要参照测试用例全部测试步骤数据来定义,测试用例涉及的所有测试步骤里的car所涉及的条件结果里的输入输出和环境对象的状态定义,则完整定义测试数据特性;

情况三:测试数据如果形成算法表达,则通过实现算法自动生成。

所述步骤s1中,活动种类分为:一般行动、时间点和等待x时间区间点、循环起点和循环终点、并发起点和并发终点、判断点。

所述步骤s24中,循环开始和结束用两个行动描述,也利用同一行动的两个car表示,包含循环的对象具有特殊对象种类标志。

所述步骤s5之后,还包括:

s6:对specmap界面改造,提供工作界面:具备直接添加行动功能,选择行动所属对象或者自动添加行动对象;直接连接下一个car功能;增加改和删的功能;car图和实体区域同步,如图17所示。

本发明所述的基于复杂系统的测试用例的自动生成方法,所述如下步骤:

s7:构建脚本自动化:使用内部实现逻辑来描述被测模块行为、或者通过被测模块接口方法描述被测模块行为,specmap提供的自动化面向对象脚本原理均适应脚本自动化;

s8:对接测模块接口:所有面向对象自动化脚本都要用被测模块接口提供的方法实现,否则由于从被测模块接口无法够到内部方法,自动化脚本将无法执行;

s9:调用接口语言:需要使用被测对象的接口语言来实现脚本,除非数据驱动,不涉及直接接口方法调用。

本发明的有益效果是:

本发明的第一个目的的效果是:(1)测试建模有效简单直观;(2)能够处理包含时序,并发和循环的复杂模块(并发多层并发嵌套和交叉等);(3)建模导出测试用例正确;(4)复杂多进程多线程等测试用例表述直观易懂;(5)导出测试用例覆盖全面;

本发明的第二个目的的效果是:(1)方便实现测试自动化脚本,对接各种测试平台;(2)时序表达方便;(3)测试数据特征定义;(4)如果数据产生可以建立算法,利用算法产生测试数据。

本发明可广泛运用于软件测试自动化场合。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,理解在不脱离本发明的原理和精神的情况下对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

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